Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++ randomize kirjaimet?

Jyri [29.11.2004 18:02:27]

#

Olen tekemässä "peliä" jossa tarvitsisin koodin millä voisi arpoa kirjaimia. Kirjainten pitäsis olla joko A tai B.
Eli miten saisin arvottua nuo kirjaimet?

rndprogy [29.11.2004 18:06:35]

#

Laita se arpomaan ascii numero 65 tai 66 ja sitten

printf("%c", arvottavan_kirjaimen_muuttuja);

sqwiik [29.11.2004 18:07:15]

#

Homma lähtee helposti kunhan huomaat, että kirjaimet (eli ascii-merkit) voidaan osoittaa suoraan '-merkeillä jolloin se on merkin ascii-koodi tekstin sijasta (tyypiltään usein char).

Eli esim. int a = 'A';

Jyri [30.11.2004 13:30:48]

#

Ai, se oliki noi helppo :P kiitti.
Nyt tuliki vaan toinen ongelma:
muuttuja menetää arvon.
Eli koodi näyttää suurinpiirtein tältä:

#include <iostream>
#include <stdlib.h>

class Peli
{
public:
   int luku;
   void kasittele();
   void tulosta();
};

void Peli::kasittele()
{
 luku += 1;
}

void Peli::tulosta()
{
 cout << luku << endl;
 system("pause");
}

int main()
{
// annetaan muuttujalle alkuarvo ja kutsutaan funktio
Peli arvot;
arvot.luku = 1;
arvot.kasittele();
}

siis minun koodini periaate on sama, tuo koodi on siis vain esimerkki. Ja ongelmana oli se että muuttuja luku menettää arvon 1 ja laittaa tilalle jotain 453555. Mikä on vikana?

sqwiik [30.11.2004 13:35:48]

#

Koeta tulostamalla katsoa, mikä on muuttujan luku aevo ennen arvon 1 asettamista ja sen jälkeen. Eli saako muuttuja koskaan arvoa 1?

Sijoittamalla laitettu arvo kun ei aina aseta sitä aiottua arvoa...

Jyri [30.11.2004 14:57:12]

#

Muuttujan arvo pysyy oikeana siihenasti, kunnes siihen lisätään 1. Sitten sen arvo onkin 44564456 tyyliä :( Eli arvo menee muuttujaan, ja pysyy siellä muuttujan käsittelyyn saakka. Sama käy jos yritän tulostaa muuttujaa useasti. Ihme juttu :D

Jyri [30.11.2004 19:50:11]

#

Hei, tää ei oo enää yhtään kivaa! Se muuttuja pitää arvoaan tasan niin pitkään kunnes sitä tarvis!
Mikä tossa nyt vois olla vikana?

Vastaus

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

Tietoa sivustosta