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

[Kurs C++, Lekcja 15] Prośba o sprawdzenia drugiego zadania

Ostatnio zmodyfikowano 2011-07-24 11:39
Autor Wiadomość
Lamerek
Temat założony przez niniejszego użytkownika
[Kurs C++, Lekcja 15] Prośba o sprawdzenia drugiego zadania
» 2011-07-23 12:51:53
Czy zadanie 2 z rozdziału 15 jest dobrze zrobione?

C/C++
#include <iostream>
int main()
{
    using namespace std;
   
    float liczba;
    float liczba2;
    float c;
    int a1;
    int wynik;
    bool wczyt;
    c = 0;
   
   
    do
    {
       
       
        do
       
        {
           
            std::cin.clear();
            std::cin.sync();
           
            cout << "[1] Dodawanie" << endl;
            cout << "[2] Odejmowanie" << endl;
            cout << "[3] Mnozenie" << endl;
            cout << "[4] Dzielenie" << endl;
            cout << "[5] Rezygnuje" << endl;
            cout << endl;
           
           
            cout << "Obecny wynik: " << c << endl;
            cin >> a1;
        }
        while( 6 < a1 );
       
        switch( a1 )
        {
        case 1:
           
            do
            {
                std::cin.clear();
                std::cin.sync();
                cout << "Podaj liczbe:";
                cin >> liczba;
                cout << endl;
                wczyt = cin.good();
            }
            while( wczyt == 0 );
           
            do
            {
                std::cin.clear();
                std::cin.sync();
                cout << "Podaj druga liczbe:";
                cin >> liczba2;
                cout << endl;
                wczyt = cin.good();
            }
            while( wczyt == 0 );
           
            c = liczba + liczba2;
            cout << "Wynik: a+b=" << liczba << '+' << liczba2 << '=' << c << endl;
           
           
            break;
           
        case 2:
           
            do
            {
                std::cin.clear();
                std::cin.sync();
                cout << "Podaj liczbe:";
                cin >> liczba;
                cout << endl;
                wczyt = cin.good();
            }
            while( wczyt == 0 );
           
            do
            {
                std::cin.clear();
                std::cin.sync();
                cout << "Podaj druga liczbe:";
                cin >> liczba2;
                cout << endl;
                wczyt = cin.good();
            }
            while( wczyt == 0 );
           
            c = liczba - liczba2;
            cout << "Wynik: a-b=" << liczba << '-' << liczba2 << '=' << c << endl;
            break;
           
        case 3:
           
            do
            {
                std::cin.clear();
                std::cin.sync();
                cout << "Podaj liczbe:";
                cin >> liczba;
                cout << endl;
                wczyt = cin.good();
            }
            while( wczyt == 0 );
           
            do
            {
                std::cin.clear();
                std::cin.sync();
                cout << "Podaj druga liczbe:";
                cin >> liczba2;
                cout << endl;
                wczyt = cin.good();
            }
            while( wczyt == 0 );
           
            c = liczba * liczba2;
            cout << "Wynik: a*b=" << liczba << '*' << liczba2 << '=' << c << endl;
            break;
           
           
        case 4:
           
            do
            {
                std::cin.clear();
                std::cin.sync();
                cout << "Podaj liczbe:";
                cin >> liczba;
                cout << endl;
                wczyt = cin.good();
            }
            while( wczyt == 0 );
           
            do
            {
                std::cin.clear();
                std::cin.sync();
                cout << "Podaj druga liczbe:";
                cin >> liczba2;
                cout << endl;
                wczyt = cin.good();
            }
            while( wczyt == 0 );
           
            c = liczba / liczba2;
            cout << "Wynik: a/b=" << liczba << '/' << liczba2 << '=' << c << endl;
            break;
           
        case 5:
           
            cout << "Dziekuje za skorzystanie z programu. :)";
            break;
        }
    }
    while( a1 <= 4 );
   
    return 0;
}
P-36697
Thud
» 2011-07-23 13:55:42
Powiem tak.
Raczej działa:
[1] Dodawanie
[2] Odejmowanie
[3] Mnozenie
[4] Dzielenie
[5] Rezygnuje

Obecny wynik: 0
1
Podaj liczbe:2r

Podaj druga liczbe:r2

Podaj druga liczbe:r2

Podaj druga liczbe:r2

Podaj druga liczbe:2

Wynik: a+b=2+2=4
[1] Dodawanie
[2] Odejmowanie
[3] Mnozenie
[4] Dzielenie
[5] Rezygnuje

Obecny wynik: 4
2
Podaj liczbe:3.33.3.3

Podaj druga liczbe:3

Wynik: a-b=3.33-3=0.33
[1] Dodawanie
[2] Odejmowanie
[3] Mnozenie
[4] Dzielenie
[5] Rezygnuje

Obecny wynik: 0.33
3
Podaj liczbe:3-3-3-3

Podaj druga liczbe:2.1

Wynik: a*b=3*2.1=6.3
[1] Dodawanie
[2] Odejmowanie
[3] Mnozenie
[4] Dzielenie
[5] Rezygnuje

Obecny wynik: 6.3
4
Podaj liczbe:ić spać

Podaj liczbe:dzięki stary

Podaj liczbe:dziaua

Podaj liczbe:2

Podaj druga liczbe:3.14

Wynik: a/b=2/3.14=0.636943
[1] Dodawanie
[2] Odejmowanie
[3] Mnozenie
[4] Dzielenie
[5] Rezygnuje

Obecny wynik: 0.636943
5
Dziekuje za skorzystanie z programu. :)
Process returned 0 (0x0)   execution time : 76.781 s
Press any key to continue.
P-36702
Lamerek
Temat założony przez niniejszego użytkownika
» 2011-07-23 14:41:21
To jak zrobic zeby nie można  było wpisywać z literami i wieloma kropkami? Tak jak kolega wyżej to zrobił ^^?

Proszę o szybką pomoc.

P-36716
Dark
» 2011-07-23 15:48:11
Skorzystaj z funkcji cin.good() oraz cin.fail() (co wolisz) i postaw to sobie jako warunek zakończenia pętli gdy wpisujesz liczby, resztę powinieneś załapać a jak nie to przeczytaj rozdział kursu jeszcze raz, a jak nie pomoże to wróć do poprzednich
P-36736
Thud
» 2011-07-23 16:54:50
Teoretycznie można zrobić jakiś parser - wczytujesz to co napisałeś jako string i wydzielasz z tego tylko znaki.
P-36738
Lamerek
Temat założony przez niniejszego użytkownika
» 2011-07-24 00:11:36
Kolego Dark ale warunkiem zakończenia wszystkich  pętli w środku programu jest cin.good () więc nie wiem o co ci chodzi?

Może ktoś inny pomoże?

Może na tym poziomie wiedzy nie jestem w stanie zapobiec takim przypadkom. Proszę o odpowiedz
P-36780
jaupl
» 2011-07-24 11:12:06
Jak dla mnie to zadanie jest poprawnie zrobione. Jedyne błędy to to że na początku używasz
using namespace std;
a potem piszesz przy poleceniach
std::
 co nie jest potrzebne. Oraz to że gdy wpiszesz 3.33.333.3 to liczba którą przyjmie program to 3.33 ale raczej nie jesteś w stanie tego zmienić, więc jest to czepianie się. BTW. Czy to jest trzeci temat do tego zadania którego jesteś autorem ?? Czy mi się tylko wydaje ?? ^^
P-36798
SeaMonster131
» 2011-07-24 11:38:58
Czy to jest trzeci temat do tego zadania którego jesteś autorem ?? Czy mi się tylko wydaje ?? ^^
Nie, nie wydaje Ci sie....
P-36799
« 1 » 2
  Strona 1 z 2 Następna strona