Praca domowa do lekcji 15
Ostatnio zmodyfikowano 2015-07-31 17:04
tusiera Temat założony przez niniejszego użytkownika |
Praca domowa do lekcji 15 » 2015-07-31 00:14:53 Proszę o sprawdzenie pracy domowej do lekcji 15. #include <iostream> using namespace std;
int main() { int liczba; bool wczytano; do { cout << "Podaj liczbe " << endl; cin >> liczba; cout << "Czy wpisano prawidlowa liczbe? " << cin.good() << endl; wczytano = cin.good(); cin.clear(); cin.sync(); if( wczytano == true ) cout << "Twoja liczba to " << liczba << endl; else cout << "Blad, podaj liczbe " << endl; } while( wczytano != true ); return 0; }
|
|
carlosmay |
» 2015-07-31 07:52:51 Czyszczenie strumienia cin.clear(); cin.sync(); cin >> liczba;
daj przed wprowadzeniem liczby. Dobry nawyk. while( wczytano != true );
Jeśli kod działa to praca zrobiona. |
|
tusiera Temat założony przez niniejszego użytkownika |
» 2015-07-31 11:43:50 Ok ;) Dziękuję za wskazówki. |
|
tusiera Temat założony przez niniejszego użytkownika |
Druga część pracy domowej - kalkulator. » 2015-07-31 15:05:50 Program się kompiluje, jakieś wskazówki? #include <iostream> using namespace std;
float a; float b; bool wczytano; bool wczytano1; bool wczytano2;
void wpisywanie() { cout << "Podaj a " << endl; cin >> a; wczytano1 = cin.good(); cin.clear(); cin.sync(); if( wczytano1 == true ) { cout << "Podaj b " << endl; cin >> b; wczytano2 = cin.good(); cin.clear(); cin.sync(); if( wczytano2 == true ) { cout << "a+b = " << a + b << endl; } else cout << "Aby wykonac obliczenia wpisz liczbe" << endl; } else cout << "Aby wykonac obliczenia wpisz liczbe" << endl; }
int main() { int liczba; bool wczytano; do { cout << "" << endl; cout << "[1] Dodawanie " << endl; cout << "[2] Odejmowanie " << endl; cout << "[3] Mnozenie " << endl; cout << "[4] Dzielenie " << endl; cout << "[5] Rezygnuj " << endl; cout << "Wybierz numer zadania, ktore chcesz wykonac " << endl; cin >> liczba; cout << "Czy wpisano liczbe? " << cin.good() << endl; wczytano = cin.good(); cin.clear(); cin.sync(); if( wczytano == true && liczba >= 1 && 5 > liczba ) switch( liczba ) { case 1: cout << "Wybrales dodawanie " << endl; wpisywanie(); break; case 2: cout << "Wybrales odejmowanie " << endl; cout << "Podaj a " << endl; cin >> a; wczytano1 = cin.good(); cin.clear(); cin.sync(); if( wczytano1 == true ) { cout << "Podaj b " << endl; cin >> b; wczytano2 = cin.good(); cin.clear(); cin.sync(); if( wczytano2 == true ) { cout << "a-b = " << a - b << endl; } else cout << "Aby wykonac obliczenia wpisz liczbe" << endl; } else cout << "Aby wykonac obliczenia wpisz liczbe" << endl; break; case 3: cout << "Wybrales mnozenie " << endl; cout << "Podaj a " << endl; cin >> a; wczytano1 = cin.good(); cin.clear(); cin.sync(); if( wczytano1 == true ) { cout << "Podaj b " << endl; cin >> b; wczytano2 = cin.good(); cin.clear(); cin.sync(); if( wczytano2 == true ) { cout << "a*b = " << a * b << endl; } else cout << "Aby wykonac obliczenia wpisz liczbe" << endl; } else cout << "Aby wykonac obliczenia wpisz liczbe" << endl; break; case 4: cout << "Wybrales dzielenie " << endl; cout << "Podaj a " << endl; cin >> a; wczytano1 = cin.good(); cin.clear(); cin.sync(); if( wczytano1 == true ) { cout << "Podaj b " << endl; cin >> b; wczytano2 = cin.good(); cin.clear(); cin.sync(); if( b == 0 ) { cout << "Nie mozna dzielic przez 0! Zacznij od nowa" << endl; } else if( wczytano2 == true ) { cout << "a/b = " << a / b << endl; } else cout << "Aby wykonac obliczenia wpisz liczbe" << endl; } else cout << "Aby wykonac obliczenia wpisz liczbe" << endl; break; } else if( liczba == 5 ) cout << "koniec programu" << endl; else cout << "Aby wykonac obliczenia wpisz liczbe od 1 do 4" << endl; } while( liczba != 5 ); return 0; }
|
|
carlosmay |
» 2015-07-31 15:47:46 Druga część pracy domowej to inny temat. Jeden temat = jeden problem. Możesz dużo skrócić ten program. Masz dwie zmienne wczytano1 i wczytano2. Zapisujesz w nich wartość typu bool. Jeśli poprawnie wczytano1 jest true. Tym samym jak wyżej nie musisz porównywać tej zmiennej do true, bo ona sama w sobie jest true. Jeśli wczytywanie jest niepoprawne to wartość jest false, czyli Czyszczenie strumienia C/C++ cin.clear(); cin.sync(); cin >> liczba; daj przed wprowadzeniem liczby.
|
Nie musisz pisać dwóch if'ów: wczytano1 = cin.good();
wczytano2 = cin.good();
if( wczytano1 && wczytano2 ) { }
|
|
JMII89 |
» 2015-07-31 16:14:38 Nie musisz robić : bool wczytano = false; std::cout << "Podaj liczbe : "; std::cin >> liczba; wczytano = std::cin.good();
std::cin.clear(); std::cin.sync();
if( wczytano ) { }
Krócej można zrobić to w pętli while i nie trzeba robić nie potrzebnego ifa i zmiennej bool. do { std::cout << "Podaj liczbe : "; std::cin.clear(); std::cin.sync(); std::cin >> liczba; } while( !std::cin.good() );
|
|
tusiera Temat założony przez niniejszego użytkownika |
» 2015-07-31 17:04:44 Ok, wykorzystam te informacje przy pisaniu kolejnych programów w kursie, dziękuję i życzę udanego weekendu ;) |
|
« 1 » |