Kezdőoldal » Számítástechnika » Programozás » C++ problémámon tudna vki...

HaBB_00 kérdése:

C++ problémámon tudna vki segíteni?

Figyelt kérdés

Sziasztok.

A probléma lényege az, hogy a programom nem működik. Azt szeretném ha az idő alapját kisorsolna 5 random számot 1 és 90 között (ez megvan) de úgy hogy ne legyen benne ismétlődés (pl. ne legyen az hogy a kisorsolt számok 8,9,30,30,74 mert ott ismétlődik a 30)

Meg is írtam a programot, csak hát ha lefuttatom az összes szám 0... Itt a program. Hátha találtok benne hibát.(nem tudok valamiért endl-t használni, ne lepődjetek meg ha ez van helyette : "\n")


#include <iostream>

#include <cstdlib>

#include <ctime>


int main ()

{

int a[5];


srand(time(0));


for (int f = 0; f<5; f++)

{

int x = 1 + (rand()%90);

x = a[f];


if (f >= 1)

{

if (a[f] == a[f - 1])

{

x = 1 + (rand()%90);

x = a[f];

std::cout << a[f] << "\n";

}

else

{

std::cout << a[f] << "\n";

}

}

else

{

std::cout << a[f] << "\n";

}



}

return 0;

}



2016. márc. 15. 22:41
 1/6 anonim ***** válasza:
100%

1.

x = 1 + (rand()%90);

x = a[f];

Ezt a 2 sort nezt at megint:)


2. Mindig csak az elozovel hasonlitod ossze, tehat pl. a 30, 1, 2, 3, 30 sorozat atmenne.


3. Kodmegosztasra inkabb a pastebin.com-ot vagy hasonlot hasznalj, mert tagolas nelkul borzalmas olvasni.

2016. márc. 15. 22:51
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:

int x = 1 + (rand()%90);

x = a[f];


x, a, f, ennél semmit mondóbb változóneveket nem is választhattál volna.

Első lecke: beszédes változónevek.

2016. márc. 15. 23:16
Hasznos számodra ez a válasz?
 3/6 anonim ***** válasza:
2016. márc. 16. 00:21
Hasznos számodra ez a válasz?
 4/6 A kérdező kommentje:
Köszönöm a válaszokat! Sokat segítettek.
2016. márc. 16. 06:17
 5/6 anonim ***** válasza:

Ne szenvedj tömbbel, csak akkor, ha kötelező (pl. tanár ezt kéri). Használj egy std::set-et, és akkor az ismétlődés problémáját is alapból lelőtted.


És akkor írhatsz valami ilyent:


#include <set>

...


set<int> Numbers;

...

while (Numbers.size() < 5)

{

int NewNumber = 1 + (rand() % 90);

Numbers.insert(NewNumber);

}

2016. márc. 16. 11:14
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:

Persze a potenciálisan végtelen ciklus miatt talán mégse használj randomszám generáláshoz set-et :)

5 szám kiválasztásánál még nem gáz, de ha ez megmarad a fejedben, és utána majd sokkal komolyabb volumennél is ezt a metodikát fogod használni, ott lesznek bajok :D

2016. márc. 16. 14:59
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!