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: #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; }
|
|
pekfos |
» 2018-06-12 13:11:14 Czym się różni podalesA() od podalesB()? |
|
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. |
|
pekfos |
» 2018-06-12 13:56:59 Zła odpowiedź. |
|
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ć. |
|
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.
|
|
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. |
|
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?? #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; }
|
|
« 1 » 2 |