Lekcja 15. Zad 2
Ostatnio zmodyfikowano 2012-02-19 23:48
za8ol Temat założony przez niniejszego użytkownika |
Lekcja 15. Zad 2 » 2012-02-19 21:29:45 Witam mam prośbę przerobiłem czyjść kod żeby nie działał w sposób podaj liczbę a ,b a później wybierz działanie . Tylko najpierw wybierz działanie później podaj liczby i wszystko jest dobrze do momentu wyniku. Wynik jest dobry natomiast idzie idzie idzie i się nie kończy gdzie jest błąd ? Natomiast 2 pytanie to po wybraniu 6 nie kończy programu a prosi o podanie a i b
#include <iostream>
using namespace std;
int main() { cout << "Kalkulator prosty\n" "[1] dodawanie \n" "[2] odejmowanie a - b \n" "[3] odejmowanie b-a \n" "[4] mnozenie \n" "[5] dzielenie \n" "[6] rezygnuje \n"; float a; float b; int dzialanie; cin >> dzialanie; cin.clear(); cin.sync(); do { cout << "Podaj liczbe a: " << endl; cin >> a; cin.clear(); cin.sync(); if( a == 0 ) cout << "Musisz podac liczbe wieksza od 0 \n" "Podaj liczby jeszcze raz: " << endl; } while( a == 0 ); do { cout << "Podaj liczbe b:" << endl; cin >> b; cin.clear(); cin.sync(); if( b == 0 ) cout << "Musisz podac liczbe wieksza od 0 \n" "Podaj liczby jeszcze raz: " << endl; } while( b == 0 ); do { switch( dzialanie ) { case 1: cout << "Wynik dodawania: " << a + b << endl; break; case 2: cout << "Wynik odejmowania a-b: " << a - b << endl; break; case 3: cout << "Wynik odejmowania b-a: " << b - a << endl; break; case 4: cout << "Wynik mnozenia: " << a * b << endl; break; case 5: cout << "Wynik dzielenia: " << a / b << endl; break; } } while(( dzialanie >= 1 ) &&( dzialanie <= 5 ) ); cout << "Rezygnuje \n\n" << endl; cout << "Koniec" << endl; return 0; }
|
|
Hoop300 |
» 2012-02-19 21:53:26 spróbuj zez tyh nawiasów na końcu pętli |
|
za8ol Temat założony przez niniejszego użytkownika |
lek15 » 2012-02-19 21:58:32 usunięcie nie pomaga jest to samo czyli np 4 i 4 wynik 16 leci leci i nie zatrzymuje się . Po wybraniu 6 prosi o zmienne kiedy podam a i b =6 to powie ze koniec |
|
SeaMonster131 |
» 2012-02-19 22:22:55 Twój program robi coś takiego: 1. Podajesz działanie 2. Podajesz liczbę a 3. Podajesz liczbę b 4. Jeżeli działanie >= 1 i działanie <= 5 to wypisz wynik Punkt 4 nie będzie się wykonywał kiedy działanie będzie < 1 albo > 5. Ale że wybrałeś konkretne działanie, to będzie się wykonywał cały czas. Innymi mówiąc, w tym przypadku stworzyłeś pętle nieskończoną ;) Pomyśl, jak to można zrobić inaczej. Natomiast 2 pytanie to po wybraniu 6 nie kończy programu a prosi o podanie a i b |
Nie ma się co dziwić, skoro po wybraniu działania użytkownik od razu proszony jest o podanie liczb :) |
|
za8ol Temat założony przez niniejszego użytkownika |
» 2012-02-19 22:53:14 while(( dzialanie >= 1 ) &&( dzialanie >= 5 ) );
To pomogło co do wyniku i niepowtarzania się . Natomiast z 6. Rezygnuj ni jak mi nie wychodzi ani jak stworzę case 6 ani jak stworze if dzialanie >=6 :( |
|
za8ol Temat założony przez niniejszego użytkownika |
» 2012-02-19 23:48:52 Natomiast drugą częśc zrobiłem tak i działa . Chciałbym się dowiedzieć tylko czy jest to poprawne a raczej jak zrobić żeby po rezygnuje program się zakończył a nie wypisał tylko ZREZYGNOWAŁEŚ:
do
{ switch( dzialanie ) { case 6: cout << "ZREZYGNOWALES " << endl; break; } while( dzialanie >= 6 ); { cout << "Podaj liczbe a: " << endl; cin >> a; cin.clear(); cin.sync(); if( a == 0 ) cout << "Musisz podac liczbe wieksza od 0 \n" "Podaj liczby jeszcze raz: " << endl; } while( a == 0 ); cout << "Podaj liczbe b:" << endl; cin >> b; cin.clear(); cin.sync(); if( b == 0 ) cout << "Musisz podac liczbe wieksza od 0 \n" "Podaj liczby jeszcze raz: " << endl; } while( b == 0 );
...
|
|
« 1 » |