Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Toistaminen loputtomasti....

Sivun loppuun

Karza [01.12.2005 15:36:41]

#

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.

rndprogy [01.12.2005 15:45:52]

#

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

Karza [01.12.2005 15:50:00]

#

Selitin vähän hullusti.. haluan että se aina vaan toistaa vaikka luku olisi mikä. Mutta siihen pitää laittaa kuitenkin jotain.. (kunnes... jotain tapahtuu)...

Heikki [01.12.2005 15:54:53]

#

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;

Karza [01.12.2005 16:03:08]

#

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?

Chiman [01.12.2005 16:11:49]

#

Kokeile tätä:

int vastaus = rand() % 100 + 1;

Karza [01.12.2005 16:28:40]

#

Mitä "Expected 'while' at end of the input" tarkoittaa? tai tiedän mitä tarkoittaa, mutta en tajua silti mitä toi haluaa.

Heikki [01.12.2005 16:41:42]

#

Tarkistappas while-silmukkasi rakenne, ja muutenkin että puolipisteet yms. löytyy. Jos ei löydy vikaa niin pasteta vähän koodia.

Karza [01.12.2005 16:45:00]

#

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;
}

Chiman [01.12.2005 16:48:53]

#

Sulta puuttuu aaltosulku juuri ennen whilea. Lisää myös "break;" "Arvasit oikein"-rivin jälkeen, jos haluat poistua loopista.

Karza [01.12.2005 16:51:49]

#

Ai niin.. olinpa tyhmä. Miten saatoin unohtaa.

Edit: mistähän mahtaa johtua että vastaus on joka kerta 42? eli randomi ei toimi.

Chiman [01.12.2005 17:04:15]

#

42 on hyvä vastaus kaikkeen mahdolliseen :D

Mutta juu, sun pitää alustaa satunnaislukugeneraattori ennen rand-kutsua. Kokeile toimiiko tämä:

srand(time(NULL));

TeeVee [01.12.2005 17:06:23]

#

Eikös tuohon tarvitaan <time.h> ja <stdlib.h>, vai olenko käsittänyt väärin tuon numerojen arpomisen?

Karza [01.12.2005 18:07:07]

#

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)

Metabolix [01.12.2005 18:22:04]

#

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.

Karza [01.12.2005 18:26:16]

#

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ä".

FooBat [01.12.2005 20:05:52]

#

Tee ROT13 salausohjelma :)

Fvvf fryynvara buwryzn, wbxn bfnn chexnn gäzäa grxfgva.

Karza [01.12.2005 21:18:12]

#

Eli mikä?

FooBat [01.12.2005 21:23:31]

#

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.

Karza [01.12.2005 21:35:29]

#

Täytyy koittaa...


Sivun alkuun

Vastaus

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

Tietoa sivustosta