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

Zła kolejność wczytywania funkcji.

Ostatnio zmodyfikowano 2015-07-17 21:07
Autor Wiadomość
bulbulator
Temat założony przez niniejszego użytkownika
Zła kolejność wczytywania funkcji.
» 2015-07-17 12:27:05
Cześć, mam problem z jednym z punktów z zadania pod lekcją o funkcjach. Podczas wpisywania liczb poszczególne funkcje wczytują się w odwrotnej kolejności a ja nie mam pojęcia dlaczego. Muszę wkleić cały kod bo nie wiem gdzie jest błąd.

C/C++
#include <iostream>
#include <limits>
#include <cstdlib>
#include <ctime>
using namespace std;

void menu()
{
    cout << "\n MENU \n [1] dodawanie \n [2] odejmowanie \n [3] mnozenie \n [4] dzielenie \n [5] koniec \n";
}

int wczytaj_a()
{
    int a;
    bool sukces;
    int sprawdz = 0;
    do
    {
        cout << "Podaj numer funkcji: ";
        cin >> a;
        bool sukces = cin.good();
        if( sukces == 1 )
        {
            sprawdz = 1;
        }
        else
        {
            cout << "zle, wpisz jeszcze raz" << endl;
            cin.clear();
            cin.sync();
        }
    } while( sprawdz != 1 );
   
    return a;
}

int wczytaj_x()
{
    int x;
    bool sukces;
    int sprawdz = 0;
    do
    {
        cout << "Podaj liczbe x: ";
        cin >> x;
        bool sukces = cin.good();
        if( sukces == 1 )
        {
            sprawdz = 1;
        }
        else
        {
            cout << "zle, wpisz jeszcze raz" << endl;
            cin.clear();
            cin.sync();
        }
    } while( sprawdz != 1 );
   
    return x;
}
int wczytaj_y()
{
    int y;
    bool sukces;
    int sprawdz = 0;
    do
    {
        cout << "Podaj liczbe y: ";
        cin >> y;
        bool sukces = cin.good();
        if( sukces == 1 )
        {
            sprawdz = 1;
        }
        else
        {
            cout << "zle, wpisz jeszcze raz" << endl;
            cin.clear();
            cin.sync();
        }
    } while( sprawdz != 1 );
   
    return y;
}
int dzialania( int liczba, int x, int y )
{
    switch( liczba )
    {
    case 1:
        cout << x << "+" << y << "=" << x + y << endl;
        break;
    case 2:
        cout << x << "-" << y << "=" << x - y << endl;
        break;
    case 3:
        cout << x << "*" << y << "=" << x * y << endl;
        break;
    case 4:
        cout << x << "/" << y << "=" << x / y << endl;
        break;
    case 5:
        exit( 5 );
        break;
       
    }
    return 0;
}


int main()
{
    int a = 5;
    do
    {
        menu();
        int wczytaj_a();
        int wczytaj_x();
        int wczytaj_y();
        dzialania( wczytaj_a(), wczytaj_x(), wczytaj_y() );
    } while( a != 10 );
   
    return 0;
}
Ktoś coś zauważył? Pomóżcie, nowy jestem :D
P-134818
Monika90
» 2015-07-17 13:00:34
Kolejność obliczania wartości argumentów funkcji jest w C++ nieokreślona. Jeżeli zależy Ci na konkretnej kolejności, to wywołaj te funkcje przed funkcją dzialania, ich wyniki zapisz do zmiennych i przekaż do funkcji dzialania te zmienne.
P-134820
JMII89
» 2015-07-17 16:22:08
Bo nie przypisujesz żadnym zmiennym tych wartości z funkcji . Czyli te funkcje tak jakby nic nie zwracają.
P-134838
bulbulator
Temat założony przez niniejszego użytkownika
» 2015-07-17 20:14:50
Zrobiłem to tak, i teraz mam w nieskończoność pokazywaną funkcje z menu,
C/C++
int main()
{
    int o = 2;
    do
    {
        menu();
        int a;
        int wczytaj_a( a );
        int x;
        int wczytaj_x( x );
        int y;
        int wczytaj_y( y );
        dzialania( a, x, y );
    } while( o != 4 );
   
    return 0;
}
chyba coś źle zrobiłem
edit:
na pewno coś źle zrobiłem :)
P-134848
BadBullPL
» 2015-07-17 20:38:16
Tak to powinno wyglądać:
C/C++
int main()
{
        int a = 5;
        do
        {
                menu();
                int a = wczytaj_a();
                int x = wczytaj_x();
                int y = wczytaj_y();
                dzialania( a, x, y );
            } while( a != 10 );
   
       
        return 0;
}
P-134850
bulbulator
Temat założony przez niniejszego użytkownika
» 2015-07-17 21:07:21
dziękuje bardzo za pomoc, problem rozwiązany :)
P-134851
« 1 »
  Strona 1 z 1