Problém s programování if/else C++
Moderátor: Moderátoři
- arduino2015
- Příspěvky: 158
- Registrován: 30 led 2015, 01:00
Ahoj, nakonec sem se pokusil to celé překopat na jednotlivě volané funkce, ale zase to hlásí nějaký chyby:
CHAR.cpp:32:3: error: 'else' without a previous 'if' ---pročpak, když ho tam mám?
CHAR.cpp:36:11: error: expected 'while' before numeric constant
CHAR.cpp:36:11: error: expected '(' before numeric constant
Kód: Vybrat vše
#include <iostream>
#include <cmath>
#include <ctype.h>
using namespace std;
int main()
{
char input;
int volba, cislo1, cislo2 ; // deklarovani funkce volba a operandů příkladů
float deleni ; // deleni se zbytkem umoznuje pouze nekolik druhu pameti, viz Floating point anebo Pohyblivá řádová čárka
double polomer, povrch ; // podobný typ jako float
do //do-while loop starts here.that display menu again and again until user select to exit program
{
//Vlastni nabidka:
cout << "Vitejte v ukazkovem programu matematickych operaci." << endl;
cout << "Upozorneni: pri psani desetinnych cisel dodrzujte" << endl;
cout << "anglosasky standart, tudiz 2.5 (nikoliv 2,5)!" << endl;
cout << "(Vyhotoven: 9.8.2015)" << endl;
cout << "1) Soucet +" << endl;
cout << "2) Soucin *" << endl;
cout << "3) Rozdil -" << endl;
cout << "4) Podil / " << endl;
cout << "5) Modulo % " << endl;
cout << "6) Povrch kruhu " << endl; // obvod kruhu - Circumference
cout << "7) rez" << endl;
cout << "8) KONEC" << endl;
cout << "Prosim, zadejte volbu: ";
cin >> input;
if (!isdigit(input))
cout << "Toto není číslice!" << endl;
cout << "Prosim, zadejte ZNOVU volbu: " << endl;
else
cin >> volba;
}
return 0;
}
void menu()
{ if(volba == 1)
{
cout << "Zvoleno scitani:" << endl;
cout << "Zadejte prvni cislo: " << endl;
cin >> cislo1;
cout << "Zadejte druhe cislo: " << endl;
cin >> cislo2;
cislo1 += cislo2;
cout << "Vas vysledek: " << endl;
cout << cislo1 << endl;
}
else if(volba == 8)
{
cout << "Ukonceni programu..." << endl;
}
else //doplnit hlídání CÍSELNÝCH výrazů
{
// Displaying error message
cout << "Zadan neplatny udaj." << endl;
}
}
while(volba != 8);
while (volba < 0)
{
cin >> input;
volba = static_cast<int>(volba) - 48;
}
return 0;
}
CHAR.cpp:36:11: error: expected 'while' before numeric constant
CHAR.cpp:36:11: error: expected '(' before numeric constant
- ross4435897
- Příspěvky: 426
- Registrován: 10 lis 2009, 01:00
- Bydliště: Brno
Přepsal jsem část kódu počínaje funkcí void menu() do trochu lepšího formátování:
Tak a teď k čemu patří while(volba != 8 ); ? Ta pravá složená závorka před tím ukončuje tělo funkce a ne blok do-while. Nehledě na to, že by se zde program zacyklil. V první půlce kódu je zase blok do bez klausule while. Hlavním příznakem zmatku v blocích je to, že počet levých a pravých složených závorek není shodný. Celkem je tam 7 levých závorek a 8 pravých.
Kód: Vybrat vše
void menu()
{
if(volba == 1)
{
cout << "Zvoleno scitani:" << endl;
cout << "Zadejte prvni cislo: " << endl;
cin >> cislo1;
cout << "Zadejte druhe cislo: " << endl;
cin >> cislo2;
cislo1 += cislo2;
cout << "Vas vysledek: " << endl;
cout << cislo1 << endl;
}
else if(volba == 8)
{
cout << "Ukonceni programu..." << endl;
}
else //doplnit hlídání CÍSELNÝCH výrazů
{
// Displaying error message
cout << "Zadan neplatny udaj." << endl;
}
}
while(volba != 8);
while (volba < 0)
{
cin >> input;
volba = static_cast<int>(volba) - 48;
}
return 0;
}
arduino2015: nauč se uzavírat do { } všechny těla podmínek, cyklů, apod. i jednořádková, ušetříš si s tím spoustu problémů:
je jasná chyba, kdybys psal:if (!isdigit(input))
cout << "Toto není číslice!" << endl;
cout << "Prosim, zadejte ZNOVU volbu: " << endl;
else
cin >> volba;
nic podobného by se ti nestaloif (!isdigit(input))
{
cout << "Toto není číslice!" << endl;
cout << "Prosim, zadejte ZNOVU volbu: " << endl;
}
else
{
cin >> volba;
}
- arduino2015
- Příspěvky: 158
- Registrován: 30 led 2015, 01:00