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

Lekcja 15 - zadanie nr 2

Ostatnio zmodyfikowano 2012-07-17 08:23
Autor Wiadomość
Tomio
Temat założony przez niniejszego użytkownika
Lekcja 15 - zadanie nr 2
» 2012-07-10 18:12:15
Witam,
Prosiłbym o sprawdzenie mojego kodu na kalkulator:) Gdzie i jak umieścić pętle która na cyfrę 0 bedzię kończyć program?:)
Pozdro
C/C++
# include <iostream>
# include <cstdio>
using namespace std;
int main()
{
   
    int d, wynik;
    float a, b;
    wynik = 0;
    do
    {
       
        cout << "Obecny wynik: " << wynik << endl << endl;
        cout << "podaj pierwsza liczbe :";
        cin >> a;
        bool spr1 = cin.good();
        if( spr1 == false )
        do
        {
            cout << "Nie podales liczby!" << endl;
           
            cout << "podaj pierwsza liczbe :";
            cin.clear();
            cin.sync();
            cin >> a;
            spr1 = cin.good();
        } while( !spr1 );
       
        cout << "Podaj druga liczbe :";
        cin.clear();
        cin.sync();
        cin >> b;
        bool spr2 = cin.good();
       
       
        if( spr2 == false )
        do
        {
            cout << "Nie podales liczby!" << endl;
            cout << "Podaj druga liczbe :";
            cin.clear();
            cin.sync();
            cin >> b;
            spr2 = cin.good();
        } while( !spr2 );
       
       
       
        //..............................................................................................
       
       
       
        cout << "Oto Menu działan." << endl << "[1] Dodawanie" << endl
        << "[2] Odejmowanie" << endl << "[3] Mnozenie" << endl << "[4] Dzielenie" << endl << "[5] Rezygnuj" << endl;
        cout << "Wybierz numer dzialania z listy, ktore cie interesuje :" << endl;
        cin.clear();
        cin.sync();
        cin >> d;
       
        if( d > 5 )
        do
        {
            cout << " Nie wybrales poprawnego dzialania z listy" << endl;
            cout << "Wybierz numer dzialania z listy, ktore cie interesuje :" << endl;
            cin.clear();
            cin.sync();
            cin >> d;
           
           
        } while( d > 5 );
       
       
        //....................................................................................................
       
        switch( d )
        {
        case 1:
            wynik = a + b;
            cout << " Wybrales dodwanie :" << wynik << endl;
            break;
           
           
        case 2:
            wynik = a - b;
            cout << " Wybrales odejmowanie :" << wynik << endl;
            break;
           
        case 3:
            wynik = a * b;
            cout << " Wybrales mnozenie :" << wynik << endl;
            break;
           
        case 4:
            wynik = a / b;
            cout << " Wybrales dzielenie :" << wynik << endl;
            break;
           
        case 5:
            cout << "Rezygnujesz z liczenia. Koniec";
            break;
           
        }
       
    } while( d < 5 );
   
    return 0;
}
P-59804
jankowalski25
» 2012-07-10 19:32:53
P-59808
pucio19
rozwiazanie
» 2012-07-15 02:13:39
Mam problem z tym zadaniem również:

C/C++
#include <iostream>
using namespace std;
int main() {
    int wybor;
    float a, b;
    char z;
    bool ok = true;
    do {
       
        cout << "Wprowadz liczbe: " << endl;
        cout << "[1] Dodawanie" << endl;
        cout << "[2] Odejmowanie" << endl;
        cout << "[3] Mnozenie" << endl;
        cout << "[4] Dzielenie" << endl;
        cout << "[5] Rezygnuj" << endl;
       
        cin >> wybor;
       
       
       
        do {
            if( wybor < 1 || wybor > 5 )
            {
                cin.clear();
                cin.sync();
                cout << "Nie wprowadziles poprawnej liczby" << endl;
                cout << "Wprowadz liczbe: " << endl;
                cout << "[1] Dodawanie" << endl;
                cout << "[2] Odejmowanie" << endl;
                cout << "[3] Mnozenie" << endl;
                cout << "[4] Dzielenie" << endl;
                cout << "[5] Rezygnuj" << endl;
               
                cin >> wybor;
                ok = cin.fail();
            }
        } while( ok );
       
       
       
       
       
       
       
        switch( wybor )
        {
           
        case 1:
           
            cout << "Wprowadz dzialanie:" << endl;
            cin >> a;
            cin >> z;
            cin >> b;
            if( a != 0 && b != 0 )
                 cout << "Wynik dzialania: " <<( a + b ) << endl;
           
            break;
        case 2:
            cout << "Wprowadz dzialanie:" << endl;
            cin >> a;
            cin >> z;
            cin >> b;
            if( a != 0 && b != 0 )
                 cout << "Wynik dzialania: " <<( a - b ) << endl;
           
            break;
        case 3:
            cout << "Wprowadz dzialanie:" << endl;
            cin >> a;
            cin >> z;
            cin >> b;
            if( a != 0 && b != 0 )
                 cout << "Wynik dzialania: " <<( a * b ) << endl;
           
            break;
        case 4:
            cout << "Wprowadz dzialanie:" << endl;
            cin >> a;
            cin >> z;
            cin >> b;
            if( a != 0 && b != 0 )
                 cout << "Wynik dzialania: " <<( a / b ) << endl;
           
            break;
        case 5:
            a = 0;
            break;
        }
    } while( a != 0 && b != 0 );
   
    return 0;
}

Dlaczego nie zostaje wykonywana druga pedla zagniezdzona "do while"?
P-60063
xevuel
» 2012-07-15 15:51:22
  • Nie wpychaj się komuś do tematu
  • Podawaj dane wejściowe
  • Przeczytaj ten warunek:
    if( wybor < 1 || wybor > 5 )
    , i zastanów się, co w nim jest nie tak.
P-60078
Sungrazer
» 2012-07-16 17:41:41
Tomio - porównaj swój kod z przykładem podanym tutaj przez Netro: http://cpp0x.pl/forum/temat/?id=7574
pucio19 - po pierwsze: daj instrukcję
if
 przed rozpoczęciem pętli zamiast w środku, a po drugie: jako warunek zakończenia drugiej pętli masz tylko
cin.fail()
. Taki zapis powinien załatwić sprawę:
while( ok || wybor < 1 || wybor > 5 );
P-60200
Arni
Pomoc
» 2012-07-16 22:27:49
C/C++
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
int main()
{
    int dzialanie, a, b, wynik = 0; // zmienne i sałe
   
    do {
        cout << "\tKalkulator\n";
        cout << "\n ====================================\n";
        cout << "Wynik wynosi: " << wynik; // wynik początkowy
        cout << "\nPodaj liczbe: "; // podajesz liczbe
        cin >> a;
        cout << "Podaj liczbe: "; // podajesz druga liczbe
        cin >> b;
    } while( a < 0 && b < 0 ); // warunek liczba ma byc wieksza od zera, odrazu zrobilem dla dwóch
   
    if( a != 0 && b != 0 ) //  liczby nie moga wynosic 0, odrau dladwóch
    {
        cout << "Wybierz dzialanie: \n [1] dodawanie \n [2] odejmowanie \n [3] mnozenie \n [4] dzielenie \n\n";
        cin >> dzialanie;
        switch( dzialanie ) // mysle ze jak wszystko przeczytales to dalej program rozkminisz
    { { case 1:
                wynik = b + a;
                cout << "Wynik wynosi: " << wynik;
            } break;
        { case 2:
                wynik = a - b;
                cout << "Wynik wynosi: " << wynik;
            } break;
        { case 3:
                wynik = a * b;
                cout << "Wynik wynosi: " << wynik;
            } break;
        { case 4:
                wynik = a / b;
                cout << "Wynik wynosi: " << wynik;
            } break;
            { default:
                cout << "Nie umiesz czytac";
            } break;
        } }
    else
         return 0;
   
}
P-60263
kubawal
» 2012-07-17 08:23:31
Arni, nie podaje się całego kodu tylko jakieś rozwiązanie!
W switch są źle klamry.
Powinno być tak:
C/C++
switch( wybor )
{
case '1':
    {
        //instrucje
        break;
    }
case '2':
    {
        //...
        break;
    }
    //...
    default:
    {
        cout << "Kup sobie okulary! Podałeś zły wybor.\n";
    }
}
» Kurs C++ » Poziom 1Warunek wielokrotnego wyboru switch ... case lekcja
P-60288
« 1 »
  Strona 1 z 1