Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: " Parse error "

ttuoppi [22.06.2004 17:17:53]

#

Moro. Ensimmäiseksi haluan huomauttaa että olen opiskellut ohjelmointia hyvin vähän (2viikkoa). Ja se kyllä näkyy minun ongelman laadustakin... Joten älkää pitäkö minua ihan tyhmänä. I have just started.

Seuraavassa kappaleessa on "pieni" palanen lähdekoodia, jossa on yksi ongelma: kun yritän kääntää sitä (Dev-C++ on kääntäjäni) tulee aina yksi virheilmoitus. Parse error before else. Eli mikä nyt mättää kun en mä mitään virhettä löydä "ennen elseä"?

#include <iostream.h>
#include <stdio.h>

int main(void)
{
  int valinta;
  float luku_1, luku_2, tulos;
  valinta = 0;
  luku_1 = luku_2 = tulos = 0;

  cout << " SENSUROITU MAINEEN SÄILYTTÄMISEN TAKIA";
  cout << endl << "This product has made by Tuomas Mammela 2004.";

  cout << endl << endl << "Paina 1 jos haluat laskea yhteenlaskuja ";
  cout << endl << "Paina 2 jos haluat laskea vähennyslaskuja ";
  cout << endl << "Paina 3 jos haluat laskea kertolaskuja ";
  cout << endl << "Paina 4 jos haluat laskea jakolaskuja ";
  cout << endl << "Paina jotain muuta numeroa jos haluat poistua ";
  cout << endl << endl << "Valintasi on: ";
  cin >> valinta;

    if (valinta == 1)
    cout << endl << endl << endl << "Anna ensimmäinen luku: ";
    cin >> luku_1;
    cout << endl << endl << "Anna toinen luku: ";
    cin >> luku_2;

    tulos = luku_1 + luku_2;

    cout << endl << endl << "Summa on " << tulos ;

    getchar();
    return 0;

  else
    if (valinta == 2)
    cout << endl << "Anna ensimmäinen luku: ";
    cin >> luku_1;
    cout << endl << endl << "Anna toinen luku: ";
    cin >> luku_2;

    tulos = luku_1 - luku_2;

    cout << endl << endl << "Erotus on " << tulos;

    getchar();
    return 0;

  else
    if (valinta == 3)
    cout << endl << endl << endl << "Anna ensimmäinen luku: ";
    cin >> luku_1;
    cout << endl << endl << "Anna toinen luku: ";
    cin >> luku_2;

    tulos = luku_1 * luku_2;

    cout << endl << endl << "Tulo on " << tulos;

    getchar();
    return 0;

  else
    if (valinta == 4)
    cout << endl << endl << endl << "Anna ensimmäinen luku: ";
    cin >> luku_1;
    cout << endl << endl << "Anna toinen luku: ";
    cin >> luku_2;

    tulos = luku_1 / luku_2;

    cout << endl << endl << "Osamaara on " << tulos;

    getchar();
    return 0;

  else
    cout << endl << endl << "Paina ENTER poistuaksesi ";

    getchar();
    return 0;
}

ps: Jos löydätte muitakin virheitä niin ilmiantakaa ne toki.

WinC [22.06.2004 17:23:14]

#

Elikkäs nyt jos en ihan hakoteillä =) ole niin IF lohkot pitää laittaa sulkeisiin esim.

IF(valinta==1)
{
//valinta ykköseen liittyvä koodi
}
ELSE  //pitää tulla heti tuon if lohkon sulkevan sulun               jälkeen

jos et käytä sulkuja niin suoritetaan if vertailun jälkeen vain seuraava yksi koodi rivi.

sqwiik [22.06.2004 17:24:05]

#

Tuossahan se tulee heti :) C/C++:ssa if-lauseet tulee sulkea aaltosuluin jos koodia on enemmän kuin yksi käsky. Tuosta tulee koska virhe, koska näennäisesti sinulla ei ole if-lausetta ennen elseä :)

if(jotain){
  tee_jotain
}else{
  tee_muuta
}

Aruviel [22.06.2004 17:29:57]

#

Missä ovat kaikki tarvittavat aaltosulkeet?

if(i != 255)
{
  cout << "Ei oop 255";
  return 0;
}
else if( i >= 256)
{
  cout << "\nNyt sit se on enemmän || yhtä paljon kuin 256.\n";
  return 1;
}
else
{
  cout << "Tää on tavallaan \"defaultti\"";
}

Eli: Aaltosulkeet rajaamaan hommaa. If-lauseitten sisällä voi myös sitten olla muita if-lauseita. Muista käyttää aaltosulkeita, jos et tee näin, niin ohjelmasi suorittaa ifin jälkeen vain sen seuraavan komennon ja näin if päättyy.

int i = 10;

// Väärin!
if(i == 10)
  cout << "Pahus, joudun lopettamaan kympin takia!";
  return 0;

// Oikein(?)
if(i == 10)
{
  cout << "Pahus, joudun lopettamaan kympin takia!";
  return 0;
}

Toivottavasti nyt selvensin asiaa edes hieman. Ensimmäisessä esimerkissä (//väärin!) ohjelma suorittaa aina return 0;, koska if-lauseen suoritettava osa päättyy jo coutin jälkeen. Aaltosulkeet siis ovat the sana.

ttuoppi [22.06.2004 17:48:46]

#

Hohoo! Nyt se toimii! Thanks!

Vastaus

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

Tietoa sivustosta