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

[C++] Rozdzial 15, zadania 2/3

Ostatnio zmodyfikowano 2016-07-11 09:57
Autor Wiadomość
Kano1337
Temat założony przez niniejszego użytkownika
[C++] Rozdzial 15, zadania 2/3
» 2016-07-10 23:18:10
Witam.
Wiem,że takich tematów są dziesiątki, ale prosiłbym mimo wszystko o sprawdzenie mojego kodu ;). Po długim czasie powróciłem do kursu, zacząłem go od nowa i doszedłem do Rozdziału 17(początki funkcji).

Wiem,że wyszedłem nieco ponad 15 rozdział przy robieniu tych zadań, bo użyłem m.in. funkcji które były później, ale o to chodziło ;).

C/C++
#include <iostream>
#include <cstdlib>

using namespace std;

///////////****** WPROWADZANIE LICZBY I SPRAWDZANIE POPRAWNOSCI **********//////////////////


float wprowadzanie_liczby()
{
    float liczba;
    cout << "Wprowadz liczbe rzeczywista : ";
    cin >> liczba;
    while( cin.fail() )
    {
        cin.clear();
        cin.ignore();
        cout << "Niepoprawny znak ! Sprobuj ponownie : ";
        cin >> liczba;
    }
   
    if( liczba == 0 )
    {
        cout << "Koniec imprezy, dziekuje dobranoc.";
        exit( 0 );
    }
   
   
    return liczba;
}




////////////////*********** DODAWANIE *************////////////////////

float dodawanie( float a, float b )
{
    return a + b;
   
}


////////////////*********** ODEJMOWANIE *************** /////////////

float odejmowanie( float a, float b )
{
    return a - b;
}





//////////////////*********** MNOZENIE *************////////////////////

float mnozenie( float a, float b )
{
    return a * b;
}




////////////////************* DZIELENIE ***********////////////////////

float dzielenie( float a, float b )
{
    return a / b;
}



//////////*********** WYBÓR DZIA£ANIA *************///////////////////
int wybor_dzialania()
{
   
   
    cout << " \t Wybierz interesujace Cie dzialanie: " << endl;
    cout << " [1] Dodawanie " << endl;
    cout << " [2] Odejmowanie " << endl;
    cout << " [3] Mnozenie " << endl;
    cout << " [4] Dzielenie " << endl;
    cout << " [5] Rezygnuj " << endl;
   
    cout << "Wybieram opcje : ";
    int dzialanie;
    cin >> dzialanie;
    while( cin.fail() )
    {
        cin.clear();
        cin.ignore();
        cout << "Niepoprawny znak, wprowadz liczbe calkowita: ";
        cin >> dzialanie;
    }
    return dzialanie;
}




int main()
{
    int kontynuacja;
    int dzialanie;
    float wynik_p = 4, wynik, liczba;
   
    do
    {
        cout << "Aktualny wynik " << wynik_p << endl;
        liczba = wprowadzanie_liczby();
        do
        {
           
            dzialanie = wybor_dzialania();
           
            switch( dzialanie )
            {
            case 1:
                wynik = dodawanie( wynik_p, liczba );
                cout << "Wynik dodawania " << wynik_p << " oraz " << liczba << " to " << wynik << endl;
                break;
            case 2:
                wynik = odejmowanie( wynik_p, liczba );
                cout << "Wynik odejmowania " << wynik_p << " oraz " << liczba << " to " << wynik << endl;
                break;
            case 3:
                wynik = mnozenie( wynik_p, liczba );
                cout << "Wynik mnozenia " << wynik_p << " oraz " << liczba << " to " << wynik << endl;
                break;
            case 4:
                wynik = dzielenie( wynik_p, liczba );
                cout << "Wynik dzielenia " << wynik_p << " oraz " << liczba << " to " << wynik << endl;
                break;
            case 5:
                cout << "Dziekuje za skorzysatnie z mojego programu :) ";
                return 0;
                break;
               
            default:
                cout << "Nie ma takiej opcji, sprobuj ponownie " << endl << endl;
                break;
            }
           
        } while(( dzialanie < 1 ) ||( dzialanie > 5 ) );
       
        wynik_p = wynik;
       
        cout << "KONTYNUOWAC? (1 - TAK/0 - NIE) : ";
        cin >> kontynuacja;
       
        if( kontynuacja == 0 )
        {
            cout << "Dziekuje za skorzystanie z mojego programu :) ";
            return 0;
        }
       
       
    } while(( kontynuacja != 0 ) &&( dzialanie != 5 ) );
   
   
    return 0;
}

Program działa, moim zdaniem spełnia założenia które zostały postawione w pracy domowej.Prosiłbym o wytknięcie ew. błędów w zapisie, być może popełniłem gdzieś zbrodnie tak jak kiedyś używając goto i powinienem już wisieć na stryczku ? :)  Mam nadzieję,że będziecie łaskawi i mnie oszczędzicie.
P-149822
Gibas11
» 2016-07-11 03:22:02
while(( dzialanie < 1 ) ||( dzialanie > 5 ) );
i
while(( kontynuacja != 0 ) &&( dzialanie != 5 ) );
Zbędne nawiasy.

if( liczba == 0 )
 - nie masz gwarancji że to zadziała, liczby zmiennoprzecinkowe to czarna magia i generalnie nie porównuj ich tym operatorem. W tym temacie masz trochę o tym: http://cpp0x.pl/forum/temat/​?id=20414

Poza tym raczej spoko.
P-149824
carlosmay
» 2016-07-11 06:11:46
Zbędne nawiasy.
Dlaczego?
P-149827
Gibas11
» 2016-07-11 09:57:43
@Up bo nie bardzo jest sens brać w nawiasy tak proste wyrażenia,
while(( dzialanie < 1 ) ||( dzialanie > 5 ) );
 można zapisać jako
while( dzialanie < 1 || dzialanie > 5 );
 i jest to raczej przejrzystsze niż oryginał.
P-149830
« 1 »
  Strona 1 z 1