cin.clear i cin.sync
Ostatnio zmodyfikowano 2013-05-23 00:02
usmiech Temat założony przez niniejszego użytkownika |
cin.clear i cin.sync » 2013-05-11 00:18:11 Az do tej pory nie do konca widzialem potrzebe czyszczenia strumienia. Pewnie sie to wyda dziwne, ale tak mialem. Ale do tego wieczora, teraz zmienilem zdanie. Jak to sie stalo ? Otoz chcialem uniemozliwic w prosty sposob wysypywanie sie programu kalkulator napisanego chyba przez Monster /jesli cos pomylilem to sorki :)/ jesli uzytkownik wpisze cos innego niz liczbe rzeczywista...I ciezko by to bylo zrobic bez czyszczenia strumienia..zreszta sami porownajcie co sie dzieje.. Zamieszcze dwa kody , pierwszy bez czyszczenia, drugi z cin .. :) #include "stdafx.h" #include <iostream> #include <cstring> #include <cmath> #include <cstdlib> using namespace std; double get_number();
int main() { double liczba1 = 0; double liczba2 = 1; char wybor = ' '; char d = ' '; cout << "Witaj w zabawie kalkulator\n" "Jesli wprowadzisz jakikolwiek znak nie bedacy liczba rzeczywista\n" "Program przypisze jej wartosc 0... :)\n\n"; do { cout << "Wprowadz pierwsza liczbe: "; liczba1 = get_number(); cout << "\n"; cout << "Wybierz opcje dzialania :\n\n" "Dodawanie (+)\n" "Odejmowanie (-)\n" "Mnozenie (*)\n" "Dzielenie (/) :\n"; cin >> wybor; cout << "Wprowadz druga liczbe : "; liczba2 = get_number(); cout << "\n\n"; switch( wybor ) { case '+': cout << liczba1 << " + " << liczba2 << " == " << liczba1 + liczba2 << endl; break; case '-': cout << liczba1 << " - " << liczba2 << " == " << liczba1 - liczba2 << endl; break; case '*': cout << liczba1 << " * " << liczba2 << " == " << liczba1 * liczba2 << endl; break; case '/': if( liczba2 == 0 ) { cout << "Niedozwolone dzielenie!!!!\n"; break;; } else { cout << liczba1 << " / " << liczba2 << " == " << liczba1 / liczba2 << endl; } break; default: cout << "Sorry, ale nie rozpoznalem znaku !!!\n"; break; } cout << "Czy chcesz nadal wykonywac obliczenia ? \n" "Jesli tak to 'y'\n" "Jesli nie to 'n':\n"; cin >> d; } while( d != 'n' ); system( "PAUSE" ); return 0; }
double get_number() { char s[ 100 ]; cin.getline( s, 100 ); if( strlen( s ) == 0 ) return 0.0; if( cin.fail() ) return 0.0; return atof( s ); } //a teraz ten z czyszczeniem #include "stdafx.h" #include <iostream> #include <cstring> #include <cmath> #include <cstdlib> using namespace std; double get_number();
int main() { double liczba1 = 0; double liczba2 = 1; char wybor = ' '; char d = ' '; cout << "Witaj w zabawie kalkulator\n" "Jesli wprowadzisz jakikolwiek znak nie bedacy liczba rzeczywista\n" "Program przypisze jej wartosc 0... :)\n\n"; do { cin.clear(); cin.sync(); cout << "Wprowadz pierwsza liczbe: "; liczba1 = get_number(); cout << "\n"; cout << "Wybierz opcje dzialania :\n\n" "Dodawanie (+)\n" "Odejmowanie (-)\n" "Mnozenie (*)\n" "Dzielenie (/) :\n"; cin >> wybor; cin.clear(); cin.sync(); cout << "Wprowadz druga liczbe : "; liczba2 = get_number(); cout << "\n\n"; switch( wybor ) { case '+': cout << liczba1 << " + " << liczba2 << " == " << liczba1 + liczba2 << endl; break; case '-': cout << liczba1 << " - " << liczba2 << " == " << liczba1 - liczba2 << endl; break; case '*': cout << liczba1 << " * " << liczba2 << " == " << liczba1 * liczba2 << endl; break; case '/': if( liczba2 == 0 ) { cout << "Niedozwolone dzielenie!!!!\n"; break;; } else { cout << liczba1 << " / " << liczba2 << " == " << liczba1 / liczba2 << endl; } break; default: cout << "Sorry, ale nie rozpoznalem znaku !!!\n"; break; } cout << "Czy chcesz nadal wykonywac obliczenia ? \n" "Jesli tak to 'y'\n" "Jesli nie to 'n':\n"; cin >> d; } while( d != 'n' ); system( "PAUSE" ); return 0; }
double get_number() { char s[ 100 ]; cin.getline( s, 100 ); if( strlen( s ) == 0 ) return 0.0; if( cin.fail() ) return 0.0; return atof( s ); } // ciekawe co ? :) // nie patrzcie na grafike czy funkcjonalnosc kalkulatora , bo to nie to bylo moim celem :) |
|
usmiech Temat założony przez niniejszego użytkownika |
» 2013-05-11 01:05:50 << removed >> |
|
DejaVu |
» 2013-05-23 00:02:11 Jako, że wątek nie zawiera pytania, a samą informację to go zamykam ;) |
|
« 1 » |