Rozdział 15 praca domowa kalkulator
Ostatnio zmodyfikowano 2015-07-16 16:28
Xercis Temat założony przez niniejszego użytkownika |
Rozdział 15 praca domowa kalkulator » 2015-07-09 13:40:48 Witam mam problem napisałem kalkulator tak jak trzeba tylko jedna opcja mi nie działa mianowicie gdy a będzie wynosić 0 lub b będzie wynosić 0 to powinien mi program się zamknąć a tak nie jest zamyka się dopiero wtedy gdy mam do wyboru 5 wariantów i wpisze 0 o to mój kod #include <iostream> using namespace std; int main() { int wybor; int a, b; cout << "\t\t********************************" << endl; cout << "\t\t* witaj w kalkulatorze Xercisa *" << endl; cout << "\t\t* wersja v2.0 *" << endl; cout << "\t\t* milej zabawy *" << endl; cout << "\t\t********************************" << endl; do { do { cout << "\npodaj liczbe a: "; cin.clear(); cin.sync(); cin >> a; if( cin.fail() ) cout << "\nnie podales liczby a " << endl; if( cin.good() ); } while( !cin.good() ); do { cout << "\npodaj liczzbe b: "; cin.clear(); cin.sync(); cin >> b; if( cin.fail() ) cout << "\nnie podales liczby b " << endl;; if( cin.good() ); } while( !cin.good() ); cout << "\n\nwybierz dzialanie "; do { cout << "\n\n1 dodawanie " << endl; cout << "2 odejmowanie " << endl; cout << "3 mnozenie " << endl; cout << "4 dzielenie " << endl; cout << "5 rezygnuj " << endl; cin.clear(); cin.sync(); cin >> wybor; if( cin.fail() ) cout << "\nnie wybrales zadnego wariantu " << endl; if( cin.good() ) cout << "\nwybrales wariant " << wybor; } while( !cin.good() ); switch( wybor ) { case 1: cout << "\nwybrales dodawanie "; cout << "\nwynik " << a + b; break; case 2: cout << "\nwybrales odejmowanie "; cout << "\nwynik " << a - b; break; case 3: cout << "\nwybrales mnozenie "; cout << "\nwynik " << a * b; break; case 4: cout << "\nwybrales dzielenie "; cout << "\nwynik " << a / b; break; case 5: cout << "\nrezygnujesz "; break; } } while( a != 0 || b != 0 ); cout << "\nkoniec programu"; return 0; }
|
|
darko202 |
» 2015-07-09 13:49:34 skoro znasz warunek po którym należy przerwać program
if( a==0 && b==0) return;
to powinieneś go dodać w odpowiednim miejscu kodu tzn gdzieś przed
cin >> wybor;
|
|
pekfos |
» 2015-07-09 13:52:00 mianowicie gdy a będzie wynosić 0 lub b będzie wynosić 0 to powinien mi program się zamknąć |
while( a != 0 || b != 0 );
|
W kodzie napisałeś, że pętla skończy się gdy obie wartości będą zerami, a nie jedna z nich. Podobnie jak tu, piszesz program niezgodnie z treścią zadania.. [Rozdział 15] Proszę o sprawdzenie zadaniaa tak nie jest zamyka się dopiero wtedy gdy mam do wyboru 5 wariantów i wpisze 0 |
Bo pytasz usera o wariant niezależnie od podanych wcześniej wartości. |
|
Deivid |
» 2015-07-09 14:55:44 Pekfos - zamknałeś mój temat, zgodnie z regulaminem. Aby nie zaśmiecać forum i ewentualnie pomóc autorowi tematu i sobie. Aby zgodnie z poleceniem program zamykał się przy wprowadzeniu zmiennej=0 wystarczy w kodzie wprowadzić warunek if( a == 0 ) { return 0; } ? PS. Do autora. To samo co mi napisał Pekfos w moim temacie, musisz użyć tylko jednej zmiennej do wprowadzania liczb i jednej zmiennej do wyboru w switch. |
|
Elefant |
» 2015-07-13 15:28:15 #include <iostream>
using namespace std;
int main() { int liczba1; int liczba2; int dzialanie;
do {
cout << "Podaj liczbe a: "; cin >> liczba1; if(cin.fail()) do { cin.clear(); cin.sync(); cout << "Podana liczba jest nie prawidlowa, sprobuj jeszcze raz: "; cin >> liczba1; }while(cin.fail());
cout << "Podaj liczbe b: "; cin >> liczba2; if (cin.fail()) do { cin.clear(); cin.sync(); cout << "Podana liczba jest nie prawidlowa, sprobuj jeszcze raz: "; cin >> liczba2; }while(cin.fail());
if (liczba1!=0 && liczba2!=0) { do { cin.clear(); cin.sync(); cout << "Wybierz dzialanie ktore ma zostac wykonane:" << endl; cout << "[1] dodawanie" << endl; cout << "[2] odejmowanie" << endl; cout << "[3] mnozenie" << endl; cout << "[4] dzielenie"<< endl; cin >> dzialanie; }while(cin.fail()); switch(dzialanie) { case 1: cout << "Wybrano opcje dodawania = "; cout << (liczba1+liczba2); break; case 2: cout << "Wybrano opcje odejmowania = "; cout << (liczba1-liczba2); break; case 3: cout << "Wybrano opcje mnozenia = "; cout << (liczba1*liczba2); break; case 4: cout << "Wybrano opcje dzielenia = "; cout << (liczba1/liczba2); break; }cout << endl;cout <<endl;
}
}while(liczba1!=0 && liczba2!=0);
}
czy ten kod jest zgodny z treścia zadania? |
|
Deivid |
» 2015-07-16 16:28:28 Elefant - Niestety jest źle. Musisz mieć wynik do którego dodasz zmienną liczbę. A wiec w pierwszym działaniu Twoim wynikiem jest 0, i do niego dodajesz następujące zmienne. Pętla ma do poprzedniego wyniku wykonać działanie na nowej liczbie. A więc: float zmienna_a;
case 1: { cout << "dodawanie: " << wynik << "+" << zmienna_a << "="; wynik += zmienna_a; cout << wynik;
EDIT: Przepraszam, pomyliły mi się lekcje. |
|
« 1 » |