» »

C++ izpis vprašanj z-enum

C++ izpis vprašanj z-enum

Miko55 ::

Hočem naredit neke vrste milijonara/kviz ker mi je dolgčas :). Hočem narediti nekako tako: imel bi niz ter v njem shranjena vprašanja,ter če je vneseno število npr. 5 potem naj izpiše 5 vprašanje,ampak zaenkrat smo v šoli delali samo z char[velikost] to nekako ne gre z tem ker vsako število pomeni en znak. Profesor mi je predlagal enum. Sedaj imam nekako tako :
int x=0;
enum barve { red=1, green=2, blue=3 };
cin>>x;
cout<<barve(x);

In mi izpiše samo številko,jaz bi pa rad da bi mi izpisal red/green ali blue. Z tem še nisem nič delal tako če bi mi lahko kdo razložil :)

win64 ::

c++ programi med izvajanjem nimajo te informacije. Najlažje je narediti array stringov in potem z indeksom kličeš.
string _BARVE_NAMES [] = { "", "red", "green", "blue" };
cin<<x;
cout << _BARVE_NAMES[x]; //prej preveri vrednost x

Miko55 ::

Hvala za odgovor.Mimogrede v čem pa je razlika char niz[velikost] pa string xyz ? Ker koliko vem je potem nekoliko drugače cin.getline(niz,velikost) je potem getline(cin,niz).

win64 ::

char* je ansi c implementacija niza, ki je v osnovi niz znakov, ki se zaključi z znakom 0 '\0'. Za pridobivanje velikosti se uporabi strlen(niz).
string je c++ razred, ki ovije ansi niz in vsebuje metode za delo z nizi(recimo niz.length()).

getline pričakuje kot argument prazen buffer(char*) v katerega lahko piše.
Ker pa je buffer podan kot izhodni argument, funkcija ne more pričakovati, da bo zaključni znak '\0' na koncu niza in zato ne more izračunati dolžine.
Velikost bufferja pa potrebuje, ker mora vedeti do kje lahko piše, da ne bi prišlo do prekoračitve.
To seveda pomeni, da če uporabnik vpiše 20 znakov, ti pa podaš kot argument buffer z velikostjo 10, ti ne bo prebralo vseh 20 znakov.

c++ implementacija cin.getline(str*) pa sama poskrbi, da boš zmeraj dobil celotno vrstico.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Java enum

Oddelek: Programiranje
51063 (908) predi
»

Moneybookers bank transfer

Oddelek: Pomoč in nasveti
112582 (1465) s6c-gEL
»

[VB] polepšanje kode

Oddelek: Programiranje
7767 (673) korenje3
»

C# okna in podokna

Oddelek: Programiranje
111681 (1275) FlashM
»

::.. Prdenje disketnika ..::

Oddelek: Pomoč in nasveti
7959 (853) bastadu

Več podobnih tem