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

Modyfikacja kalkulatora -Rozdział 17. Co to są funkcje i jak się z nich korzysta. (lekcja)

Ostatnio zmodyfikowano 2018-06-12 16:02
Autor Wiadomość
dav001
Temat założony przez niniejszego użytkownika
Modyfikacja kalkulatora -Rozdział 17. Co to są funkcje i jak się z nich korzysta. (lekcja)
» 2018-06-12 12:30:09
Cześć wiem że było już kilka tematów dotyczących tej lekcji ale nie znalazłem w niech rozwiązania mojego problemu. Chcę zmodyfikować kalkulator tak jak jest to w zadania jednak coś mi nie wychodzi, możecie pomóc i podpowiedzieć co jest nie tak w kodzie i jak go zoptymalizować "skrócić", z góry dzięki.

mój kod:

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


float podalesA()
{
    float a;
    std::cin >> a;
    return a;
    while( !( std::cin >> a ) )
    {
        std::cin.clear();
        std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
    }
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
}

int potwierdzenieA()
{
    std::cout << "Podaj liczbe: ";
    int liczbaA = podalesA();
    std::cout << "Podales liczbe: " << liczbaA << std::endl;
   
}
float podalesB()
{
    float b;
    std::cin >> b;
    return b;
    while( !( std::cin >> b ) )
    {
        std::cin.clear();
        std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
    }
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
}
int potwierdzenieB()
{
    std::cout << "Podaj liczbe: ";
    int liczbaB = podalesB();
    std::cout << "Podales liczbe: " << liczbaB << std::endl;
   
}

int main()
{
    char mat;
    float a = podalesA();
    float b = podalesB();
    std::cout << "wpisz  + lub - lub * lub /" << std::endl;
    std::cin >> mat;
    std::cin.clear();
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
   
   
   
    switch( mat )
   
    {
       
    case '+':
        std::cout << "wynik = " << a + b << std::endl;
        break;
       
    case '-':
        std::cout << "wynik = " << a - b << std::endl;
        break;
       
    case '*':
        std::cout << "wynik = " << a * b << std::endl;
        break;
       
    case '/':
        {
            if( b == 0 )
                 std::cout << "Nie dzielimy przez zero" << std::endl;
            else
                 std::cout << "wynik = " << a / b << std::endl;
           
            break;
        }
       
       
    }
   
   
   
   
    return 0;
}
P-171496
pekfos
» 2018-06-12 13:11:14
Czym się różni podalesA() od podalesB()?
P-171497
dav001
Temat założony przez niniejszego użytkownika
» 2018-06-12 13:38:41
podalesA() tyczy się pierwszej cyfry wprowadzonej lub ciągu liczb,
podalesB() tyczy się drugiej cyfry lub ciągu  liczb,
później zamieniane są na zmienne,

float a = podalesA ();
float b = podalesB ();

i na tych zmiennych wykonywane są działania.
P-171501
pekfos
» 2018-06-12 13:56:59
Zła odpowiedź.
P-171503
dav001
Temat założony przez niniejszego użytkownika
» 2018-06-12 14:17:17
Może coś podpowiesz, męczę już to zadanie kilka godzin i nic nie mogę sam wymyślić.
P-171504
YooSy
» 2018-06-12 14:36:13
Prześledź program linijka po linijce, tak jak biegnie program i zapisz na kartce każdy krok.
Na razie masz w kodzie niepotrzebne funkcje, nadmiarowe instrukcje, itd.
Nie panujesz nad kolejnością działań w kodzie.
P-171505
pekfos
» 2018-06-12 14:50:38
Może coś podpowiesz, męczę już to zadanie kilka godzin i nic nie mogę sam wymyślić.
Może dlatego, że niczym się nie różnią? Wykonują te same operacje. Nie ma powodu, żeby to były dwie funkcje.
P-171506
dav001
Temat założony przez niniejszego użytkownika
» 2018-06-12 15:10:53
Działa, zmieniłem to  że wpisywanie return z funkcji podalesB/podalesA do zmiennej następuje tylko raz, do kolejnej zmiennej wpisywany jest return "kolejnej" funkcji . Możecie jeszcze skomentować czy jest  ok??
C/C++
#include <iostream>
#include <limits>


float podalesA()
{
    float a;
    std::cin >> a;
    return a;
    while( !( std::cin >> a ) )
    {
        std::cin.clear();
        std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
    }
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
}

int potwierdzenieA()
{
    std::cout << "Podaj liczbe: ";
    int liczbaA = podalesA();
    std::cout << "Podales liczbe: " << liczbaA << std::endl;
    return liczbaA;
   
}
float podalesB()
{
    float b;
    std::cin >> b;
    return b;
    while( !( std::cin >> b ) )
    {
        std::cin.clear();
        std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
    }
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
}
int potwierdzenieB()
{
    std::cout << "Podaj liczbe: ";
    int liczbaB = podalesB();
    std::cout << "Podales liczbe: " << liczbaB << std::endl;
    return liczbaB;
   
}

int main()
{
    char mat;
    float a = potwierdzenieA();
    float b = potwierdzenieB();
    std::cout << "wpisz  + lub - lub * lub /" << std::endl;
    std::cin >> mat;
    std::cin.clear();
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
   
   
   
    switch( mat )
   
    {
       
    case '+':
        std::cout << "wynik = " << a + b << std::endl;
        break;
       
    case '-':
        std::cout << "wynik = " << a - b << std::endl;
        break;
       
    case '*':
        std::cout << "wynik = " << a * b << std::endl;
        break;
       
    case '/':
        {
            if( b == 0 )
                 std::cout << "Nie dzielimy przez zero" << std::endl;
            else
                 std::cout << "wynik = " << a / b << std::endl;
           
            break;
        }
       
       
    }
   
   
   
   
    return 0;
}
P-171509
« 1 » 2
  Strona 1 z 2 Następna strona