Tämä on varmaankin ihan yksinkertainen juttu, mutta miten jonkun asian voi tulostaa loputtomasti niin kauan kuin ohjelma suljetaan? siis esim vaikka jos käyttäjältä kysytään tämän nimeä ja kun se on sen kirjoittanut (ja painanut ENTER) niin se kysyy sitä uudestaan. do... while?.. en osaa vaan käyttää niitä.
Edit.. tai no kyllä sen periaatteessa toimimaan saan, mutta haluaisin taas älytäkkin jotain... pistin siihen while (luku = 5) siis että kun käyttäjä syöttää ton luvun niin ohjelman pitäisi loppua mutta näin ei käy.
laita siihen while(luku != 5)
Eli tuo toistaa luuppia niin kauan kunnes luku on viisi.
edit: ja vertaukseen ei riitä pelkkä luku = 5 vaan pitää olla luku == 5
Selitin vähän hullusti.. haluan että se aina vaan toistaa vaikka luku olisi mikä. Mutta siihen pitää laittaa kuitenkin jotain.. (kunnes... jotain tapahtuu)...
En tiedä ymmärsinkö tarpeesi oikein, mutta loputon silmukka ei tarvitse mitään suoritusehtoa, esimerkiksi: while(1) { /* koodia */ } suoritetaan ikuisesti, ellei silmukasta poistuta komennolla break;
Ok.. kysyn tässä samassa, kun en uusia aiheita viitsi kokoajan tehdä, eli kokonaisluku pitäisi määritellä satunnaiseksi väliltä 1 - 100 (luvun arvaus peli). Koitin kaikkea ja pistin: int vastaus = rand(); ... mutta miten sen saa välille 1 - 100? pistin sulkeiden sisään 1 - 100, käänsin ja ajoin niin yhtäkkiä ohjelma avaa uuden stdlib välilehden ja valittaa liian montaa argumenttia.. siis mitä tapahtui?
Kokeile tätä:
int vastaus = rand() % 100 + 1;
Mitä "Expected 'while' at end of the input" tarkoittaa? tai tiedän mitä tarkoittaa, mutta en tajua silti mitä toi haluaa.
Tarkistappas while-silmukkasi rakenne, ja muutenkin että puolipisteet yms. löytyy. Jos ei löydy vikaa niin pasteta vähän koodia.
En löydä mitään vikaa... tosin en tiedä mitä pistäisin tohon while sulkuihin, pistin vaan jotain.. sitä se varmaan herjaa x)
/*************ARVAA NUMERO**************/ #include <iostream> using namespace std; int main() { int vastaus = rand() % 100 + 1; int arvaus; cout << "Ajattelen yhtä kokonaislukua 1 - 100 väliltä"; cout << "\nYritä arvata, mikä se on: "; do { cin >> arvaus; if (arvaus == vastaus) { cout << "\nArvasit oikein!"; } if (arvaus != vastaus) { cout << "\nArvasit väärin."; cout << "\nKoita uudelleen..."; } while(1); cin.get(); cin.get(); return 0; }
Sulta puuttuu aaltosulku juuri ennen whilea. Lisää myös "break;" "Arvasit oikein"-rivin jälkeen, jos haluat poistua loopista.
Ai niin.. olinpa tyhmä. Miten saatoin unohtaa.
Edit: mistähän mahtaa johtua että vastaus on joka kerta 42? eli randomi ei toimi.
42 on hyvä vastaus kaikkeen mahdolliseen :D
Mutta juu, sun pitää alustaa satunnaislukugeneraattori ennen rand-kutsua. Kokeile toimiiko tämä:
srand(time(NULL));
Eikös tuohon tarvitaan <time.h> ja <stdlib.h>, vai olenko käsittänyt väärin tuon numerojen arpomisen?
Noh niin.. nyt on valmis. Lisäilin jotain pientä. Paljonkos saatte tossa pisteitä? Mun enkka on jotain yli 700 x)
/*************ARVAA NUMERO**************/ #include <iostream> using namespace std; int main() { srand(time(NULL)); int vastaus = rand() % 100 + 1; int arvaus = 0; int arvauskerrat = 0; int pisteet = 0; cout << "Ajattelen yht\x84 kokonaislukua 1 - 100 v\x84lilt\x84"; cout << "\nYrit\x84 arvata, mik\x84 se on: "; do { cin >> arvaus; if (arvaus == vastaus) { pisteet = pisteet + 1250; cout << "\nOIKEIN!"; cout << "\nArvasit " << arvauskerrat -- << " kertaa v\x84\x84rin. "; cout << "\nPisteet: " << pisteet; break; } if (arvaus != vastaus) { pisteet = pisteet - 110; arvauskerrat ++; if (arvaus >= 101) { pisteet = pisteet - 450; cout << "\nVastaus on v\x84lilt\x84 1 - 100!"; } if (arvaus <= 0) { pisteet = pisteet - 450; cout << "\nVastaus on v\x84lilt\x84 1 - 100!"; } cout << "\nArvasit v\x84\x84rin. "; if (arvaus <= vastaus) { cout << "Luku on suurempi. "; } if (arvaus >= vastaus) { cout << "Luku on pienempi. "; } cout << "\nKoita uudelleen: "; } } while(1); cin.get(); cin.get(); return 0; }
EDIT: muutin vähän noita piste määriä. Mun enkka on nyt 810 x)
Hassua, voi saada negatiiviset pisteet... Suosittelisin pistelaskuksi jotakin tähän tyyliin:
pisteet = 1000; // Maksimi; // Väärällä arvauksella: pisteet = (2 * pisteet) / 3;
Mutta 1030 pistettä tuosta ropsahti, kolmannella oikein.
No ne on miinuksia jos menee todella huonosti...
E: Antakaa mulle joku haaste, minkä koitan tehdä seuraavaksi... (Mutta siis ei kuitenkaan mitään: "Tee HybErsUberIrac3DYdiNoHjusTenOhjausJärjestelmä".
Tee ROT13 salausohjelma :)
Fvvf fryynvara buwryzn, wbxn bfnn chexnn gäzäa grxfgva.
Eli mikä?
Siis sellainen yksinkertainen salausohjelma, joka siirtää jokaista kirjainta 13 merkkiä eteenpäin.
Eli a -> n, b -> o, ... Moi = Zbv. Erikoismerkkejä tai ääkkösiä ei muunneta. Tämän pitäisi olla melko helppo harjoitus. Sama salausohjelma toimii myös purkuohjelmana.
Täytyy koittaa...
Aihe on jo aika vanha, joten et voi enää vastata siihen.