Poziom 2 Lekcja 1, błąd w kodzie.
Ostatnio zmodyfikowano 2015-08-10 18:49
gucio6 Temat założony przez niniejszego użytkownika |
Poziom 2 Lekcja 1, błąd w kodzie. » 2015-08-10 13:23:26 KOD: [spoiler] #include <iostream> #include <stdlib.h> #include <math.h> using namespace std;
int main() { int a, b; cout << "Podaj pierwsza liczbe: "; cin >> a; cout << "Podaj druga liczbe : "; cin >> b; if( a == 0 || b == 0 ) cout << "Liczba nie moze byc rowna 0." << endl; else { cout << "[1] dodawanie." << endl; cout << "[2] odejmowanie." << endl; cout << "[3] mnozenie." << endl; cout << "[4] dzielenie." << endl; cout << "[5] Wyjdz" << endl; cout << "Wybieram: "; } int w_dzial; cin >> w_dzial; do { if( w_dzial < 1 && w_dzial > 5 ) { cout << "Tylko 1-5!!!"; } } while( w_dzial >= 1 && w_dzial <= 5 ); { switch( w_dzial ) { case 1: cout << a + b << endl; break; case 2: cout << a - b << endl; break; case 3: cout << a * b << endl; break; case 4: cout << a / b << endl; break; case 5: system( "pause" ); break; } } system( "pause" ); return 0; } [/spoiler] po "wybraniu" dalszej czynnośći program się kończy, tak samo gdy wybiorę liczbę większą niż 5 lub mniejszą niż 1... Prosił bym o napisanie gdzie i co muszę zmienić ;p |
|
JMII89 |
» 2015-08-10 13:46:35 Po pierwsze ten els'e jest za krótki . Klamra kończąca powinna być za switchem ponieważ teraz nawet jak ktoś wpisze do a lub b 0 to kod po elsie się wykona.
Po drugie w tym ifie pewnie chodziło ci,żeby te dwie liczby nie były równe 0 więc powinno być && a nie ||.
Po trzecie ta klamra przed switchem i po switchu jest bez sensu bo nie ma przed nim żadnego ifa ani else'a.
Po czwarte ten while jest kompletnie bez sensu na co wchodzisz w pętle która będzie się wykonywać w nieskończoność a do tego nie wypisze niczego ponieważ wybór nie może być większy lub równy 1 i mniejszy od 1 oraz mniejszy lub równy 5 i większy od 5 |
|
gucio6 Temat założony przez niniejszego użytkownika |
» 2015-08-10 18:16:58 hmmm, poprawiłem jednak dalej to samo, wydaje mi się że problem jest tam gdzie dałem oznaczenie. proszę o pomoc, jeżeli problem kwi w tym, jak mogę to rozwiązac? #include <iostream> #include <stdlib.h> #include <math.h> using namespace std;
int main() { int a, b; int w_dzial; cout << "Podaj pierwsza liczbe: "; cin >> a; cout << "Podaj druga liczbe : "; cin >> b; if( a == 0 || b == 0 ) cout << "Liczba nie moze byc rowna 0." << endl; else { cout << "[1] dodawanie." << endl; cout << "[2] odejmowanie." << endl; cout << "[3] mnozenie." << endl; cout << "[4] dzielenie." << endl; cout << "[5] Wyjdz" << endl; cout << "Wybieram: "; cin >> w_dzial; do { if( w_dzial < 1 && w_dzial > 5 ) { cout << "Tylko 1-5!!!"; } } while( w_dzial > 0 ); switch( w_dzial ) { case 1: cout << a + b << endl; break; case 2: cout << a - b << endl; break; case 3: cout << a * b << endl; break; case 4: cout << a / b << endl; break; case 5: system( "pause" ); break; } } system( "pause" ); return 0; } |
|
pekfos |
» 2015-08-10 18:38:56 do { if( w_dzial < 1 && w_dzial > 5 ) { cout << "Tylko 1-5!!!"; } } while( w_dzial > 0 );
|
Dodaj na początek tej pętli wczytywanie w_dzial. Nic tu nie modyfikuje tej zmiennej, więc to pętla nieskończona, lub żadna. |
|
carlosmay |
» 2015-08-10 18:45:16 while( w_dzial < 1 || w_dzial > 5 );
|
|
gucio6 Temat założony przez niniejszego użytkownika |
» 2015-08-10 18:49:44 Wielkie dzięki pekfos, jednak ta zmienna przecież jest <chyba> zdefiniowana w: int main() { int a, b; int w_dzial; cout << "Podaj pierwsza liczbe: "; cin >> a; |
|
« 1 » |