Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: if ei toimi??

Sivun loppuun

ZAND825 [06.06.2005 13:21:18]

#

int main()
{
int luku;
    cout << "Anna joku luku lukujen 10 ja 20 valilta." << endl;
    cin >> luku;
    do

        if (luku < 10)
        {
        cout << endl << "Don't tell me, that u can't give bigger number!" << endl;
        system ("pause");
        }
        if (luku > 20);
        {
        cout << endl << "Dont' tell me, that u can't give smaller number!" << endl;
        system("pause");
        }
        if (luku == 15);
        {
        cout << endl << "Good good, u can read instruktions!" << endl;
        cout << "(press 1 to return to the start and 2 if u wana exit)" << endl;
        }
        int lukU;
        cin >> lukU;
        system("pause");

        while (lukU == 2);

        return 0;
        }

oon niinku aloittelia(edelleenkin), ja tollanen ei toimi. en vaan tiedä miksei. voisiko joku auttaa?

Metabolix [06.06.2005 13:28:18]

#

do-while-silmukkasi kaipaa aaltosulkuja, kuten hyvin tietäisit, jos lukisit kääntäjän virheilmoituksen. if-lauseiden loppuun ei myöskään kuulu puolipisteitä. Myös muuttujan lukU määrittely vähän epäilyttää, kun se on silmukan sisällä ja sitä käytetään ko. silmukan tarkistuksessa, mutta se saattaa vielä olla kelvollinen.

KemXy [06.06.2005 13:28:37]

#

Kokeiles ottaa nuo puolipisteet ( ; ) pois tuosta if: in sulkujen lopusta.

tuomas [06.06.2005 13:29:01]

#

Muista sitten jatkossa jookos kertoa mitä se debuggeri sanoo :)
Tästä nyt kuitenkin näkee heti, missä vika piilee. Vinkiksi se, että kannattaisi tarkistaa noiden {} merkkien määrää.. Samoin muuttujien nimet täytyy kirjoittaa yhtä isolla, eli luku ja lukU ovat eri muuttujia. Ja sit vielä tarkistappa silmukoitten syntaksit.

edit: blaah, muut kerkis ensi.

ZAND825 [06.06.2005 13:41:44]

#

oke...
silmukoitten syntaksit ois helpompi tarkistaa, jos tietäs mitä ne on, mut kuitenki... nyt tää kääntäjä sanoo "expected 'while' before '(' token" koodi näyttää tälhetkel tältä:

#include <iostream>
#include <stdio.h>
using namespace std;


int main()
{
int luku;
        int lukU;
    cout << "Anna joku luku lukujen 10 ja 20 valilta." << endl;
    cin >> luku;
    do
    {
        if (luku < 10)
        {
        cout << endl << "Don't tell me, that u can't give bigger number!" << endl;
        system ("pause");
        }
        if (luku > 20)
        {
        cout << endl << "Dont' tell me, that u can't give smaller number!" << endl;
        system("pause");
        }
        if (luku == 15)
        {
        cout << endl << "Good good, u can read instruktions!" << endl;
        cout << "(press 1 to return to the start and 2 if u wana exit)" << endl;


        cin >> lukU;
        system("pause");
        }
        while (lukU == 2);
        }
        return (0);
        }

muute tuomas, niiden kuuluu olla eri muuttujat(niiden luku ja lukU)

Metabolix [06.06.2005 13:54:33]

#

Teepä niin, että sisennät tuon koodin selkeästi, niin näet suoraan, mistä tällä kertaa puuttuu aaltosulkuja. Eli siirräpä tuo while-rivin jälkeinen aaltosulku ennen whileä.

Silmukka on sellainen, jota toistetaan, eli esimerkiksi while ja siihen liittyvä koodi.

Nyt tuota silmukkaa toistetaan vain, jos henkilö on syöttänyt ensin 15 ja sen jälkeen valinnut vaihtoehdon 2. Olisiko tässä jotakin korjattavaa?

kooderi [07.06.2005 19:44:59]

#

Kannattaa myös huomioida 'else':n käyttö toisensa poissulkevien if-lauseiden kanssa. Tällä välttyy turhilta vertailuilta.

Eli tyyliin:

if (luku < 10)
{

}
else if (luku > 20)
{

}
else
{

}

Jos luku oli pienempi kuin kymmenen, on sen jälkeen aivan turha tarkastella onko se myös isompi kuin 20.

Toinen juttu mikä pistää silmään, on se että muuttujat kannattaa nimetä järkevästi. Helpottaa kummasti koodin luettavuutta.

Raviable [08.06.2005 23:33:57]

#

Anteeksi aiheen ulkopuolinen kysymys, mutta ovatko nuo fraasit englantia? :D

Megant92 [09.06.2005 00:29:33]

#

ZAND825 kirjoitti:

"expected 'while' before '(' token"

do while(lukU==2){
  //koodia...
}

Varmaan suurinpiirtein nuin.

Metabolix [09.06.2005 18:02:38]

#

Jostakin syystä veikkaan, että virheilmoitus on alun perin "unexpected ...", niin se ainakin minulle tuosta koodista sanoi.

Megant92 [09.06.2005 18:12:18]

#

Mitäköhän ajattelin kun tuon kirjoitin.Taisin olla vähän uninen.:D


Sivun alkuun

Vastaus

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

Tietoa sivustosta