[Lekcja 17] Problem z zadaniem domowym.
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

[Lekcja 17] Problem z zadaniem domowym.

AutorWiadomość
Temat założony przez niniejszego użytkownika
[Lekcja 17] Problem z zadaniem domowym.
» 2012-01-02 21:51:45
Proszę Was o pomoc, bo sam nie jestem w stanie tego rozwiązać .. !

Mamy za zadanie przekształcić kalkulator z poprzednich lekcji, tak aby wczytywał dane wejściowe z funkcji i przypisywał ją do działań matematycznych.

Ok .. mam coś takiego:

C/C++
#include <iostream>

using namespace std;

int wczytajLiczbe()
{
    int a, b;
   
    cout << "Podaj pierwsza liczbe: ";
    cin >> a;
    cout << "Podaj druga liczbe: ";
    cin >> b;
   
    return a, b;
}

int main()
{
    int dzialanie;
    int dodawanie = a + b;
    int odejmowanie = a - b;
    int mnozenie = a * b;
    int dzielenie = a / b;
   
    do
    {
        cout << "KALKULATOR !!!" << endl << endl;
        cout << "[1] Dodawanie" << endl;
        cout << "[2] Odejmowanie" << endl;
        cout << "[3] Mnozenie" << endl;
        cout << "[4] Dzielenie" << endl;
        cout << "[5] Wyjscie" << endl;
       
        cout << "Co chcesz wybrac? ";
        cin >> dzialanie;
       
        if( dzialanie > 5 || dzialanie < 1 )
        do
        {
            cout << "Nie ma takich opcji!" << endl << endl;
           
        } while( dzialanie > 5 || dzialanie < 1 );
       
        switch( dzialanie )
        {
        case 1:
            {
                cout << "Wybrales dodawanie!" << endl << endl;
                wczytajLiczbe();
                cout << "Obliczam " << a << " + " << b << " = " << dodawanie;
                break;
            }
        case 2:
            {
                cout << "Wybrales odejmowanie!" << endl << endl;
                wczytajLiczbe();
                cout << "Obliczam " << a << " - " << b << " = " << odejmowanie;
                break;
            }
        case 3:
            {
                cout << "Wybrales mnozenie!" << endl << endl;
                wczytajLiczbe();
                cout << "Obliczam " << a << " * " << b << " = " << mnozenie;
                break;
            }
        case 4:
            {
                cout << "Wybrales dzielenie!" << endl << endl;
                wczytajLiczbe();
                cout << "Obliczam " << a << " / " << b << " = " << dzielenie;
                break;
            }
        case 5:
            {
                cout << "Wybrales Wyjscie!!!" << endl << endl;
            }
        }
    } while( dzialanie != 5 );
   
    return 0;
}

I teraz niech mi ktoś wytłumaczy jak mam zadeklarować wartość zwracanej funkcji wczytajLiczbe() do działań matematycznych.

Edit: .. poprawiłem, bo miałem mały błąd.

P-47095
» 2012-01-02 22:05:15
Ale co poprawiłeś... problem rozwiązałeś czy co? Jak rozwiązałeś problem to napisz co zrobiłeś źle dla potomności.

Druga opcja to napisz, że rozwiązałeś problem samodzielnie to przeniosę temat do kosza bo i tak nikomu do niczego się on nie przyda :)
P-47096
Temat założony przez niniejszego użytkownika
» 2012-01-02 22:10:43
Poprawiłem mały błąd, ale to nie rozwiązuje mojego problemu, po prostu miałem zmienna int wynik = a + b i przypisałem
ją do każdego działania tzn. zarówno dodawania jak i odejmowania, mnożenia, dzielenia.

W dalszej części oczekuję jakiś wskazówek ; > //Jako iż jestem początkujący ! =)

Dobra już!













... prawie =)

Skróciłem trochę kod i wyrzuciłem wszystkie zmienne pozostawiając samą funkcję do obliczenia:
Dokładniej chodzi o to:

C/C++
case 1:
{
    cout << "Wybrales dodawanie!" << endl << endl;
   
    cout << "Obliczam " << " = " << wczytajLiczbe() + wczytajLiczbe2() << endl << endl;
    break;
}
case 2:
{
    cout << "Wybrales odejmowanie!" << endl << endl;
   
    cout << "Obliczam " << " = " << wczytajLiczbe() - wczytajLiczbe2() << endl << endl;
    break;
}
case 3:
{
    cout << "Wybrales mnozenie!" << endl << endl;
   
    cout << "Obliczam " << " = " << wczytajLiczbe() * wczytajLiczbe2() << endl << endl;
    break;
}
case 4:
{
    cout << "Wybrales dzielenie!" << endl << endl;
   
    cout << "Obliczam " << " = " << wczytajLiczbe() / wczytajLiczbe2() << endl << endl;
    break;
}

Kod wygląda tak:

C/C++
#include <iostream>

using namespace std;

int wczytajLiczbe()
{
    int a;
   
    cout << "Podaj pierwsza liczbe: ";
    cin >> a;
   
    return a;
}

int wczytajLiczbe2()
{
    int b;
   
    cout << "Podaj druga liczbe: ";
    cin >> b;
   
    return b;
}
int main()
{
    int dzialanie;
   
    do
    {
        cout << "KALKULATOR !!!" << endl << endl;
        cout << "[1] Dodawanie" << endl;
        cout << "[2] Odejmowanie" << endl;
        cout << "[3] Mnozenie" << endl;
        cout << "[4] Dzielenie" << endl;
        cout << "[5] Wyjscie" << endl;
       
        cout << "Co chcesz wybrac? ";
        cin >> dzialanie;
       
        if( dzialanie > 5 || dzialanie < 1 )
        do
        {
            cout << "Nie ma takich opcji!" << endl << endl;
           
        } while( dzialanie > 5 || dzialanie < 1 );
       
        switch( dzialanie )
        {
        case 1:
            {
                cout << "Wybrales dodawanie!" << endl << endl;
               
                cout << "Obliczam " << " = " << wczytajLiczbe() + wczytajLiczbe2() << endl << endl;
                break;
            }
        case 2:
            {
                cout << "Wybrales odejmowanie!" << endl << endl;
               
                cout << "Obliczam " << " = " << wczytajLiczbe() - wczytajLiczbe2() << endl << endl;
                break;
            }
        case 3:
            {
                cout << "Wybrales mnozenie!" << endl << endl;
               
                cout << "Obliczam " << " = " << wczytajLiczbe() * wczytajLiczbe2() << endl << endl;
                break;
            }
        case 4:
            {
                cout << "Wybrales dzielenie!" << endl << endl;
               
                cout << "Obliczam " << " = " << wczytajLiczbe() / wczytajLiczbe2() << endl << endl;
                break;
            }
        case 5:
            {
                cout << "Wybrales Wyjscie!!!" << endl << endl;
            }
        }
    } while( dzialanie != 5 );
   
    return 0;
}

Niby wszystko wygląda ok.
Najważniejsze, że wykonuje poprawne obliczenia i nie wywołuje funkcji 6x ! =)
Ale .. jak mam zrobić, aby pokazywało jaką operacje przeprowadza ?
                        
Chodzi o np. wczytajLiczbe() + wczytajLiczbe2() = x
                 [3]         +     [3]          = 6
                                                           
Natomiast mi pokazuje tak:

Podaj pierwsza liczbe: 3
Podaj druga liczbe: 3
Obliczam = 9

Wiem w czym tkwi problem, ale nie umiem go rozwiązać,
hm.. może nie tyle, że nie umiem, ale nie myślę (Kto myśli po 12h na komputerze =) i tak dzień w dzień ! < Uczę Się >_> ).

P-47098
» 2012-01-02 22:47:09
Wskazówka: zrób pierwsze zadanie ze wspomnianego rozdziału - pominąłeś je, więc nie potrafisz rozwiązać dalszych zadań :)
P-47103
Temat założony przez niniejszego użytkownika
» 2012-01-02 22:52:09
Ale ja je zrobiłem =)  // Każdego dnia powracam do wszystkich zadań, które już wykonałem, tak dla utrwalenia wiadomości, bo mam zamiar w przyszłości zostać programistą !

Co do mojego edita w drugim poście, to zrobiłem dwie funkcje dla dwóch liczb.
Szczerze to mnie to trochę odstrasza, bo jest dłuższy kod, wolałbym to wszystko przeprowadzić w oparciu o jedną funkcję !

EDIT:

Wreszcie ...

Zrobiłem, przyznam się, że musiałem trochę pogłówkować =)
Aż mnie mięśnie mózgu bolą ... <joke>

C/C++
#include <iostream>

using namespace std;

int wczytajLiczbe()
{
    int a;
   
    cout << "Podaj pierwsza liczbe: ";
    cin >> a;
   
    return a;
}

int wczytajLiczbe2()
{
    int b;
   
    cout << "Podaj druga liczbe: ";
    cin >> b;
   
    return b;
}
int main()
{
    int dzialanie;
   
    do
    {
        cout << "KALKULATOR !!!" << endl << endl;
        cout << "[1] Dodawanie" << endl;
        cout << "[2] Odejmowanie" << endl;
        cout << "[3] Mnozenie" << endl;
        cout << "[4] Dzielenie" << endl;
        cout << "[5] Wyjscie" << endl;
       
        cout << "Co chcesz wybrac? ";
        cin >> dzialanie;
       
        if( dzialanie > 5 || dzialanie < 1 )
        do
        {
            cout << "Nie ma takich opcji!" << endl << endl;
           
        } while( dzialanie > 5 || dzialanie < 1 );
       
        switch( dzialanie )
        {
        case 1:
            {
                cout << "Wybrales dodawanie!" << endl << endl;
                int dodawanie1 = wczytajLiczbe(), dodawanie2 = wczytajLiczbe2();
                int wynikDodawania = dodawanie1 + dodawanie2;
                cout << "Obliczam " << dodawanie1 << " + " << dodawanie2 << " = " << wynikDodawania << endl << endl;
                break;
            }
        case 2:
            {
                cout << "Wybrales odejmowanie!" << endl << endl;
                int odejmowanie1 = wczytajLiczbe(), odejmowanie2 = wczytajLiczbe2();
                int wynikOdejmowania = odejmowanie1 - odejmowanie2;
                cout << "Obliczam " << odejmowanie1 << " - " << odejmowanie2 << " = " << wynikOdejmowania << endl << endl;
                break;
            }
        case 3:
            {
                cout << "Wybrales mnozenie!" << endl << endl;
                int mnozenie1 = wczytajLiczbe(), mnozenie2 = wczytajLiczbe2();
                int wynikMnozenia = mnozenie1 * mnozenie2;
                cout << "Obliczam " << mnozenie1 << " * " << mnozenie2 << " = " << wynikMnozenia << endl << endl;
                break;
            }
        case 4:
            {
                cout << "Wybrales dzielenie!" << endl << endl;
                int dzielenie1 = wczytajLiczbe(), dzielenie2 = wczytajLiczbe2();
                int wynikDzielenia = dzielenie1 / dzielenie2;
                cout << "Obliczam " << dzielenie1 << " / " << dzielenie2 << " = " << wynikDzielenia << endl << endl;
                break;
            }
        case 5:
            {
                cout << "Wybrales Wyjscie!!!" << endl << endl;
            }
        }
    } while( dzialanie != 5 );
   
    return 0;
}

Jak ktoś mógłby luknąć i się wypowiedzieć ;>
Szczególnie w sprawie skrócenia kodu jak się da ! // Wiem, że można to wsadzić do jednej funkcji, ale dziś już nie będę myślał .. idę spać.
P-47104
» 2012-02-02 18:54:24
Ja to zrobiłem trochę inaczej. Może nie do końca zgodne z poleceniem ale mniej więcej działa:
C/C++
#include <iostream>
#include <cstdio>
using namespace std;

float wczytajLiczbed( int a, int b )
{
    return a + b;
}
float wczytajLiczbeo( int a, int b )
{
    return a - b;
}
float wczytajLiczber( int a, int b )
{
    return a * b;
}
float wczytajLiczbedz( int a, int b )
{
    return a / b;
}
int main()
{
    float c, d;
    cout << "Podaj a: ";
    cin >> c;
    cout << "Podaj b: ";
    cin >> d;
    float wynik1 = wczytajLiczbed( c, d );
    cout << "Wynik dodawania: " << wynik1 << endl;
    float wynik2 = wczytajLiczbeo( c, d );
    cout << "Wynik odejmowania: " << wynik2 << endl;
    float wynik3 = wczytajLiczber( c, d );
    cout << "Wynik mnozenia: " << wynik3 << endl;
    float wynik4 = wczytajLiczbedz( c, d );
    cout << "Wynik dzielenia: " << wynik4 << endl;
    return 0;
}
P-49988
Jeszcze krócej
» 2012-02-13 18:43:33
C/C++
#include <iostream>

using namespace std;

int wczytajLiczbe1( int a, int b )
{
    return a + b;
   
}
int wczytajLiczbe2( int a, int b )
{
    return a - b;
   
}

int wczytajLiczbe3( int a, int b )
{
    return a / b;
   
}

int wczytajLiczbe4( int a, int b )
{
    return a * b;
   
}

int main()
{
   
    int a1;
    int b1;
    cout << "Podaj liczbe a: ";
    cin >> a1;
    cout << "Podaj liczbe b: ";
    cin >> b1;
    cout << "Podaj wynik dodawania: " << wczytajLiczbe1( a1, b1 ) << endl;
    cout << "Podaj wynik odejmowania: " << wczytajLiczbe2( a1, b1 ) << endl;
    cout << "Podaj wynik dzielenia: " << wczytajLiczbe3( a1, b1 ) << endl;
    cout << "Podaj wynik mnozenia: " << wczytajLiczbe4( a1, b1 ) << endl;
   
    return 0;
}
P-50692
zmienne
» 2012-02-13 18:46:26
P.S jak kogos interesuje otrzymywanie reszty z dzielenia to oczywscie wymagana jest zamiana int na float
P-50694
« 1 » 2
 Strona 1 z 2Następna strona