Witam :) piszę prosty kalkulator do pól figur. Mój problem wygląda następująco...
W przedstawionym niżej programie niepoprawnie działa kontrola wejścia.
W momencie podania błędnych danych (znaku niebędącego int'em) program, zamiast wykonać się od początku zamyka się w pętli i zaczyna w nieskończoność wypisywać błędne dane lub/i Pole prostokąta wynosi:0.
Z góry dziękuje za wszelką pomoc.
#include <iostream>
#include <conio.h>
#include <cstdlib>
void trapez()
{
for (;;)
{
int h, a, b, x, i;
std::cout << "Podaj wysoko\230\206 prostok\245ta:";
if (!(std::cin >> h)) //liczba h
{
system ( "cls");
std::cerr << "B\210\251dne dane";
getch();
system ( "cls");
void trapez();
}
std::cout << "Podaj d\210ugo\230\206 a:";
if (!(std::cin >> a)) //liczba a
{
system ( "cls");
std::cerr << "B\210\251dne dane";
getch();
system ( "cls");
void trapez();
}
std::cout << "Podaj d\210ugo\230\206 b:";
if (!(std::cin >> b)) //liczba b
{
system ( "cls");
std::cerr << "B\210\251dne dane";
getch();
system ( "cls");
void trapez();
}
x=((a+b)*h)/2;
std::cout << "Pole prostok\245ta wynosi:" << x << std::endl;
getch();
system ( "cls" );
std::cout << "Ostatnie dzia\210anie: ";
std::cout << "a-" << a;
std::cout << "; b-" << b;
std::cout << "; h-" << h;
std::cout << " da\210o nam wynik:" << x << std::endl;
}
}
int main()
{
trapez();
return 0;
}