Kezdőoldal » Számítástechnika » Programozás » C++ véletlen számot csak...

C++ véletlen számot csak egyféleképpen lehet számítani?

Figyelt kérdés

#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;

}Ehhez hasonlót írtam a dolgozatban, de mivel rossz helyen volt a zárójel, nem működött. Viszont a tanár ctime-t, a cstdlib-t, srand time-t, int szam-ot húzta át, mint hibásat.

Az órai anyagok közt ilyen megoldást találtam (nem voltam ezen az órán)

#include <iostream>

#include <ctime>

#include <cstdlib>

#define maxn 100



using namespace std;

int main ()


{

srand(time(NULL));

for(int i=0;i<maxn;i++)

{

cout<<rand()%451+50<<" ";


}


return 0;

}

Miért ezt a megoldást kéri a tanár ? Tőle nem tudom megkérdezni.



2017. márc. 22. 17:04
 1/9 A kérdező kommentje:

Ennél miért csak EGY véletlen számot ad ? Mi a hiba ?#include <iostream>

#include <ctime>

#include <cstdlib>


using namespace std;


int main()

{

srand(time(0));

int szam;


{

for(int i=0; i<30; i=i++)

szam = rand()%(20-10+1)+10;

cout<<szam<<endl;

}

return 0;

}

2017. márc. 22. 17:09
 2/9 anonim ***** válasza:

#1-es hozzászólásodra: talán így:

[link]

1. A main függvényen belül, a kezdő kapcsos zárójel a for után kell, és nem elé.

2, A for ciklusnál az i=i++ helyett szimplán i++ kell növekményként. Vagy i = i + 1 vagy i += 1

2017. márc. 22. 17:24
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:

"Viszont a tanár ctime-t, a cstdlib-t, srand time-t, int szam-ot húzta át, mint hibásat. "

A time()-ra még esetleg tudom a megoldást: a time paraméterként egy adott fajta objektumra - time_t ( [link] ) - mutató pointert vár, vagy NULL pointert, nem számot.


A többi kérdéses - talán ha beidéznéd a feladatot, meg lehetne mondani.

2017. márc. 22. 17:42
Hasznos számodra ez a válasz?
 4/9 A kérdező kommentje:

A feladat: töltsön fel egy tömböt legfeljebb 100 darab egész számmal.

Erre épül a többi feladat, ha ez nincs kész, nem tudom folytatni. Valamit mondott erre nekem a tanár, de ne értettem. Kérdés, ha valamiért nem működne a tömb feltöltése véletlen számokkal, hogyan tudnék tovább menni a többire ? Csak programozási tételek lesznek a többi feladatban.

2017. márc. 22. 18:03
 5/9 anonim ***** válasza:

"A feladat: töltsön fel egy tömböt"

Te nem tömböt töltesz fel, csak egy int típusú változónak adsz véletlen értékeket, és írod ki.


A szam változó helyett hozz létre egy tömböt - például:

int szamok[30];

majd a ciklusmagban a tömb ciklusváltozó által meghatározott elemének állítsd be a véletlen számot:

szamok[i] = rand() % (20 - 10 + 1) + 10;

majd ki is írhatod,

cout << szamok[i] << endl;

stb...

2017. márc. 22. 18:48
Hasznos számodra ez a válasz?
 6/9 tabaki ***** válasza:

„Ennél miért csak EGY véletlenszámot ad? Mi a hiba?”


Nem tudom -- nálam ugyanis nem EGY véletlenszámot ír ki, hanem semennyit.

Megjegyzések:

1. A kapcsos zárójelet nem a for-ciklus elé tesszük, hanem a feltétel után.

2. Az i=i++; nem növelés, hanem értékadás, emiatt mindig ugyanazt az eredményt adja, tehát végtelen ciklust eredményez. Javaslom, hogy fordításkor ne csak a működésképtelenséget okozó hibákra figyelj, hanem a figyelmeztetésekre is, azokat se véletlenül írja ki a fordító.

3. Bár nem hiba, de a (20-10+1) kifejezés értéke egyszerűen 11.


#include <iostream>

#include <ctime>

#include <cstdlib>

using namespace std;


int main()

{

srand(time(0));

int szam;


for(int i=0; i<30; i++)

      {

      szam = rand()%11+10;

      cout << szam << endl;

      }

return 0;

}

2017. márc. 23. 11:11
Hasznos számodra ez a válasz?
 7/9 tabaki ***** válasza:
Húha, nem tudom, hogy kerülte el a figyelmemet a #2 hozzászólás, de sikeresen megírtam ugyanazt még egyszer. Bocsi, bocsi.
2017. márc. 23. 11:41
Hasznos számodra ez a válasz?
 8/9 anonim ***** válasza:

#include <cstdlib>

100+rand()%50 ;100 és 150 között


#include <cstdlib>

#include <ctime>

srand(time(0));


és ezután már nem a 42vel való sorozatot ismétli, hanem egy minden futáskor különböző sorozatot.

2017. márc. 23. 19:20
Hasznos számodra ez a válasz?
 9/9 tabaki ***** válasza:

@#8:

Azért ezt a hozzászólásodat megmagyarázhatnád. Én legalábbis nem tudom hova tenni.

2017. márc. 23. 23:24
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!