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.
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älkeenjos et käytä sulkuja niin suoritetaan if vertailun jälkeen vain seuraava yksi koodi rivi.
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
}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.
Hohoo! Nyt se toimii! Thanks!
Aihe on jo aika vanha, joten et voi enää vastata siihen.