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

[Lekcja 15 ] zadanie 2

Ostatnio zmodyfikowano 2012-02-19 21:25
Autor Wiadomość
Asharoth
Temat założony przez niniejszego użytkownika
» 2012-02-18 11:34:40
Ok rozumiem co źle zrobiłem.
Niestety mam nowy problem.
Jako że przerobić program żeby spełniał warunki zadania spotkałem się z nowym problemem a mianowicie:
C/C++
#include <iostream>
using namespace std;

int wynik = 0;
int a;
int b;
bool spr_a;
bool spr_b;
int wyb;
int main()

{ //main
    cout << "\t Kalkulator" << endl;
    do //lop 1
    {
        if( wynik != 0 )
             cout << "Obecny wynik" << wynik << endl;
       
        do
        { //lop 2
            cout << "Podaj liczbe a: " << endl;
            cin >> a;
            spr_a = cin.fail() == true;
            cin.clear();
            cin.sync();
            if( a == 0 )
            { //if a przerwanie
                cout << "a = 0 przerwanie programu" << endl;
                return( 0 );
            } //if a przerwanie
            if( wynik = 0 )
            { //if b
                do
                { //lop 3
                    cout << "Podaj liczbę b: " << endl;
                    cin >> b;
                    cin.clear();
                    cin.sync();
                    if( b == 0 )
                    { //if b przerwanie
                        cout << "b = 0 przerwanie program" << endl;
                        return( 0 );
                       
                    } //if b przerwanie
                } //lop 3
            } // if b
        } while( spr_a == true ); //lop 2
       
    } while( 0 ); //lop 1
   
    return( 0 );
} //main
nie chce mi się to poprawnie skompilować choć teoretycznie chyba poprawnie wszystko zrobiłem to podczas kompilacji wywala mi błędy związane z domykaniem funkcji może mi ktoś powiedzieć co źle zrobiłem ?
P-50914
SeaMonster131
» 2012-02-18 11:37:21
Nie ma pętli
do { };
, jest pętla
do { } while();
P-50915
RazzorFlame
» 2012-02-18 11:40:42
W 3 petli braknie while. Poza tym w jednym z ifow zrobiłeś przypisanie.

Co to jest?
C/C++
spr_a = cin.fail() == true;
chyba spr_a = cin.fail();
???

Edit:
Jakoś dziwnie zrobiłeś ten kalkulator. Nie lepiej użyć funkcji?
P-50916
Asharoth
Temat założony przez niniejszego użytkownika
» 2012-02-19 10:14:15
No chyba działa tak jak chciał tego autor zadania proszę o sprawdzenie i ew sugestie.
C/C++
#include <iostream>
using namespace std;

double wynik = 0;
double a;
double b;
bool spr_a;
bool spr_b;
int wyb;
int main()

{ //main
    cout << "\t Kalkulator" << endl;
    do //lop 1
    {
        if( wynik != 0 )
             cout << "Obecny wynik : " << wynik << endl;
       
        do
        { //lop 2
            if( wynik != 0 )
                 cout << "Podaj liczbe b : " << endl;
            else
                 cout << "Podaj liczbe a : " << endl;
           
            cin >> a;
            spr_a = cin.fail() == true;
            cin.clear();
            cin.sync();
            if( a == 0 )
            { //if a przerwanie
                cout << "a = 0 przerwanie programu lub bledna liczba" << endl;
                return( 0 );
            } //if a przerwanie
            if( wynik == 0 )
            { //if b
                do
                { //lop 3
                    cout << "Podaj liczbe b : " << endl;
                    cin >> b;
                    spr_b = cin.fail() == true;
                    cin.clear();
                    cin.sync();
                    if( b == 0 )
                    { //if b przerwanie
                        cout << "b = 0 przerwanie program lub bledna liczba" << endl;
                        return( 0 );
                       
                    } //if b przerwanie
                } while( spr_b == true ); //lop 3
               
            } // if b
        } while( spr_a == true ); //lop 2
       
        cout << "[0] Zakoncz Program \n[1] Dodawanie \n[2] Odejmowanie \n[3] Mnozenie \n[4] Dzielenie \n[5] Powrot na Poczatek" << endl;
        cin >> wyb;
        switch( wyb )
        {
        case 0:
            cout << "Koniec!";
            return( 0 );
            break;
           
        case 1:
            if( wynik == 0 )
            { //if +
                cout << a << " + " << b << " = " << a + b << endl;
                wynik = a + b;
                break;
            } //if +
            else
                 cout << wynik << " + " << a << " = " << wynik + a << endl;
           
            wynik = wynik + a;
            break;
           
        case 2:
            if( wynik == 0 )
            { //if -
                cout << a << " - " << b << " = " << a - b << endl;
                wynik = a - b;
                break;
            } //if -
            else
                 cout << wynik << " - " << a << " = " << wynik - a << endl;
           
            wynik = wynik - a;
            break;
           
        case 3:
            if( wynik == 0 )
            { //if *
                cout << a << " * " << b << " = " << a * b << endl;
                wynik = a * b;
                break;
            } //if *
            else
                 cout << wynik << " * " << a << " = " << wynik * a << endl;
           
            wynik = wynik * a;
            break;
           
        case 4:
            if( wynik == 0 )
            { //if /
                cout << a << " / " << b << " = " << a / b << endl;
                wynik = a / b;
                break;
            } //if /
            else
                 cout << wynik << " / " << a << " = " << wynik / a << endl;
           
            wynik = wynik / a;
            break;
           
        case 5:
            wynik = 0;
            break;
           
        default:
            cout << "Sprobuj jeszcze raz" << endl;
            wynik = 0;
            break;
        }
       
    } while( 1 ); //lop 1
   
    return( 0 );
} //main
P-50960
RazzorFlame
» 2012-02-19 15:34:13
Moja rada: Czyść na początku pętli 1 ekran. (np. "system("cls");" )
P-50993
za8ol
Lek15 zad 2
» 2012-02-19 21:09:11
Witam mam prośbę przerobiłem czyjść kod żeby nie działał w sposób podaj liczbę a ,b a później wybierz działanie . Tylko najpierw wybierz działanie później podaj liczby i wszystko jest dobrze do momentu wyniku. Wynik jest dobry natomiast idzie idzie idzie i się nie kończy gdzie jest błąd ?

C/C++
#include <iostream>

using namespace std;

int main()
{
    cout << "Kalkulator prosty\n"
    "[1] dodawanie \n"
    "[2] odejmowanie a - b \n"
    "[3] odejmowanie b-a \n"
    "[4] mnozenie \n"
    "[5] dzielenie \n"
    "[6] rezygnuje \n";
   
   
    float a;
    float b;
    int dzialanie;
    cin >> dzialanie;
    cin.clear();
    cin.sync();
   
   
   
    do
    { cout << "Podaj liczbe a: " << endl;
        cin >> a;
        cin.clear();
        cin.sync();
        if( a == 0 )
        cout << "Musisz podac liczbe wieksza od 0 \n"
             "Podaj liczby jeszcze raz: " << endl;
       
    } while( a == 0 );
   
    do
    {
       
        cout << "Podaj liczbe b:" << endl;
       
        cin >> b;
        cin.clear();
        cin.sync();
       
       
        if( b == 0 )
       
        cout << "Musisz podac liczbe wieksza od 0 \n"
             "Podaj liczby jeszcze raz: " << endl;
       
    } while( b == 0 );
   
   
   
   
   
    do {
       
       
        switch( dzialanie )
       
        {
        case 1:
           
            cout << "Wynik dodawania: " << a + b << endl;
           
            break;
           
        case 2:
           
            cout << "Wynik odejmowania a-b: " << a - b << endl;
           
            break;
           
        case 3:
           
            cout << "Wynik odejmowania b-a: " << b - a << endl;
           
            break;
           
        case 4:
           
            cout << "Wynik mnozenia: " << a * b << endl;
           
            break;
           
        case 5:
            cout << "Wynik dzielenia: " << a / b << endl;
            break;
           
        }
       
    } while(( dzialanie >= 1 ) &&( dzialanie <= 5 ) );
   
    cout << "Rezygnuje \n\n" << endl;
    cout << "Koniec" << endl;
   
   
    return 0;
   
}
P-51044
malan
» 2012-02-19 21:25:53
@za8ol: załóż swój temat.
P-51050
1 « 2 »
Poprzednia strona Strona 2 z 2