Generálj ki egy 50 elemű tömböt véletlen számokkal 1 és 500 közötti számokat, majd határozd meg hány szám osztható 2,3,5,7,11,13,17,19 számokkal, az eredményt írd ki a képernyőre?
2,3,5,7,11,13,17,19
Ezeket is tedd bele egy tömbbe.
int szamlalo(0);
int osztok[] = {2,3,5,7,11,13,17,19};
int szamok[50];
//Feltöltöd a tömböt 50 véletlen számmal
for(int i(0); i < 50; ++i)
szamok[i] = (rand()%498)+2;
for ( int i(0); i < 50; ++i ) {
....int x(0);
....for ( int j(0); j < 8; ++j ) {
........if ( szamok[i] % osztok[j] == 0 )
............++x;
........if(x == 8)
............++szamlalo;
....}
}
Az előző válaszoló algoritmusa egyáltalán nem jó. Nem gyűjti az osztók számát külön külön (2-re, 3-ra, stb).
Ez az algoritmus azt adja meg, hogy az 50 szám között hány olyan van, ami mind a 8 számmal osztható, ez pedig konkrétan 0 lesz minden esetben, mert 17*19*13>500 és ők relatív prímek, tehát nem lesz olyan szám 1 és 500 között, ami velük osztható (mindegyikkel egyszerre).
Tehát az algoritmusa egyenlő azzal, mintha egy konstans 0-t adna vissza, csak túlbonyolítva:)
Bár akár így is lehetne érteni a feladatot, de látszik a kérdésen, hogy ez az értelmezés baromság lenne, másrészt a kérdező korábbi kommentjéből kiderül, hogy pontosan mit is szeretne.
Bár már jó eséllyel tárgytalan, de azért leírom meglátásom:)
Én úgy oldanám meg, hogy készítek még két tömböt, egy azokat a számokat tartalmazná, amelyekkel tesztelni kell az oszthatóságot (tehát 2,3,5,7,11,13,17,19 ), másik meg az ezekhez tartozó számlálókat. Ezek után a tömböt végig iterálásakor kéne még egy for ciklus...
Megjegyzés (és emiatt is kezdtem el írni), hogy tömbök az elterjedt programozási nyelvek döntő többségénél 0-tól vannak indexelve, te 1-gyel kezdted. Erre figyelj, mert okozhat csúnya dolgokat.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!