- 2,223
- 1,854
- CPU
- Intel I9-10900KF 3.75GHz 10x 125W
- Dissipatore
- Gigabyte Aorus Waterforce X360 ARGB
- Scheda Madre
- Asus 1200 TUF Z590-Plus Gaming ATX DDR4
- HDD
- 1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
- RAM
- DDR4 32GB 3600MHz CL18 ARGB
- GPU
- Nvidia RTX 3080 10GB DDR6
- Audio
- Integrata 7.1 HD audio
- Monitor
- LG 34GN850
- PSU
- Gigabyte P850PM
- Case
- Phanteks Enthoo Evolv X ARGB
- Periferiche
- MSI Vigor GK30, mouse Logitech
- Net
- FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
- OS
- Windows 10 64bit / OpenSUSE Tumbleweed
- seguendo invece l'idea che ho proposto nei precedenti post:
C++:#include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main() { srand(time(0)); const int MIN = 38; const int MAX = 55; const int DIM_1 = 12; const int DIM_2 = MAX - MIN + 1; int v[DIM_1]; int u[DIM_2] = {0}; for(int i = 0; i < DIM_1; ++i) { v[i] = rand() % DIM_2 + MIN; u[v[i] - MIN] = 1; cout << v[i] << " "; } cout << endl; for(int i = MIN; i <= MAX; ++i) { if(u[i - MIN] == 0) { cout << i << " "; } } }
A sto punto anche direttamente così, senza il vettore v, che non mi sembra sia tra i requisiti:
C++:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand(time(0));
const int MIN = 38;
const int MAX = 55;
const int DIM_1 = 12;
const int DIM_2 = MAX - MIN + 1;
int u[DIM_2] = {0};
for(int i = 0; i < DIM_1; ++i)
{
int v = rand() % DIM_2 + MIN;
u[v - MIN] = 1;
cout << v << " ";
}
cout << endl;
for(int i = MIN; i <= MAX; ++i)
{
if(!u[i - MIN])
{
cout << i << " " ;
}
}
}
Tralaltro interessante vedere come viene trasformato quel rand() % DIM_2 + MIN pur di non usare la divisione:
Codice:
call rand
mov edi, OFFSET FLAT:std::cout
movsx rsi, eax
cdq
imul rsi, rsi, 954437177
sar rsi, 34
sub esi, edx
lea edx, [rsi+rsi*8]
add edx, edx
sub eax, edx
mov esi, eax
cdqe
add esi, 38
mov DWORD PTR [rsp+rax*4], 1
ottimo, o anche in C
Codice:#include <stdio.h> #include <stdlib.h> #include <time.h> static int v[56]; int main() { int i, c = 0; srand(time(0)); do { i = rand() % 100; if (i < 38 || i > 55) continue; v[i]++; c++; } while (c < 10); for (i = 38; i <= 55; i++) { if (!v[i]) printf("il numero %d non e' nella serie\n", i); } return 0; }
Brutto però quell'if li dentro... 😁 farà molti cicli inutili. Non ho capito perchè stai usando 100 anche, tanto i valori sopra al 55 vengono scartati comunque. Mi sono perso qualcosa?