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älkeen
jos 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.