Lenne egy 5-ös lottó programom dev c++ ban és az lenne a problémám hogy le írást kell írni mint pl. így "srand (time (NULL) ) ; //véletlen számokat generáljon" Valaki le írná nekem ezeket?
A hiba az lenne h 5számot kéne ki írnia és 10et ír ki mi lehet a probléma?
******
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
int lotto[5],csere;
srand(time(NULL)); //veletlen szamokat generaljon
printf("A nyertes lotto szamok: ");
for (int i=0; i<5; i++)
{
lotto[i]=rand()%90+1; //aktualis szam generalasa
printf("%d, ", lotto[i]);
}
for (int i=0;i<=5;i++)
{
for (int j=i;j<5;j++)
{ //osszehasonlitja mindet minddel
if (lotto[i]>lotto[j])
{ //ha rossz sorrendben vannak, megcsereli oket
csere=lotto[i];
lotto[i]=lotto[j];
lotto[j]=csere;
}
}
}
printf(" ");
for (int i=0;i<5;i++)
{
printf("%d, ", lotto[i]);
}
getchar();
return 0;
}
C++-ban nem nagyon vagyok otthon, de azért megpróbálok segíteni.
Azért ír ki 10 számot a progi, mert 2 for ciklus fut le, amiben printf van. Az első a generálás sorrendjében írja ki a számokat, míg a második sorbarendezve, így jön ki a 10. Egyszerűen vedd ki a generálásból a printf-et. De nem is ez ezzel a baj, hanem az, hogy mivel nincs semmi ami ellenőrizné, hogy a kiválasztott szám szerepel-e már a tömbben, így akár az is meglehet (bár szinte 0 az esélye), hogy mind az 5 szám ugyanaz lesz. Ezt valahogy így kellene megoldani:
bool ok;
int szam;
for (int i=0; i<5; i++) {
do {
szam = rand()%90+1; //szám generálása
ok = true; //minden ok
for (int j=0; j<i; j++) { //megnézzük az eddigi számokat
if (lotto[j]==szam) { //hogy nem-e egyenlőek a most kiválasztottal
ok = false; //ha igen, baj van
break; //felesleges tovább vizsgálni, kiugrunk a ciklusból és megyünk vissza a szam = rand... sorra
}
}
} while (ok); //addig csináljuk, amíg nem kapunk olyan számot, ami nincs benne a tömbben
lotto[i] = szam;
}
Továbbá egy ekkora tömb esetén még nem feltűnő, de a későbbiekben ha sorba kell rendezni bármit is, a buborékos sorrendezést el KELL felejteni. Az, hogy ezt tanítják a suliban egy dolog, de valójában semmire sem jó, annyira lassú. Ha komolyabban akarsz foglalkozni a programozással, ajánlom figyelmedbe a MergeSort vagy QuickSort algoritmusok tanulmányozását ha sorrendezésről van szó.
Üdv
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!