rogerpl Temat założony przez niniejszego użytkownika |
Rozdział 2.17 problem z ćwiczeniem praktycznym » 2018-07-09 00:48:43 witam, po wpisaniu niepoprawnego znaku więcej jak jeden raz a następnie wpisanie poprawnej liczby w działaniu program zawiesza się lub przyjmuje złe wartości #include "stdafx.h" #include <iostream> using namespace std;
void moja_funkcja() { cout << "[1] - dodawanie" << endl; cout << "[2] - odejmowanie" << endl; cout << "[0] - wyjscie z programu" << endl; }
void dodawanie() { float a, b; int c = 2; cout << "podaj pierwszą liczbę: "; cin >> a; do { if( cin.fail() ) { cin.clear(); cin.ignore( numeric_limits < streamsize >::max(), '\n' ); cout << "nie poprawny znak!!!\n\n"; cout << "podaj pierwszą liczbę: "; cin >> a; if( cin.fail() ) { c = 1; } } } while( c == 1 ); cout << "podaj drógą liczbę: "; cin >> b; do { if( cin.fail() ) { cin.clear(); cin.ignore( numeric_limits < streamsize >::max(), '\n' ); cout << "nie poprawny znak!!!\n\n"; cout << "podaj drógą liczbę: "; cin >> b; if( cin.fail() ) { c = 1; } } } while( c == 1 ); cout << a << " + " << b << " = " << a + b << endl; }
void odejmowanie() { float a, b; int c = 2; cout << "podaj pierwszą liczbę: "; cin >> a; do { if( cin.fail() ) { cin.clear(); cin.ignore( numeric_limits < streamsize >::max(), '\n' ); cout << "nie poprawny znak!!!\n\n"; cout << "podaj pierwszą liczbę: "; cin >> a; if( cin.fail() ) { c = 1; } } } while( c == 1 ); cout << "podaj drógą liczbę: "; cin >> b; do { if( cin.fail() ) { cin.clear(); cin.ignore( numeric_limits < streamsize >::max(), '\n' ); cout << "nie poprawny znak!!!\n\n"; cout << "podaj drógą liczbę: "; cin >> b; if( cin.fail() ) { c = 1; } } } while( c == 1 ); cout << a << " - " << b << " = " << a - b << endl; }
int main() { setlocale( LC_ALL, "polish" ); int liczba; do { system( "cls" ); cout << "W programie są dostępne następujące opcje:" << endl; moja_funkcja(); cout << "Życzę przyjemnego korzystania z programu" << endl << endl; cin >> liczba; switch( liczba ) { case 1: dodawanie(); break; case 2: odejmowanie(); break; default: break; } if( liczba == 0 ) break; system( "pause" ); } while( liczba != 0 ); return 0; }
program jest pisany w Visual Studio 2017 |
|
rogerpl Temat założony przez niniejszego użytkownika |
» 2018-07-09 02:36:59 problem raczej znalazłem ale sprawdzę to dopiero wieczorem czy wszystko działa do { if( cin.fail() ) { cin.clear(); cin.ignore( numeric_limits < streamsize >::max(), '\n' ); cout << "nie poprawny znak!!!\n\n"; cout << "podaj pierwszą liczbę: "; cin >> a; if( cin.fail() ) { c = 1; } else { c = 2; } } } while( c == 1 );
|
|
rogerpl Temat założony przez niniejszego użytkownika |
» 2018-07-12 21:24:52 po dokonaniu poprawki błąd nadal występuje ale tylko w przypadku drugiej wartości, po trzeciej próbie wpisania złej wartości pętla zostaje przerwana i w zmiennej zostaje zapisana błędna wartość, może mi koś z tym pomóc lub udzielić jakiejś wskazówki? |
|
pekfos |
» 2018-07-12 21:28:43 Jak wygląda kod? |
|
rogerpl Temat założony przez niniejszego użytkownika |
» 2018-07-12 21:31:25 #include <iostream> using namespace std;
void moja_funkcja() { cout << "[1] - dodawanie" << endl; cout << "[2] - odejmowanie" << endl; cout << "[0] - wyjscie z programu" << endl; }
void dodawanie() { float a, b; int c = 2; cout << "podaj pierwszą liczbę: "; cin >> a; do { if( cin.fail() ) { cin.clear(); cin.ignore( numeric_limits < streamsize >::max(), '\n' ); cout << "nie poprawny znak!!!\n\n"; cout << "podaj pierwszą liczbę: "; cin >> a; if( cin.fail() ) { c = 1; } else { c = 2; } } } while( c == 1 ); cout << "podaj drógą liczbę: "; cin >> b; do { if( cin.fail() ) { cin.clear(); cin.ignore( numeric_limits < streamsize >::max(), '\n' ); cout << "nie poprawny znak!!!\n\n"; cout << "podaj drógą liczbę: "; cin >> b; if( cin.fail() ) { c = 1; } else { c = 2; } } } while( c == 0 ); cout << a << " + " << b << " = " << a + b << endl; }
void odejmowanie() { float a, b; int c = 0; cout << "podaj pierwszą liczbę: "; cin >> a; do { if( cin.fail() ) { cin.clear(); cin.ignore( numeric_limits < streamsize >::max(), '\n' ); cout << "nie poprawny znak!!!\n\n"; cout << "podaj pierwszą liczbę: "; cin >> a; if( cin.fail() ) { c = 1; } else { c = 2; } } } while( c == 1 ); cout << "podaj drógą liczbę: "; cin >> b; do { if( cin.fail() ) { cin.clear(); cin.ignore( numeric_limits < streamsize >::max(), '\n' ); cout << "nie poprawny znak!!!\n\n"; cout << "podaj drógą liczbę: "; cin >> b; if( cin.fail() ) { c = 1; } else { c = 2; } } } while( c == 1 ); cout << a << " - " << b << " = " << a - b << endl; }
int main() { setlocale( LC_ALL, "polish" ); int liczba; do { system( "cls" ); cout << "W programie są dostępne następujące opcje:" << endl; moja_funkcja(); cout << "Życzę przyjemnego korzystania z programu" << endl << endl; cin >> liczba; switch( liczba ) { case 1: dodawanie(); break; case 2: odejmowanie(); break; default: break; } if( liczba == 0 ) break; system( "pause" ); } while( liczba != 0 ); return 0; }
|
|
pekfos |
» 2018-07-12 21:46:32 |
|
rogerpl Temat założony przez niniejszego użytkownika |
» 2018-07-12 22:02:53 błąd, już poprawiam, dzięki :D |
|
rogerpl Temat założony przez niniejszego użytkownika |
» 2018-07-12 22:04:51 dzięki, wszystko już działa :) |
|
« 1 » 2 |