Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Rozdział 15 Zadanie domowe 2 - gdzie popełnilam błąd?

Ostatnio zmodyfikowano 2016-06-12 13:39
Autor Wiadomość
mysza
Temat założony przez niniejszego użytkownika
Rozdział 15 Zadanie domowe 2 - gdzie popełnilam błąd?
» 2016-06-12 13:03:34
Witam, chciałam zrobić zadanie drugie i napisałam taki program, ale nie chce mi się wykonywać pętla. Czy ktoś pomoże mi znaleźć błąd?

C/C++
#include <iostream>
using namespace std;

int main()
{
    int a = 1;
    int wynik;
    int dzialanie;
    int b;
   
    do
    {
        cout << "Obecny wynik: " << a << endl;
       
        cout << "Wprowadz liczbe: " << endl;
        cin >> b;
        cout << "Wybierz dzialanie:\n[1] dodawanie\n[2] odejmowanie\n[3] mnozenie\n[4] dzielenie" << endl;
        cin >> dzialanie;
        cout << "\nObliczanie...\n" << endl;
       
        switch( dzialanie )
        {
        case 1:
            cout << a << " + " << b << " = " << a + b << endl;
            wynik = a + b;
            break;
        case 2:
            cout << a << " = " << b << " = " << a - b << endl;
            wynik = a - b;
            break;
        case 3:
            cout << a << " * " << b << " = " << a * b << endl;
            wynik = a * b;
            break;
        case 4:
            cout << a << " / " << b << " = " << a / b << endl;
            wynik = a / b;
            break;
        default:
            cout << "Wybralas niepoprawne dzialanie." << endl;
            break;
        }
       
        wynik = a;
       
       
    } while( b = 0 );
   
    cout << "Program zakonczony." << endl;
    return 0;
}
P-149051
carlosmay
» 2016-06-12 13:08:57
ale nie chce mi się wykonywać pętla.
Pętla wykonuje się przynajmniej raz. Tak działa
do { } while();

Błędny jest warunek pętli:
C/C++
while( b = 0 ); // '=' to nie jest operator porównania tylko przypisania[/cpp]

P-149053
mysza
Temat założony przez niniejszego użytkownika
» 2016-06-12 13:12:46
Dziękuje za szybką odpowiedź. A na jaki warunek pętli mam zmienić? Nie mam już pomysłów.
P-149054
carlosmay
» 2016-06-12 13:16:32
Chodzi o sam operator
=
 (to jest operator przypisania.
Operatory ralacji
==, !=, <, <=, >, >=
P-149055
mysza
Temat założony przez niniejszego użytkownika
» 2016-06-12 13:22:41
Niestety nie, ja już próbowałam wcześniej zamienić

C/C++
do
{
    .....
} while( b = 0 );


C/C++
do
{
    .....
} while( b == 0 );


Ale to nic zmienia. Już przeanalizowałam cały kod i próbowałam różnych wariantów. Sama nie mogę znaleźć pozostałych błędów a na pewno jeszcze jakieś są przez co pętla wykonuje się tylko raz.
P-149056
Gibas11
» 2016-06-12 13:37:06
To działa:
C/C++
#include <iostream>
using namespace std;

int main()
{
    int a = 1;
    int wynik;
    int dzialanie;
    int b;
   
    do
    {
        cout << "Obecny wynik: " << a << endl;
       
        cout << "Wprowadz liczbe: " << endl;
        cin >> b;
        cout << "Wybierz dzialanie:\n[1] dodawanie\n[2] odejmowanie\n[3] mnozenie\n[4] dzielenie" << endl;
        cin >> dzialanie;
        cout << "\nObliczanie...\n" << endl;
       
        switch( dzialanie )
        {
        case 1:
            cout << a << " + " << b << " = " << a + b << endl;
            wynik = a + b;
            break;
        case 2:
            cout << a << " = " << b << " = " << a - b << endl;
            wynik = a - b;
            break;
        case 3:
            cout << a << " * " << b << " = " << a * b << endl;
            wynik = a * b;
            break;
        case 4:
            cout << a << " / " << b << " = " << a / b << endl;
            wynik = a / b;
            break;
        default:
            cout << "Wybralas niepoprawne dzialanie." << endl;
            break;
        }
       
        a = wynik; //wynik = a nadpisywało obliczone dane
       
       
    } while( b != 0 ); //Powtarzanie dopóki druga liczba nie będzie równa 0
   
    cout << "Program zakonczony." << endl;
    return 0;
}

Tylko nie wiem czy dobrze wydedukowałem warunek dla pętli.

EDIT: Żebyś go przypadkiem nie przeoczyła - zwróć uwagę na ten kawałek:
C/C++
a = wynik; //wynik = a nadpisywało obliczone dane[/code]
P-149057
carlosmay
» 2016-06-12 13:37:25
==
 zamień na
!=
.
Zapoznaj się z operatorami relacji (jedna z poprzednich lekcji).
P-149058
mysza
Temat założony przez niniejszego użytkownika
» 2016-06-12 13:39:27
ojej dziękuje! ja wstawiałam tam tylko b = 0 lub b == 0 a nie pomyślałam o tym żeby wstawić != ;d
P-149059
« 1 »
  Strona 1 z 1