[lekcja 18]kalkulator, sprawdzenie.
Ostatnio zmodyfikowano 2012-12-23 00:27
Leo Temat założony przez niniejszego użytkownika |
[lekcja 18]kalkulator, sprawdzenie. » 2012-12-15 22:36:54 Witam, mam problem nie codzienny. Nie jest nim brak satysfakcjonującego działania programu jakim jest kalkulator.
Chiałbym po prostu się dowiedzieć, czy i jak pewne kwestie można by zrobić lepiej. Czy kod jest czytelny, i
w miarę dobrze napisany ? Myślę że zabezpieczyłem go w wystarczający sposób przed zwyklą złośliwością "użytkownika",
ktoś udowodni mi że się mylę ? ;>
#include <iostream> int main() { int wyjscie; int wyjscie2; int decyzja; double a; double b; do { std::cin.clear(); std::cin.sync(); std::cout << "podaj pierwsza dowolna liczbe calkowita "; std::cout << std::endl; std::cin >> a; std::cout << std::endl; if( std::cin.good() < 1 ) { std::cout << "Podana wartosc nie jest liczba calkowita. " << std::endl; } } while( !std::cin.good() > 0 ); std::cout << std::endl; do { std::cin.clear(); std::cin.sync(); std::cout << "podaj druga dowolna liczbe calkowita "; std::cout << std::endl; std::cin >> b; std::cout << std::endl; if( std::cin.good() < 1 ) { std::cout << "Podana wartosc nie jest liczba calkowita. " << std::endl; } } while( !std::cin.good() > 0 ); std::cout << std::endl; std::cout << std::endl; std::cout << std::endl; do { std::cout << " ========================" << std::endl; std::cout << " = Pierwsza liczba to " << a << " =" << std::endl; std::cout << " = Druga liczba to " << b << " =" << std::endl; std::cout << " ========================" << std::endl << std::endl << std::endl; std::cout << "Chcialbys dodawac, odejmowac, mnozyc, czy tez dzielic ?" << std::endl; std::cout << "1. dodawanie" << std::endl; std::cout << "2. odejmowanie" << std::endl; std::cout << "3. mnozenie" << std::endl; std::cout << "4. dzielenie" << std::endl; std::cout << "5. zmien pierwsza liczbe" << std::endl; std::cout << "6. zmien druga liczbe" << std::endl; std::cout << "7. wyjscie" << std::endl; std::cout << std::endl; std::cin >> decyzja; switch( decyzja ) { case 1: std::cout << std::endl; std::cout << "dodawanie, " << a << " + " << b << std::endl << std::endl; std::cout << "twoj wynik to = " << a + b << std::endl; break; case 2: std::cout << std::endl; std::cout << "odejmowanie, " << a << " - " << b << std::endl << std::endl; std::cout << "twoj wynik to = " << a - b << std::endl; break; case 3: std::cout << std::endl; std::cout << "mnozenie, " << a << " * " << b << std::endl << std::endl; std::cout << "twoj wynik to = " << a * b << std::endl; break; case 4: std::cout << std::endl; if( b == 0 ) { std::cout << "Nie dziel cholero przez 0!" << std::endl; std::cout << "W takim razie koniec programu." << std::endl; return( 0 ); } std::cout << "dzielenie, " << a << " / " << b << std::endl << std::endl; std::cout << "twoj wynik to = " << a / b << std::endl; break; case 5: do { std::cin.clear(); std::cin.sync(); std::cout << "podaj pierwsza dowolna liczbe calkowita "; std::cout << std::endl; std::cin >> a; std::cout << std::endl; if( std::cin.good() < 1 ) { std::cout << "Podana wartosc nie jest liczba calkowita. " << std::endl; } } while( !std::cin.good() > 0 ); break; case 6: do { std::cin.clear(); std::cin.sync(); std::cout << "podaj druga dowolna liczbe calkowita "; std::cout << std::endl; std::cin >> b; std::cout << std::endl; if( std::cin.good() < 1 ) { std::cout << "Podana wartosc nie jest liczba calkowita. " << std::endl; } } while( !std::cin.good() > 0 ); case 7: wyjscie = 1; break; default: std::cout << std::endl; std::cout << "Mialo byc od 1 do 7 ;>" << std::endl; break; } if( wyjscie != 1 ) { std::cout << "_______________________________" << std::endl << std::endl << std::endl; std::cout << "Nowe dzialanie." << std::endl << std::endl; } } while( wyjscie != 1 ); std::cout << std::endl; std::cout << "koniec programu" << std::endl; }
|
|
Mrovqa |
» 2012-12-16 13:01:15 Myślę że zabezpieczyłem go w wystarczający sposób przed zwyklą złośliwością "użytkownika", ktoś udowodni mi że się mylę ? ;> |
Pomnóż/podziel -2147483647 -2147483648 przez -1 :) Co do jakości kodu - im więcej będziesz pisał, tym lepiej będziesz to robił. Zobaczysz co jest wygodne, co nie, jak organizować kod, dzielić go na pliki, klasy, funkcje itp. @down fakt, pomyliłem się o 1 :P Coś dziwnie, bo kopiowałem z cplusplus reference... :/ |
|
Elaine |
» 2012-12-16 14:11:22 Pomnóż/podziel -2147483647 przez -1 |
Bez problemu. -2147483647 * (-1) = 2147483647 -2147483647 / (-1) = 2147483647 |
|
Leo Temat założony przez niniejszego użytkownika |
» 2012-12-22 22:11:33 W tym wypadku problemem jest wielkość zmiennej double, czy to coś innego ?
Jeśli tak to można zrobić proste zabezpieczenie nie pozwalające na używanie liczb większych niz 2147483647.
Jeśli chodzi o styl - czy akceptowalny jest nawyk nie uczenia się na pamięć, dokładnej budowy części kodu,
tylko posiłkowanie się gotowymi teoretycznymi przykładami ? Np. zamiast pamiętać dokładniej zapis komendy rand () lub dokładnego wpisywania argumentów w funkcji kopiuję ją w całości z np. wcześniejszej pracy itd. . Jakoś nie muszę przypominać sobie jak to działa ( zmieniam dane i gotowe ), a oszczędza czasem sporo czasu.
Nawyk wyrobiony w zamieszchłych czasach na informatyce podczas nauki html - szablon, puste przykładowe tabele i jazda, w 8 minut strona gotowa. |
|
CodeMeister |
» 2012-12-23 00:27:45 hmm... to zależy - funkcje, które często będziesz używał wypada pamiętać a reszta może być tak jak pisałeś |
|
« 1 » |