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

lekcja 15 kalkulator ocena

Ostatnio zmodyfikowano 2013-02-26 16:16
Autor Wiadomość
Diabolo1989
Temat założony przez niniejszego użytkownika
lekcja 15 kalkulator ocena
» 2013-02-26 16:02:15
Witam. Prosilbym o ocene podanego tu kalkulatora, czekam na pomocne uwagi ktore mogly by usprawnic moje dzialanie nastepnym razem i wytkniecie bledow ktore popelnilem a ich nie widze

C/C++
#include<iostream>
#include <cstdlib>
using namespace std;
int main()
{
    int wybor;
    float a;
    float b;
    cin.clear();
    cin.sync();
    cout << "[1]Dodawanie:::::" << endl;
    cout << "[2]Odejmowanie:::::" << endl;
    cout << "[3]Mnozenie:::::" << endl;
    cout << "[4]Dzielenie:::::" << endl;
    cout << "[0]Rezygnuj:::::" << endl;
   
    do
    {
        cout << "Jakie dzialanie wybierasz?" << endl;
        cin >> wybor;
       
        switch( wybor )
        {
        case 0:
            cin.clear();
            cin.sync();
           
            return 0;
           
        case 1:
            cout << "Podaj liczbe a:";
            cin >> a;
            cout << "Podaj liczbe b:";
            cin >> b;
            cout << "a + b==" << a + b << endl;
            cin.clear();
            cin.sync();
            break;
        case 2:
            cout << "Podaj liczbe a:";
            cin >> a;
            cout << "Podaj liczbe b:";
            cin >> b;
            cout << "a - b==" << a - b << endl;
            cin.clear();
            cin.sync();
            break;
        case 3:
            cout << "Podaj liczbe a:";
            cin >> a;
            cout << "Podaj liczbe b:";
            cin >> b;
            cout << "a * b==" << a * b << endl;
            cin.clear();
            cin.sync();
            break;
        case 4:
            do
            {
                cin.clear();
                cin.sync();
                cout << "Podaj \"liczbe\" a:";
                cin >> a;
               
                if( cin.good() || a != 0 );
               
            } while( cin.fail() || a == 0 );
           
            do
            {
                cin.clear();
                cin.sync();
                cout << "Podaj \"liczbe\" b:";
                cin >> b;
               
                if( cin.good() || b != 0 );
               
            } while( cin.fail() || b == 0 );
           
            cout << "a / b==" << a / b << endl;
            break;
           
            cin.clear();
            cin.sync();
            break;
        }
    } while( wybor >= 0 );
   
    return 0;
}
P-77064
Berux
» 2013-02-26 16:16:11
C/C++
float a;
float b;
 możesz zamienić na:
float a, b;

C/C++
cin.clear();
cin.sync();
 to daj przed samym wczytywaniem, a nie po zdefiniowaniu zmiennych.

C/C++
switch( wybor )
{
case 0:
    cin.clear(); //to nie potrzebne
    cin.sync(); / to tez
   
    return 0;
   
case 1:
    cout << "Podaj liczbe a:";
    cin >> a;
    cout << "Podaj liczbe b:";
    cin >> b;
    cout << "a + b==" << a + b << endl;
    cin.clear();
    cin.sync();
    break;
    [...]

I dalej też
C/C++
cin.clear();
cin.sync();

dawaj przed samym wczytywaniem :)

/edit:
if( cin.good() || b != 0 );

Tą linijkę możesz usunąć. Nic ona w tym kodzie nie robi :)

/edit 2:
Zamiast pisać w instrukcji warunkowej
cin.good()
Powinieneś (według mnie) napisać np.:

C/C++
bool sprawdzanie;
int a;

//...
cin >> a;
sprawdzanie = cin.good();

if( sprawdzanie ) //jeśli sprawdzanie jest równe true
//...

/edit 3: //sory za te edity :)
C/C++
cin.clear();
cin.sync();
break;
To możesz usunąć z czwartego case. Nic on nie robi, jeśli będziesz przed samym wczytywaniem pisał cin.clear(); i cin.sync();. Po za tym dwa razy break w jednym case. Powiem ci jeszcze, że nawet nie dojdzie do spełnienia kodu, bo przedtem przerywasz case;

P-77065
« 1 »
  Strona 1 z 1