NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Jakub Sobinovsky:25.11.2016 23:17

Čaute, viete mi niekto poradiť ? Následujúci program mi vypisuje chybu pri zadavaní.

Program:
#include <iostream>
using namespace std;
int main()
{
DEKLARACIA PREMENYCH
bool ukonceno = false;
char volba;
int cislo1, cislo2, vysledok;
int pocitanie =1;
DEKLARACIA PREMENYCH

VSTUP
cout << "Zadajte co chcete robit,mate na výber +,-,/,* ";
cin >> volba;
cout << "Zadajte cislo: ";
cin >> cislo1;
cout << "Zadajte druhé cislo: ";
cin >> cislo2;
VSTUP

SČÍTANIE
while(1)
{
char volba2;
if(volba == '+')
{
vysledok = cislo1 + cislo2;
cout << "Váš vysledok je: " << vysledok << "\n";
cout << "Chcete este pocitat ?(A/N): ";
cin >> volba2;
}
if(volba2 == 'A')
{
cout << "Zadajte prve cislo: ";
cin >> cislo1;
cout << "Zadatje druhe cislo: ";
cin >> cislo2;
}
else if(volba2 == 'N')
{
ukonceno = true;
break;
}
}

ODČÍTANIE
while(1)
{
char volba2;
if(volba == '-')
{
vysledok = cislo1 - cislo2;
cout << "Váš vysledok je: " << vysledok << "\n";
cout << "Chcete este pocitat ?(A/N): ";
cin >> volba2;
}
if(volba2 == 'A')
{
cout << "Zadajte prve cislo: ";
cin >> cislo1;
cout << "Zadatje druhe cislo: ";
cin >> cislo2;
}
else if(volba2 == 'N')
{
ukonceno = true;
break;
}
}
return 0;
}

Keď zadam že chcem sčítavať zadam č.1 a č.2 program sa ma nasledovne opýta či chcem počítat dalej ja zadam že nie(N) a vybehni mi následujúca chyba

Tá istá chyba sa mi vypíše keď zadam že chcem odčítať, zadam obydva čísla a potom nasleduje tá ista chyba.Vopred ďakujem za rady :)

Editováno 25.11.2016 23:18
 
Odpovědět
25.11.2016 23:17
Avatar
Petr Šťastný
Tvůrce
Avatar
Odpovídá na Jakub Sobinovsky
Petr Šťastný:26.11.2016 0:06

Pouzivej formatovani kodu - ten znak </> nad textovym polem

Program:
#include <iostream>
using namespace std;
int main()
{
DEKLARACIA PREMENYCH
bool ukonceno = false;
char volba;
int cislo1, cislo2, vysledok;
int pocitanie =1;
DEKLARACIA PREMENYCH

VSTUP
cout << "Zadajte co chcete robit,mate na výber +,-,/,* ";
cin >> volba;
cout << "Zadajte cislo: ";
cin >> cislo1;
cout << "Zadajte druhé cislo: ";
cin >> cislo2;
VSTUP

SČÍTANIE
while(1)
{
char volba2;
if(volba == '+')
{
vysledok = cislo1 + cislo2;
cout << "Váš vysledok je: " << vysledok << "\n";
cout << "Chcete este pocitat ?(A/N): ";
cin >> volba2;
}
if(volba2 == 'A')
{
cout << "Zadajte prve cislo: ";
cin >> cislo1;
cout << "Zadatje druhe cislo: ";
cin >> cislo2;
}
else if(volba2 == 'N')
{
ukonceno = true;
break;
}
}

ODČÍTANIE
while(1)
{
char volba2;
if(volba == '-')
{
vysledok = cislo1 - cislo2;
cout << "Váš vysledok je: " << vysledok << "\n";
cout << "Chcete este pocitat ?(A/N): ";
cin >> volba2;
}
if(volba2 == 'A')
{
cout << "Zadajte prve cislo: ";
cin >> cislo1;
cout << "Zadatje druhe cislo: ";
cin >> cislo2;
}
else if(volba2 == 'N')
{
ukonceno = true;
break;
}
}
return 0;
}

A ta chyba je v tom, ze u podminek pouzivas char volba2, ale nikde ji nenaplnujes hodnotou. Asi jsi ji zapomnel nacist od uzivatele :-)

 
Nahoru Odpovědět
26.11.2016 0:06
Avatar
Jakub Sobinovsky:26.11.2016 12:21

Tak ako by to malo potom vypadať ? Lebo mna pri - ani nepustí k tomu aby som si vybral či chcem počítať alebo nie.

 
Nahoru Odpovědět
26.11.2016 12:21
Avatar
Petr Šťastný
Tvůrce
Avatar
Odpovídá na Jakub Sobinovsky
Petr Šťastný:26.11.2016 17:00

Zkus to takhle:

Inicializace promennych
While cyklus (zacatek)
Nacteni cisel
Podminky a vypocet
Zobrazeni vypoctu
Nacti char 'volba2'
Kdyz je vysledek u volba2 'N' vypadni z cyklu
While cyklus (konec)
Program(konec)

// A kdyz mi pises, klikni na tlacitko odpovedet, aby mi doslo upozorneni

Editováno 26.11.2016 17:01
 
Nahoru Odpovědět
26.11.2016 17:00
Avatar
Odpovídá na Petr Šťastný
Jakub Sobinovsky:27.11.2016 0:30

Nakoniec som to poriešil takto:

#include <iostream>
using namespace std;
int main()
{
//DEKLARACIA PREMENYCH//
bool ukonceno = false;
char volba,volba2;
int cislo1, cislo2, vysledok;
int pocitanie =1;
//DEKLARACIA PREMENYCH//

//VSTUP//
cout << "Zadajte co chcete robit,mate na výber +,-,/,*,%(Zvysok po deleni): ";
cin >> volba;
//VSTUP//
while(1)
{
//SČÍTANIE//
if(volba == '+')
{
  while (true)
          {
                  cout << "Zadajte cislo: ";
                  cin >> cislo1;
                  cout << "Zadajte cislo2: ";
                  cin >> cislo2;
                  vysledok = cislo1 + cislo2;
                  cout << "Vas vysledok je: " << vysledok << "\n";
                  cout << "Chcete pocitat dalej ?(A/N): ";
                  cin >> volba2;
                           if(volba2 != 'A')
                  {
                                  ukonceno = true;
                              break;
                  }
         }
  }

//ODCITANIE//
if(volba == '-')
{
  while (true)
          {
                  cout << "Zadajte cislo: ";
                  cin >> cislo1;
                  cout << "Zadajte cislo2: ";
                  cin >> cislo2;
                  vysledok = cislo1 - cislo2;
                  cout << "Vas vysledok je: " << vysledok << "\n";
                  cout << "Chcete pocitat dalej ?(A/N): ";
                  cin >> volba2;
                           if(volba2 != 'A')
                  {
                                  ukonceno = true;
                              break;
                  }
         }
  }

//Nasobenie//
if(volba == '*')
{
  while (true)
          {
                  cout << "Zadajte cislo: ";
                  cin >> cislo1;
                  cout << "Zadajte cislo2: ";
                  cin >> cislo2;
                  vysledok = cislo1 * cislo2;
                  cout << "Vas vysledok je: " << vysledok << "\n";
                  cout << "Chcete pocitat dalej ?(A/N): ";
                  cin >> volba2;
                           if(volba2 != 'A')
                  {
                                  ukonceno = true;
                              break;
                  }
         }
  }

//DELENIE//
if(volba == '/')
{
  while (true)
          {
                  cout << "Zadajte cislo: ";
                  cin >> cislo1;
                  cout << "Zadajte cislo2: ";
                  cin >> cislo2;
                  vysledok = cislo1 / cislo2;
                  cout << "Vas vysledok je: " << vysledok << "\n";
                  cout << "Chcete pocitat dalej ?(A/N): ";
                  cin >> volba2;
                           if(volba2 != 'A')
                  {
                                  ukonceno = true;
                              break;
                  }
         }
  }

//ZVYSOK PO DELENI//
if(volba == '%')
{
  while (true)
          {
                  cout << "Zadajte cislo: ";
                  cin >> cislo1;
                  cout << "Zadajte cislo2: ";
                  cin >> cislo2;
                  vysledok = cislo1 % cislo2;
                  cout << "Vas vysledok je: " << vysledok << "\n";
                  cout << "Chcete pocitat dalej ?(A/N): ";
                  cin >> volba2;
                           if(volba2 != 'A')
                  {
                                  ukonceno = true;
                              break;
                  }
         }
  }

//////////VYSTUP////////////
          if(ukonceno)
                          {
                          cout << "Chcete vybrat inu moznost pocitania ?(A/N): ";
                      cin >> volba2;
                           if(volba2 != 'A')
                  {
                                  ukonceno = true;
                              break;
                  }
                           cout << "Zadajte co chcete robit,mate na výber +,-,/,*: ";
              cin >> volba;
                          }
}
         if(ukonceno)
                         cout << "Program sa konci\n";
      //////////VYSTUP////////////
return 0;
}

Ďakujem za rady a sorry som tu nový :).

 
Nahoru Odpovědět
27.11.2016 0:30
Avatar
Petr Šťastný
Tvůrce
Avatar
Odpovídá na Jakub Sobinovsky
Petr Šťastný:27.11.2016 9:36

Vubec nemas zac, jsem rad, ze jsem pomohl :-)

 
Nahoru Odpovědět
27.11.2016 9:36
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.