Ahoj, začínám, a přestože jsem vygooglil několik různých řešení, neuspělo u mě ani jedno.
Mám program, kde je menu ovládáno pomocí čísel ( 8) Konec, a podobně), a chci tam dodat detekci
situace, kdy mi program oznámí zadání "ne-čísla" - zatím mi jen vypíše chybu, když napíšu číslo, které v menu už není. "else if( isalpha(volba) ) " je místo detekce nečísla, zkoušel sem tam ale i jiné možnosti.
Děkuji za nápady.
#include <iostream>
#include <cmath>
#include <ctype.h>
using namespace std;
int main()
{
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 >> volba;
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 == 2)
{
cout << "Zvoleno nasobeni:" << 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 == 3)
{
cout << "Zvoleno odcitani:" << 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 == 4)
{
cout << "Zvoleno deleni:" << endl;
//cout << "POZOR: pri deleni typu 10/4 je nutny zapis ve formatu 10.0/4" << endl; V manuálu to ale tak bylo napsáno, čím to je?
//cout << "anebo 10/4.0, program jinak nezobrazi udaje za desetinou carkou." << endl;
cout << "Zadejte prvni cislo: " << endl;
cin >> deleni;
cout << "Zadejte druhe cislo: " << endl;
cin >> cislo1;
deleni /= cislo1;
cout << "Vas vysledek: " << endl;
cout << deleni << endl;
}
else if(volba == 5)
{
cout << "Zvoleno MODULO (navratka zbytku po deleni):" << 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 == 6)
{
cout << "Zvolen vypocet povrchu kruhu:" << endl; // P = π × r², umocnění se dělá pomocí funkce
cout << "Zadejte polomer kruhu: " << endl; // pow, definované v souboru cmath - pow(2, 3)
cin >> polomer; // umocní dvě na třetí
povrch = 3.14 * pow(polomer, 2); // http://kruh.wikina.cz/
cout << "Vas vysledek: " << endl;
cout << povrch << endl;
}
else if(volba == 7)
{
cout << "test rez" << endl;
}
else if(volba == 8)
{
cout << "Ukonceni programu..." << endl;
}
else if( isalpha(volba) )
{
cout << "Toto neni cislo!" << endl;
}
else //doplnit hlídání CÍSELNÝCH výrazů
{
// Displaying error message
cout << "Zadan neplatny udaj." << endl;
}
}
while(volba != 8);
return 0;
}