Daghelor Temat założony przez niniejszego użytkownika |
Lekcja 15 - Kalkulator » 2011-09-14 14:50:12 Czy mógłby ktoś sprawdzić czy takie zadanie domowe zda egzamin? #include <iostream> #include <conio.h>
using namespace std;
int main()
{ float a; float b; float c; float d; float e; int cyfra; bool A; bool B; bool C; bool D; bool E; float wynik = 0; bool a1; float wynik1 = 0; float wynik2 = 0; int ileLiczb; do { wynik2 = wynik + wynik1; wynik = 0; cout << "Kalkulator v 1.00\n \n \n" << endl << endl; cout << "Twoj obecny wynik to : " << wynik; cout << endl << endl; do { cout << "Co chcesz zrobic ?\n 1. Dodawac\n 2. Odejmowac\n 3. Mnozyc\n 4. Dzielic \n 5. Rezygnuje" << endl; cin >> cyfra; a1 = cin.good(); cin.clear(); cin.sync(); } while( !a1 ); cout << "Ile liczb chcesz uzyc?\n [2]\n [3]\n [4]\n [5]" << endl; cin >> ileLiczb; cin.clear(); cin.sync(); if( ileLiczb == 2 ) { do { cout << "Podaj pierwsza liczbe : "; cin >> a; A = cin.good(); cin.clear(); cin.sync(); cout << endl; } while( !A ); if( A ) { do { cout << "Podaj druga liczbe : "; cin >> b; B = cin.good(); cin.clear(); cin.sync(); cout << endl; } while( !B ); } } if( ileLiczb == 3 ) { do { cout << "Podaj pierwsza liczbe : "; cin >> a; A = cin.good(); cin.clear(); cin.sync(); cout << endl; } while( !A ); if( A ) do { { cout << "Podaj druga liczbe : "; cin >> b; B = cin.good(); cin.clear(); cin.sync(); cout << endl; } } while( !B ); if( A && B ) do { { cout << "Podaj trzecia liczbe : "; cin >> c; C = cin.good(); cin.clear(); cin.sync(); cout << endl; } } while( !C ); } if( ileLiczb == 4 ) { do { cout << "Podaj pierwsza liczbe : "; cin >> a; A = cin.good(); cin.clear(); cin.sync(); cout << endl; } while( !A ); if( A ) do { { cout << "Podaj druga liczbe : "; cin >> b; B = cin.good(); cin.clear(); cin.sync(); cout << endl; } } while( !B ); if( A && B ) do { { cout << "Podaj trzecia liczbe : "; cin >> c; C = cin.good(); cin.clear(); cin.sync(); cout << endl; } } while( !C ); if( A && B && C ) do { { cout << "Podaj czwarta liczbe : "; cin >> d; D = cin.good(); cin.clear(); cin.sync(); cout << endl; } } while( !D ); } if( ileLiczb == 5 ) { do { cout << "Podaj pierwsza liczbe : "; cin >> a; A = cin.good(); cin.clear(); cin.sync(); cout << endl; } while( !A ); if( A ) do { { cout << "Podaj druga liczbe : "; cin >> b; B = cin.good(); cin.clear(); cin.sync(); cout << endl; } } while( !B ); if( A && B ) do { { cout << "Podaj trzecia liczbe : "; cin >> c; C = cin.good(); cin.clear(); cin.sync(); cout << endl; } } while( !C ); if( A && B && C ) do { { cout << "Podaj czwarta liczbe : "; cin >> d; D = cin.good(); cin.clear(); cin.sync(); cout << endl; } } while( !D ); if( A && B && C && D ) do { { cout << "Podaj piata liczbe : "; cin >> e; E = cin.good(); cin.clear(); cin.sync(); cout << endl; } } while( !E ); } switch( cyfra ) { case 1: if( ileLiczb == 2 ) { wynik = a + b; cout << "Dodaje : " << a << " + " << b << " = " << wynik << endl; cin.clear(); cin.sync(); } if( ileLiczb == 3 ) { wynik = a + b + c; cout << "Dodaje : " << a << " + " << b << " + " << c << " = " << wynik << endl; cin.clear(); cin.sync(); } if( ileLiczb == 4 ) { wynik = a + b + c + d; cout << cout << "Dodaje : " << a << " + " << b << " + " << c << " + " << d << " = " << wynik << endl; cin.clear(); cin.sync(); } if( ileLiczb == 5 ) { wynik = a + b + c + d + e; cout << cout << "Dodaje : " << a << " + " << b << " + " << c << " + " << d << " + " << e << " = " << wynik << endl; cin.clear(); cin.sync(); } break; case 2: if( ileLiczb == 2 ) { wynik = a - b; cout << "Odejmuje : " << a << " - " << b << " = " << wynik << endl; cin.clear(); cin.sync(); } if( ileLiczb == 3 ) { wynik = a - b - c; cout << "Odejmuje : " << a << " - " << b << " - " << c << " = " << wynik << endl; cin.clear(); cin.sync(); } if( ileLiczb == 4 ) { wynik = a - b - c - d; cout << cout << "Odejmuje : " << a << " - " << b << " - " << c << " - " << d << " = " << wynik << endl; cin.clear(); cin.sync(); } if( ileLiczb == 5 ) { wynik = a - b - c - d - e; cout << cout << "Odejmuje : " << a << " - " << b << " - " << c << " - " << d << " - " << e << " = " << wynik << endl; cin.clear(); cin.sync(); } break; case 3: if( ileLiczb == 2 ) { wynik = a * b; cout << "Mnoze : " << a << " * " << b << " = " << wynik << endl; cin.clear(); cin.sync(); } if( ileLiczb == 3 ) { wynik = a * b * c; cout << "Mnoze : " << a << " * " << b << " * " << c << " = " << wynik << endl; cin.clear(); cin.sync(); } if( ileLiczb == 4 ) { wynik = a * b * c * d; cout << cout << "Mnoze : " << a << " * " << b << " * " << c << " * " << d << " = " << wynik << endl; cin.clear(); cin.sync(); } if( ileLiczb == 5 ) { wynik = a * b * c * d * e; cout << cout << "Odejmuje : " << a << " * " << b << " * " << c << " * " << d << " * " << e << " = " << wynik << endl; cin.clear(); cin.sync(); } break; case 4: wynik = a / b; cout << "Dziele : " << a << " / " << b << " = " << wynik << endl; cin.clear(); cin.sync(); break; case 5: cout << "Dziekujemy za skorzystanie"; cin.clear(); cin.sync(); break; default: cout << "Nie ma takiej opcji"; break; } getch(); cout << endl; } while( cyfra != 5 ); cin.clear(); cin.sync(); getch(); return 0; }
Tylko niestety nie wiem.. jak z tym wynikiem , za każdym razem mi się resetuje. |
|
Figlu |
» 2011-09-14 15:18:24 usuń z kodu tę linijkę(na samym początku): wynik = 0; albo nawet : wynik2 = wynik + wynik1; wynik = 0; bo nie wiem po co są te 3 wyniki, a bez nich tez działa ;) chodzilo o to ze za kazdym razem na początku program zamiast wyniku działania przypisuje 0 |
|
Daghelor Temat założony przez niniejszego użytkownika |
» 2011-09-14 15:20:05 Tak , zauważyłem to , no ale jak zrobić , żeby wypisywał obecny wynik ? I go zsumował przede wszystkim. |
|
Eatos |
» 2011-09-14 15:21:26 Spostrzeżenie nr 1: O Matko ile kodu :D #2: Wynik się zeruje bo sam go takim ustawiasz na początku pętli - potem taki wyzerowany już wypisujesz. #3: No jak działa ( a działa), spełnia swoja fukcję (a spelnia) to teoretycznie jest dobrze. #4: Żeby podawał aktualne wyniki zawsze to możesz np. zostawić tą jedną zmienną wynik właśnie na tę operację, działania składowe (ich wyniki) na innej zmiennej i pobawić się z += -= *= /= #5: No i można to trochę opakować bardziej, na plus dla Ciebie, że się w tym nie zaplątałeś w tylu warunkach, bedziesz miał śwetny program do edytowania jak pójdziesz dalej z lekcjami :). Co można juz teraz uprościć ? do { a1 = cin.good(); } while( !a1 );
wszystkie pozostałe pętle też, jak wpadniesz na to o co chodzi to się pozbedziesz połowy zmiennych z programu :). if( ileLiczb == 2 ) { do { } while( !A ); if( A ) { do { } while( !B );
Takie kombinacje ze sprawdzaniem czy if( A ) nie są w gruncie rzeczy potrzebne, wynik z góry jest oczywisty w tym przypadku, sam się nad tym zastanów dlaczego. Program "idzie" po kolei - podpowiem ( if( A && B && C && D ) ) Ale jest dobrze i tego się trzymamy :P |
|
Daghelor Temat założony przez niniejszego użytkownika |
» 2011-09-14 15:24:42 Wiem , że z tym kodem przesadziłem , ale nudziło mi się w wieczór, i nie chce się zakończyć gdy [5] Rezygnuję jest wybierane |
|
Figlu |
» 2011-09-14 15:25:21 wynik = wynik1 + wynik; wynik1 = wynik;
wpisz to zamiast wyzej wymienionych linijek co do zakańczania to nie sprawdzałem całego kodu... ale wpisz cos w stylu: if( zmienna = 5 ) { cout << "papa"; return 0; } |
|
Daghelor Temat założony przez niniejszego użytkownika |
» 2011-09-14 15:32:17 Ok , wynik pokazuje , zakonczyłem jak radziłeś If'em ale mi to spokoju nie daje , bo chciałem zakończyć pętlą. @Down , Tak zrobiłem , ale chciałem zakończyć na samym dole , no ale cóż Dziękuje , można zamknąć. |
|
Figlu |
» 2011-09-14 15:33:47 ja poprawilem tak pierwszą pętle i działa (chyba bo wszystkiego nie sprawdzałem): do { cout << "Co chcesz zrobic ?\n 1. Dodawac\n 2. Odejmowac\n 3. Mnozyc\n 4. Dzielic \n 5. Rezygnuje" << endl; cin >> cyfra; a1 = cin.good(); cin.clear(); cin.sync(); if( cyfra = 5 ) { cout << "narazie\n\n"; system( "PAUSE" ); return 0; } } while( !a1 ); |
|
« 1 » 2 |