Stránka 2 z 2

Napsal: 11 srp 2015, 09:23
od p32
RAD - rapid application development

Napsal: 17 srp 2015, 14:30
od arduino2015
Ahoj, nakonec sem se pokusil to celé překopat na jednotlivě volané funkce, ale zase to hlásí nějaký chyby:

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: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

Napsal: 17 srp 2015, 14:37
od ross4435897
a tohle je ok? ... else if(volba ==
vypada to ze to to by mohlo byt to misto kteremu ten kompilator nerozumi

Napsal: 18 srp 2015, 10:48
od mtajovsky
Přepsal jsem část kódu počínaje funkcí void menu() do trochu lepšího formátování:

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;
}	
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.

Napsal: 19 srp 2015, 11:40
od chuckyw
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ů:
if (!isdigit(input))
cout << "Toto není číslice!" << endl;
cout << "Prosim, zadejte ZNOVU volbu: " << endl;
else
cin >> volba;
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 nestalo

Napsal: 19 srp 2015, 20:03
od p32
Tak, tak, pravdu má předseda. :wink:

Napsal: 18 zář 2015, 13:31
od arduino2015
Ok, díky.
Jaká skripta pro C++ jsou vhodná pro začátečníka? Děkuji...