Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: random(x)

Sivun loppuun

HelvetinKapteeni [15.01.2006 12:35:12]

#

Nyt jokin on pielessä kun ei toimi..
Ohjelman tarkoitus olisi siis
tulostaa kaksikymmentä lukua väliltä 1-30
satunnaisesti.olisi myös hyvä saada tietää
miten saisin esim tulostamaan joka riville yhden
luvun. En oikein osaa vielä tätä random juttua.

#include <iostream.h>
#inlcude <stdlib.h>
main()
{
	int luku;
	for (luku=20;luku > 0;luku--) {
		cout << int rand(30)endl;
		return 0;
	}
}

KeKimmo [15.01.2006 13:26:18]

#

Olet kirjoittanut #includen väärin.
Et ole ilmoittanut, mitä main() palauttaa.
Mitä ihmettä tuo int tuossa rand():n edessä tekee?
Endl:n edestä puuttuu <<.
Funktiosta poistutaan for-loopin ensimmäisellä ajokerralla.

EDIT:
Niin, ja miksi ihmeessä varaat tuon luku-muuttujan ja teet tuollaisen jännäkeloopin, kun et kerran edes käytä koko muuttujaa missään muualla?

sooda [15.01.2006 13:27:41]

#

Eikä rand ota parametrejä. Ja muuta iostream.h -> iostream ja käytä std-nimiavaruutta.

Metabolix [15.01.2006 13:32:24]

#

Korjattuna:

// #include <iostream.h> // Vanhentunut!
#include <iostream> // ei.h:ta

//#inlcude <stdlib.h> // Tiukasti katsoen C:n otsikko...
#include <cstdlib> // include oikein kirjoitettuna

// main()
int main() // int-palautustyyppi
{
    int luku;
    for (luku=20;luku > 0;luku--) {
        // cout << int rand(30)endl;
        std::cout << (1 + (std::rand() % 30)) << std::endl;
        // return 0;
    }
    return 0; // Return vasta loopin ulkopuolella
}

HelvetinKapteeni [15.01.2006 15:01:47]

#

Kiitti. Toimiii mutta en kyllä oikein ymmärrä silti koko juttua :)johtuu varmaan siitä kun oppaassa jota luen annettiin tehtävä että tee ohjelma joka arpoo numeroita vaikkei oltu edes opetettu mitään randomia :/. No kiitti paljon kuitenkin

Metabolix [15.01.2006 15:26:05]

#

Tuossa oli niin paljon virheitä jo muuallakin kuin randomissa, että tuo ei kelpaa perusteluksi.

kooderi [15.01.2006 15:27:15]

#

Ja ennen for-luuppia vielä siemenarvo randia varten:

srand((unsigned)time());

Metabolix [15.01.2006 15:29:01]

#

Mutta time-funktiohan ottaa tunnetusti parametrikseen osoittimen time_t-tyyppiseen muuttujaan (yleensä int). Tilalle voi myös laittaa nollan. Tuo kooderin esimerkki ei tuollaisenaan siis toimi. Ja time.h vielä tarvitaan.

HelvetinKapteeni [15.01.2006 17:14:40]

#

Metabolix kirjoitti:

Tuossa oli niin paljon virheitä jo muuallakin kuin randomissa, että tuo ei kelpaa perusteluksi.

Itse asiassa ei ollut kuin return väärässä paikassa :)
Ja pari muutakin :o Ohoh aika montakin..heh

kooderi [15.01.2006 17:56:39]

#

No siihen suuntan kuitenkin. MSDN on tehty sitä varten että voi etsiä tarkempia parametrejä. :)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta