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

Problem z zadaniem "Poziom 2- Pętla do ... while".

Ostatnio zmodyfikowano 2013-04-16 21:44
Autor Wiadomość
Szustarol
Temat założony przez niniejszego użytkownika
Problem z zadaniem "Poziom 2- Pętla do ... while".
» 2013-04-16 17:42:38
Witam.
Mam problem z drugim zadaniem domowym » Kurs C++ » Poziom 2Pętla do ... while lekcja
Otóż piszę taki program:
C/C++
#include <iostream>
using namespace std;
int main()
{
    unsigned int a;
    cout << "Podaj liczbe: " << endl;
    cin >> a;
    cin.good();
    cin.fail();
    if( a = true )
    {
        do
        {
            cout << "Podana liczba jest prawidlowa." << endl;
            cout << "Podana liczba to: " << endl;
            cout << a << endl;
            a--;
        } while( a > 0 );
       
    }
    if( a = false )
    {
        do
        {
            cout << "Podana liczba NIE jest prawidlowa." << endl << "Podaj liczbe ponownie: " << endl;
            cin >> a;
           
           
        } while( a > 0 );
       
        cout << "Podana liczba to: " << endl;
        cout << a << endl;
    }
}
I wynikiem zawsze jest liczba poprawna i zawsze jest ona równa 1. Co mam tutaj źle?
P-80653
pekfos
» 2013-04-16 17:44:50
Przypisanie w linii 10 i 21.
P-80654
Szustarol
Temat założony przez niniejszego użytkownika
» 2013-04-16 17:45:53
A konkretnie?
a= true jest niepoprawne?
P-80656
pekfos
» 2013-04-16 17:47:46
Przypisanie w linii 10 i 21.
C/C++
if( a = true ) //linia 10.
//..
if( a = false ) //linia 21.
a= true jest niepoprawne?
Oczywiście, że jest niepoprawne.
P-80657
Szustarol
Temat założony przez niniejszego użytkownika
» 2013-04-16 18:09:14
Ok, trochę to zmodyfikowałem. Teraz pierwsza instrukcja działa poprawnie. Tylko mam jeszcze problem z drugą.
C/C++
#include <iostream>
using namespace std;
int main()
{
    int a;
    cout << "Podaj liczbe: " << endl;
    cin >> a;
    cin.good();
    cin.fail();
    if( a > 0 )
    { cout << "Podana liczba jest prawidlowa. " << "Podana liczba to: " << endl;
        cout << a; }
   
    if( a <= 0 )
    {
       
        do
        {
            cout << "Podana liczba NIE jest prawidlowa." << endl << "Podaj liczbe ponownie: " << endl;
            cin >> a;
           
           
        } while( a > 0 );
       
        cout << "Podana liczba to: " << endl;
        cout << a << endl;
    }
}
W drugiej instrukcji po poprawieniu liczby na poprawną, nadal instrukcja wyświetla się ponownie, pomimo, że w while jest napisane, że program ma się zatrzymac kidy liczba bedzie poprawna.
P-80661
Berux
» 2013-04-16 18:14:16
Zmień
while( a > 0 );
 na
while( a <= 0 );
, dlatego, że ponawiasz wczytywanie nowej liczby dopóki jest mniejsza lub równa 0, a nie dopóki jest większa od 0 - wtedy przecież liczba jest prawidłowa :)
P-80662
Szustarol
Temat założony przez niniejszego użytkownika
» 2013-04-16 18:18:49
Dzięki działa, można zamknąć.
P-80663
Szustarol
Temat założony przez niniejszego użytkownika
» 2013-04-16 18:55:49
No dobra, jestem już przy drugim zadaniu, i pojawia się błąd podobnego pokroju:
C/C++
#include <iostream>
using namespace std;
int main()
{
    int a;
    int b;
    int c;
   
   
    do
    {
        cout << "Podaj numer akcji jaka chcesz wykonac i wcisnij [ENTER]" << endl;
        cout << "[1] Dodawanie " << endl;
        cout << "[2] Mnozenie " << endl;
        cout << "[3] Dzielenie" << endl;
        cout << "[4] Odejmowanie" << endl;
        cout << "[5] Zakoncz program" << endl;
        cin >> a;
       
       
        if( a == 1 )
        {
            cout << "Podaj liczbe nr. 1: " << endl;
            cin >> b;
            cout << "Podaj liczbe nr. 2 :" << endl;
            cin >> c;
            cout << b << "+" << c << "=" << b + c << endl;
        }
        if( a == 2 )
        {
            cout << "Podaj liczbe nr. 1: " << endl;
            cin >> b;
            cout << "Podaj liczbe nr. 2 :" << endl;
            cin >> c;
            cout << b << "x" << c << "=" << b * c << endl;
        }
       
        if( a == 3 )
        {
            cout << "Podaj liczbe nr. 1: " << endl;
            cin >> b;
            cout << "Podaj liczbe nr. 2 :" << endl;
            cin >> c;
            cout << b << ":" << c << "=" << b / c << endl;
        }
       
        if( a == 4 )
        {
            cout << "Podaj liczbe nr. 1: " << endl;
            cin >> b;
            cout << "Podaj liczbe nr. 2 :" << endl;
            cin >> c;
            cout << b << "-" << c << "=" << b - c << endl;
        }
        if( a >= 6 );
       
        {
            cout << "Podana liczba jest nieprawidlowa" << endl;
        }
        if( a <= 0 );
       
        {
            cout << "Podana liczba jest nieprawidlowa" << endl;
        }
    } while( a == 5 );
   
}

Działania są wykonywane poprawnie, ale zawsze na końcu wyświetla się dwa razy "Podana liczba jest nieprawidlowa", a poza tym po wciśnięciu klawisza [5] program nie kończy pracy, tylko wyświetla jeszcze raz menu.
P-80665
« 1 » 2
  Strona 1 z 2 Następna strona