Forum » Programiranje » C++ izpis vprašanj z-enum
C++ izpis vprašanj z-enum
![](https://static.slo-tech.com/stili/avatar_gray.gif)
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 :
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 :)
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 :)
![](https://static.slo-tech.com/stili/avatar_gray.gif)
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
![](https://static.slo-tech.com/stili/avatar_gray.gif)
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).
![](https://static.slo-tech.com/stili/avatar_gray.gif)
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.
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 ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Java enumOddelek: Programiranje | 1063 (908) | predi |
» | Moneybookers bank transferOddelek: Pomoč in nasveti | 2582 (1465) | s6c-gEL |
» | [VB] polepšanje kodeOddelek: Programiranje | 767 (673) | korenje3 |
» | C# okna in podoknaOddelek: Programiranje | 1681 (1275) | FlashM |
» | ::.. Prdenje disketnika ..::Oddelek: Pomoč in nasveti | 959 (853) | bastadu |