Praca domowa rozdział 15
Ostatnio zmodyfikowano 2016-11-22 13:06
silvergold Temat założony przez niniejszego użytkownika |
Praca domowa rozdział 15 » 2016-09-06 14:09:21 Witam, proszę o pomoc w poprawieniu kodu. Nie wiem co jest źle, program działa niepoprawnie ;( Nie wyłącza się po wpisaniu 0 i nie działa opcja 4(dzielenie) Oto moje wypociny: #include<iostream> #include<cmath> using namespace std;
int main() { int wynik = 0; int a; int b; int c; do { cout << "obecny wynik to:" << wynik << endl; cin.clear(); cin.sync(); cout << "podaj pierwsza liczbe:" << endl; cin >> a; if( cin.good() ) cout << "podaj druga liczbe:" << endl; cin >> b; if( cin.good() ) { cout << "[1] dodawanie" << endl; cout << "[2] odejmowanie" << endl; cout << "[3] mnozenie" << endl; cout << "[4] dzielenie" << endl; cout << "[5] rezygnuj" << endl; cout << "ktore dzialanie wybierasz?" << endl; cin >> c; switch( c ) { case 1: wynik = a + b; cout << "wynik dodawania:" << wynik << endl; break; case 2: wynik = a - b; cout << "wynik odejmowania:" << wynik << endl; break; case 3: wynik = a * b; cout << "wynik mnozenia:" << wynik << endl; break; case 4: wynik = a % b; cout << "wynik dzielenia:" << wynik << endl; break; case 5: return 0; break; default: cout << "podales bledne dane..." << endl; break; } } } } while( cin.good() );
return 0; }
|
|
carlosmay |
» 2016-09-06 14:54:50 Nie wyłącza się po wpisaniu 0 |
Żaden warunek tego nie uwzględnia. i nie działa opcja 4(dzielenie) |
W tym kodzie nie ma dzielenia. Poza tym program nie ma prawa się skompilować, bo klamerki się nie zgadzają. |
|
silvergold Temat założony przez niniejszego użytkownika |
Poprawiony kod » 2016-09-06 15:09:46 #include "stdafx.h" #include<iostream> #include<cmath> using namespace std;
int main() { int wynik = 0; int a; int b; int c; do { cout << "obecny wynik to:" << wynik << endl; cin.clear(); cin.sync(); cout << "podaj pierwsza liczbe:" << endl; cin >> a; if( cin.good() ) if( a != 0 ) { cout << "podaj druga liczbe:" << endl; cin >> b; } else return 0; if( cin.good() ) if( b != 0 ) { cout << "[1] dodawanie" << endl; cout << "[2] odejmowanie" << endl; cout << "[3] mnozenie" << endl; cout << "[4] dzielenie" << endl; cout << "[5] rezygnuj" << endl; cout << "ktore dzialanie wybierasz?" << endl; cin >> c; switch( c ) { case 1: wynik = a + b; cout << "wynik dodawania:" << wynik << endl; break; case 2: wynik = a - b; cout << "wynik odejmowania:" << wynik << endl; break; case 3: wynik = a * b; cout << "wynik mnozenia:" << wynik << endl; break; case 4: wynik = a / b; cout << "wynik dzielenia:" << wynik << endl; break; case 5: return 0; break; default: cout << "podales bledne dane..." << endl; break; } else return 0; } } } while( a != 0 && b != 0 && c != 0 );
return 0; }
|
|
kirito1996 |
» 2016-09-06 22:15:29 było w kursie o #include<cmath> nie spotkałem się chyba a jestem przy tym samym zadaniu a przy zakończeniu pętli to jeżeli jest "!= 0" to program to przeczyta jako "==" ? i jeszcze jedno mam pytanko na jakiej zasadzie działą tu cin.good() nie trzeba danych przechować w jakieś zmiennej xD ? oczywiście nie musicie odpowiadać ale doinformowałbym się i zaspokoił moją ciekawość xD o jeszcze jedno to pierwsze przecież tam nie wprowadzamy danych więc jakie zadanie to tam ma spełnić ;D |
|
carlosmay |
» 2016-09-06 22:34:30 nie trzeba danych przechować w jakieś zmiennej xD ? |
Zależy do kontekstu, ale można przechowywać w zmiennej. bool czyStanStrumieniaPoprawny = std::cin.good(); if( czyStanStrumieniaPoprawny ) { }
std::cin >> jakasZmienna; if( std::cin.good() ) { } jeżeli jest "!= 0" to program to przeczyta jako "==" ? |
Doprecyzuj bo to jest niezrozumiałe. != - różny od == - równy To dwa różne operatory. |
|
silvergold Temat założony przez niniejszego użytkownika |
odpowiedz » 2016-09-06 22:40:13 Zapis != oznacza "różny od" cin.good() nie zapisywałem w zmiennej bo uznałem, że nie ma sensu. Działa identycznie jak ze zmienną. Sprawdza poprawność wpisanych danych ;) |
|
kirito1996 |
» 2016-09-07 14:58:21 przy operatorach != i == wiem co oznaczają chodziło mi o wyjście z pętli bo w pętli do while jest to na odwrót tzn. pętla zakończy się jak będzie false, chyba dobrze to rozumiem, wiecie może jeszcze co z tą biblioteką #include <cmath> |
|
marcolo2307 |
» 2016-09-07 15:09:42 Pętla trwa tak długo, jak długo warunek jest prawdziwy. cmathEdit: ale po co dołączasz tę bibliotekę, skoro i tak z niej nie korzystasz? |
|
« 1 » 2 3 |