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

Lekcja 15 - Kalkulator

Ostatnio zmodyfikowano 2011-09-16 17:47
Autor Wiadomość
Daghelor
Temat założony przez niniejszego użytkownika
Lekcja 15 - Kalkulator
» 2011-09-14 14:50:12
Czy mógłby ktoś sprawdzić czy takie zadanie domowe zda egzamin?


C/C++
#include <iostream>
#include <conio.h>

using namespace std;

int main()

{
    float a;
    float b;
    float c;
    float d;
    float e;
    int cyfra;
    bool A;
    bool B;
    bool C;
    bool D;
    bool E;
    float wynik = 0;
    bool a1;
    float wynik1 = 0;
    float wynik2 = 0;
    int ileLiczb;
   
    do
    {
       
       
        wynik2 = wynik + wynik1;
        wynik = 0;
       
        cout << "Kalkulator v 1.00\n \n \n" << endl << endl;
        cout << "Twoj obecny wynik to : " << wynik;
        cout << endl << endl;
       
        do
        {
           
           
           
            cout << "Co chcesz zrobic ?\n 1. Dodawac\n 2. Odejmowac\n 3. Mnozyc\n 4. Dzielic \n 5. Rezygnuje" << endl;
            cin >> cyfra;
            a1 = cin.good();
            cin.clear();
            cin.sync();
        } while( !a1 );
       
       
        cout << "Ile liczb chcesz uzyc?\n [2]\n [3]\n [4]\n [5]" << endl;
        cin >> ileLiczb;
        cin.clear();
        cin.sync();
        if( ileLiczb == 2 )
       
       
        {
            do {
               
                cout << "Podaj pierwsza liczbe : ";
                cin >> a;
                A = cin.good();
                cin.clear();
                cin.sync();
                cout << endl;
               
               
            } while( !A );
           
            if( A )
            {
                do {
                    cout << "Podaj druga liczbe : ";
                    cin >> b;
                    B = cin.good();
                    cin.clear();
                    cin.sync();
                    cout << endl;
                   
                   
                   
                } while( !B );
               
            }
           
        }
       
       
        if( ileLiczb == 3 )
        {
            do {
                cout << "Podaj pierwsza liczbe : ";
                cin >> a;
                A = cin.good();
                cin.clear();
                cin.sync();
                cout << endl;
               
               
            } while( !A );
           
            if( A )
            do {
                {
                   
                    cout << "Podaj druga liczbe : ";
                    cin >> b;
                    B = cin.good();
                    cin.clear();
                    cin.sync();
                    cout << endl;
                   
                }
               
            } while( !B );
           
            if( A && B )
            do {
                {
                   
                    cout << "Podaj trzecia liczbe : ";
                    cin >> c;
                    C = cin.good();
                    cin.clear();
                    cin.sync();
                    cout << endl;
                   
                }
               
            } while( !C );
           
        }
       
        if( ileLiczb == 4 )
        {
           
            do {
               
                cout << "Podaj pierwsza liczbe : ";
                cin >> a;
                A = cin.good();
                cin.clear();
                cin.sync();
                cout << endl;
               
               
            } while( !A );
           
            if( A )
            do {
                {
                   
                    cout << "Podaj druga liczbe : ";
                    cin >> b;
                    B = cin.good();
                    cin.clear();
                    cin.sync();
                    cout << endl;
                   
                }
               
            } while( !B );
           
            if( A && B )
            do {
                {
                   
                    cout << "Podaj trzecia liczbe : ";
                    cin >> c;
                    C = cin.good();
                    cin.clear();
                    cin.sync();
                    cout << endl;
                   
                }
               
            } while( !C );
           
            if( A && B && C )
            do {
                {
                   
                    cout << "Podaj czwarta liczbe : ";
                    cin >> d;
                    D = cin.good();
                    cin.clear();
                    cin.sync();
                    cout << endl;
                   
                }
               
            } while( !D );
           
        }
       
       
        if( ileLiczb == 5 )
        {
            do {
               
                cout << "Podaj pierwsza liczbe : ";
                cin >> a;
                A = cin.good();
                cin.clear();
                cin.sync();
                cout << endl;
               
               
            } while( !A );
           
            if( A )
            do {
                {
                   
                    cout << "Podaj druga liczbe : ";
                    cin >> b;
                    B = cin.good();
                    cin.clear();
                    cin.sync();
                    cout << endl;
                   
                }
               
            } while( !B );
           
            if( A && B )
            do {
                {
                   
                    cout << "Podaj trzecia liczbe : ";
                    cin >> c;
                    C = cin.good();
                    cin.clear();
                    cin.sync();
                    cout << endl;
                   
                }
               
            } while( !C );
           
            if( A && B && C )
            do {
                {
                   
                    cout << "Podaj czwarta liczbe : ";
                    cin >> d;
                    D = cin.good();
                    cin.clear();
                    cin.sync();
                    cout << endl;
                   
                }
            } while( !D );
           
            if( A && B && C && D )
            do {
                {
                   
                    cout << "Podaj piata liczbe : ";
                    cin >> e;
                    E = cin.good();
                    cin.clear();
                    cin.sync();
                    cout << endl;
                   
                }
               
            } while( !E );
           
        }
       
       
       
       
        switch( cyfra )
        {
        case 1:
            if( ileLiczb == 2 )
            {
               
                wynik = a + b;
                cout << "Dodaje  : " << a << " + " << b << " = " << wynik << endl;
                cin.clear();
                cin.sync();
            }
           
            if( ileLiczb == 3 )
            {
                wynik = a + b + c;
                cout << "Dodaje  : " << a << " + " << b << " + " << c << " = " << wynik << endl;
                cin.clear();
                cin.sync();
            }
           
            if( ileLiczb == 4 )
            {
                wynik = a + b + c + d;
                cout << cout << "Dodaje  : " << a << " + " << b << " + " << c << " + " << d << " = " << wynik << endl;
                cin.clear();
                cin.sync();
            }
            if( ileLiczb == 5 )
            {
                wynik = a + b + c + d + e;
                cout << cout << "Dodaje  : " << a << " + " << b << " + " << c << " + " << d << " + " << e << " = " << wynik << endl;
                cin.clear();
                cin.sync();
            }
           
           
            break;
           
        case 2:
            if( ileLiczb == 2 )
            {
               
                wynik = a - b;
                cout << "Odejmuje  : " << a << " - " << b << " = " << wynik << endl;
                cin.clear();
                cin.sync();
            }
           
            if( ileLiczb == 3 )
            {
                wynik = a - b - c;
                cout << "Odejmuje  : " << a << " - " << b << " - " << c << " = " << wynik << endl;
                cin.clear();
                cin.sync();
            }
           
            if( ileLiczb == 4 )
            {
                wynik = a - b - c - d;
                cout << cout << "Odejmuje  : " << a << " - " << b << " - " << c << " - " << d << " = " << wynik << endl;
                cin.clear();
                cin.sync();
            }
            if( ileLiczb == 5 )
            {
                wynik = a - b - c - d - e;
                cout << cout << "Odejmuje  : " << a << " - " << b << " - " << c << " - " << d << " - " << e << " = " << wynik << endl;
                cin.clear();
                cin.sync();
            }
           
            break;
           
        case 3:
            if( ileLiczb == 2 )
            {
               
                wynik = a * b;
                cout << "Mnoze  : " << a << " * " << b << " = " << wynik << endl;
                cin.clear();
                cin.sync();
            }
           
            if( ileLiczb == 3 )
            {
                wynik = a * b * c;
                cout << "Mnoze  : " << a << " * " << b << " * " << c << " = " << wynik << endl;
                cin.clear();
                cin.sync();
            }
           
            if( ileLiczb == 4 )
            {
                wynik = a * b * c * d;
                cout << cout << "Mnoze  : " << a << " * " << b << " * " << c << " * " << d << " = " << wynik << endl;
                cin.clear();
                cin.sync();
            }
            if( ileLiczb == 5 )
            {
                wynik = a * b * c * d * e;
                cout << cout << "Odejmuje : " << a << " * " << b << " * " << c << " * " << d << " * " << e << " = " << wynik << endl;
                cin.clear();
                cin.sync();
            }
           
            break;
           
        case 4:
            wynik = a / b;
            cout << "Dziele : " << a << " / " << b << " = " << wynik << endl;
            cin.clear();
            cin.sync();
            break;
           
        case 5:
            cout << "Dziekujemy za skorzystanie";
            cin.clear();
            cin.sync();
            break;
           
            default:
            cout << "Nie ma takiej opcji";
            break;
           
        }
       
        getch();
        cout << endl;
    } while( cyfra != 5 );
   
    cin.clear();
    cin.sync();
   
    getch();
    return 0;
   
}


Tylko niestety nie wiem.. jak z tym wynikiem , za każdym razem mi się resetuje.
P-40951
Figlu
» 2011-09-14 15:18:24
usuń z kodu tę linijkę(na samym początku):

wynik = 0;

albo nawet :

C/C++
wynik2 = wynik + wynik1;
wynik = 0;

bo nie wiem po co są te 3 wyniki, a bez nich tez działa ;)

chodzilo o to ze za kazdym razem na początku program zamiast wyniku działania przypisuje 0
P-40953
Daghelor
Temat założony przez niniejszego użytkownika
» 2011-09-14 15:20:05
Tak , zauważyłem to , no ale jak zrobić , żeby wypisywał obecny wynik ? I go zsumował przede wszystkim.
P-40954
Eatos
» 2011-09-14 15:21:26
Spostrzeżenie nr 1:

O Matko ile kodu :D

#2:

Wynik się zeruje bo sam go takim ustawiasz na początku pętli - potem taki wyzerowany już wypisujesz.

#3:

No jak działa ( a działa), spełnia swoja fukcję (a spelnia) to teoretycznie jest dobrze.

#4:

Żeby podawał aktualne wyniki zawsze to możesz np. zostawić tą jedną zmienną
wynik
 właśnie na tę operację, działania składowe (ich wyniki) na innej zmiennej i pobawić się z
+= -= *= /=

#5:

No i można to trochę opakować bardziej, na plus dla Ciebie, że się w tym nie zaplątałeś w tylu warunkach, bedziesz miał śwetny program do edytowania jak pójdziesz dalej z lekcjami :). Co można juz teraz uprościć ?

C/C++
do
{
    //...
    a1 = cin.good();
    //...
} while( !a1 );


wszystkie pozostałe pętle też, jak wpadniesz na to o co chodzi to się pozbedziesz połowy zmiennych z programu :).

C/C++
if( ileLiczb == 2 )
{
    do {
        //...
    } while( !A );
   
    if( A )
    {
        do {
            //...
        } while( !B );
       

Takie kombinacje ze sprawdzaniem czy
if( A )
 nie są w gruncie rzeczy potrzebne, wynik z góry jest oczywisty w tym przypadku, sam się nad tym zastanów dlaczego.

Program "idzie" po kolei - podpowiem (
if( A && B && C && D )
 )

Ale jest dobrze i tego się trzymamy :P
P-40955
Daghelor
Temat założony przez niniejszego użytkownika
» 2011-09-14 15:24:42
Wiem , że z tym kodem przesadziłem , ale nudziło mi się w wieczór, i nie chce się zakończyć gdy [5] Rezygnuję jest wybierane
P-40956
Figlu
» 2011-09-14 15:25:21
C/C++
wynik = wynik1 + wynik;
wynik1 = wynik;

wpisz to zamiast wyzej wymienionych linijek

co do zakańczania to nie sprawdzałem całego kodu... ale wpisz cos w stylu:
C/C++
if( zmienna = 5 )
{
    cout << "papa";
    return 0;
}
P-40957
Daghelor
Temat założony przez niniejszego użytkownika
» 2011-09-14 15:32:17
Ok , wynik pokazuje , zakonczyłem jak radziłeś If'em ale mi to spokoju nie daje , bo chciałem zakończyć pętlą.
@Down , Tak zrobiłem , ale chciałem zakończyć na samym dole , no ale cóż Dziękuje , można zamknąć.
P-40958
Figlu
» 2011-09-14 15:33:47
ja poprawilem tak pierwszą pętle i  działa (chyba bo wszystkiego nie sprawdzałem):
C/C++
do
{
   
   
   
    cout << "Co chcesz zrobic ?\n 1. Dodawac\n 2. Odejmowac\n 3. Mnozyc\n 4. Dzielic \n 5. Rezygnuje" << endl;
    cin >> cyfra;
    a1 = cin.good();
    cin.clear();
    cin.sync();
   
    if( cyfra = 5 )
    {
        cout << "narazie\n\n";
       
        system( "PAUSE" );
        return 0;
    }
} while( !a1 );
P-40959
« 1 » 2
  Strona 1 z 2 Następna strona