po wyjsciu z petli zmienna przyjmuje wartosc 1 pomimo innej wartości źródłowej
Ostatnio zmodyfikowano 2014-09-28 18:53
groosik Temat założony przez niniejszego użytkownika |
po wyjsciu z petli zmienna przyjmuje wartosc 1 pomimo innej wartości źródłowej » 2014-09-28 17:26:08 Ktoś pomoże? Wklejam kawałek kodu: cout << "Legenda:" << endl << "[1] - dodawanie" << endl << "[2] - odejmowanie" << endl << "[3] - mnozenie" << endl << "[4] - dzielenie" << endl << endl << "Wprowadz liczbe odpowiadajaca danemu dzialaniu: "; cin >> znak; cin.clear(); cin.sync();
if( !( znak =( 1 || 2 || 3 || 4 ) ) ) do { cout << "Blad. Wprowadz wartosc z zakresu 1-4: "; cin >> znak; cin.clear(); cin.sync(); } while( !( znak =( 1 || 2 || 3 || 4 ) ) );
cout << "znak: " << znak;
W razie potrzeby tutaj jest cały program: #include <iostream> using namespace std; int main() { int a, b, znak, wynik; bool good, good2; cout << "podaj pierwsza liczbe: "; cin >> a; good = cin.good(); cin.clear(); cin.sync(); if( good != 1 ) do { cout << "Blad! Podaj wartosc liczbowa: "; cin >> a; good = cin.good(); cin.clear(); cin.sync(); } while( good != 1 ); cout << "Legenda:" << endl << "[1] - dodawanie" << endl << "[2] - odejmowanie" << endl << "[3] - mnozenie" << endl << "[4] - dzielenie" << endl << endl << "Wprowadz liczbe odpowiadajaca danemu dzialaniu: "; cin >> znak; cin.clear(); cin.sync(); if( !( znak =( 1 || 2 || 3 || 4 ) ) ) do { cout << "Blad. Wprowadz wartosc z zakresu 1-4: "; cin >> znak; cin.clear(); cin.sync(); } while( !( znak =( 1 || 2 || 3 || 4 ) ) ); cout << "znak: " << znak; cout << "Podaj druga liczbe: "; cin >> b; good2 = cin.good(); cin.clear(); cin.sync(); if( good2 != 1 ) do { cout << "Blad! Podaj wartosc liczbowa: "; cin >> b; good2 = cin.good(); cin.clear(); cin.sync(); } while( good2 != 1 ); else switch( znak ) { case 1: wynik = a + b; cout << "Wynik:" << a << "+" << b << "=" << wynik; break; case 2: wynik = a - b; cout << "Wynik:" << a << "-" << b << "=" << wynik; break; case 3: wynik = a * b; cout << "Wynik:" << a << "*" << b << "=" << wynik; break; case 4: cout << "Wynik:" << a << "/" << b << "=" << wynik; wynik = a / b; break; } return 0; }
|
|
kubawal |
» 2014-09-28 17:49:36 Jaka zmienna? Po której pętli? |
|
pekfos |
» 2014-09-28 18:11:20 if( !( znak =( 1 || 2 || 3 || 4 ) ) )
|
Mylisz operatory i wymyślasz sobie struktury języka. Ten warunek jest zawsze fałszywy i przypisuje 1 do znak. |
|
groosik Temat założony przez niniejszego użytkownika |
» 2014-09-28 18:49:48 dzięki za pomoc, znalazłem błąd i poprawiłem. Wydaje mi się, że wszystko działa, oprócz jednej rzeczy. Mianowicie, gdy korzystam z dzielenia wyrzuca mi strasznie dziwne wartości. Oto kod: #include <iostream> using namespace std; int main() { int a, b, znak; float wynik; bool good, good2; cout << "podaj pierwsza liczbe: "; cin >> a; good = cin.good(); cin.clear(); cin.sync(); if( good != 1 ) do { cout << "Blad! Podaj wartosc liczbowa: "; cin >> a; good = cin.good(); cin.clear(); cin.sync(); } while( good != 1 ); cout << "Legenda:" << endl << "[1] - dodawanie" << endl << "[2] - odejmowanie" << endl << "[3] - mnozenie" << endl << "[4] - dzielenie" << endl << endl << "Wprowadz liczbe odpowiadajaca danemu dzialaniu: "; cin >> znak; cin.clear(); cin.sync(); if(( znak == 1 || znak == 2 || znak == 3 || znak == 4 ) == 0 ) do { cout << "Blad. Wprowadz wartosc z zakresu 1-4: "; cin >> znak; cin.clear(); cin.sync(); } while(( znak == 1 || znak == 2 || znak == 3 || znak == 4 ) == 0 ); cout << "Podaj druga liczbe: "; cin >> b; good2 = cin.good(); cin.clear(); cin.sync(); if( good2 != 1 ) do { cout << "Blad! Podaj wartosc liczbowa: "; cin >> b; good2 = cin.good(); cin.clear(); cin.sync(); } while( good2 != 1 ); switch( znak ) { case 1: wynik = a + b; cout << "Wynik:" << a << "+" << b << "=" << wynik; break; case 2: wynik = a - b; cout << "Wynik:" << a << "-" << b << "=" << wynik; break; case 3: wynik = a * b; cout << "Wynik:" << a << "*" << b << "=" << wynik; break; case 4: cout << "Wynik:" << a << "/" << b << "=" << wynik; wynik = a / b; break; } return 0; }
|
|
pekfos |
» 2014-09-28 18:53:12 cout << "Wynik:" << a << "/" << b << "=" << wynik; wynik = a / b;
|
Bo wypisujesz wynik przed zapisaniem tam wartości. |
|
« 1 » |