Mi ebben a C++ programrészletben a hiba?
Futtatáskor memóriaszemét jelenik meg. Hogyan kellene átírnom, hogy kiírja a véletlen számokat ?
#include<iostream>
#include<ctime>
#include<cstdlib>
using namespace std;
int main ()
{
srand(time(0));
int szam[100];
for (int i=0;i<99; i=1+1)
{
szam[i]=rand()%(1000-100+1)+100;
cout<<szam<<endl;
}
return 0;
}
Ha jól rémlik, a tömbnév index nélkül egyszerűen a tömb első elemének memóriacímét jelenti. Érdekes, nálam nem is memóriaszemét jelenik meg, hanem egy olyasféle szám.
Amúgy hogyan képzeled a for-ciklus leállását, ha i értékét mindig kettőre állítod?
Az 1000-100+1 kifejezés is rejtélyes, miért nem egyszerűen 901?
Ööö... és ez valami magyarázat?
Miben különbözik szerinted a rand()%(1000-100+1) kifejezés mondjuk a rand()%(399+2+500)-tól, vagy a rand()%(1231-330)-tól?
És miért csak 99 számot kérsz, ha százat akarsz?
Úgy tűnik, Kérdező, hiába várok rád. Gondolom, aludni tértél, én mindenesetre így teszek. Szép álmokat!
#include<iostream>
#include<ctime>
#include<cstdlib>
using namespace std;
int main ()
{
srand(time(NULL));
int szam[100];
for (int i = 0; i < 100; i++)
{
szam[i] = rand() % (901) + 100;
cout << szam[i] << endl;
}
return 0;
}
i=1+1
Ettől rosszat fogok álmodni! :P
Elgépelési hiba volt az i=1+1, helyesen i=i+1 és így már működik.
----
Én így tanultam:
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
srand(time(0));
int szam;
for(int i=0; i<100; i=i+1)
{
szam = rand()%(100-10+1)+10;
cout << szam << endl;
}
return 0;
}
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!