• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kalkulator 3 zmienne / odwrotna notacja polska

0 głosów
60 wizyt
pytanie zadane 7 grudnia 2018 w C i C++ przez Karitto Użytkownik (610 p.)

Hej, piszę quiz w którym użytkownik sprawdza swoją wiedze matematyczną. Na ekranie pojawia się działanie i z klawiatury wczytuje się wynik. Jezeli jest on poprawny uzytkownik dostaje punkt. Znak działania i liczby(zakres 1-99) są generowane losowo. 

Obliczenia wykonywane są dla trzech liczb, napisałem taką funkcje która liczy, ale zapis ten wydaje mi się nieelegancki i zastanawiam się czy nie da się tego jakoś uproscic. 

argumenty a b c są wczesniej losowane i podawane do funckji, znaki działa tak samo. 

Dodam, że działania potrzebuje zapisać w odróconej notacji polskiej. W następnym kroki chce dodać nawiasy co jeszcze bardziej wydłużyłoby liste 

 

float dzialanie(float a, float b, float c, char operation1, char operation2)
{
if (operation1 == '+' && operation2 == '+')
    return abc++;
if (operation1 == '+' && operation2 == '-')
    return abc+-;
if (operation1 == '+' && operation2 == '*')
    return abc*+;
if (operation1 == '+' && operation2 == '/')
    return abc/+;

if (operation1 == '-' && operation2 == '+')
    return abc-+;
if (operation1 == '-' && operation2 == '-')
    return abc--;
if (operation1 == '-' && operation2 == '*')
    return abc*-;
if (operation1 == '-' && operation2 == '/')
    return abc/-;

if (operation1 == '*' && operation2 == '+')
    return ab*c+;
if (operation1 == '*' && operation2 == '-')
    return ab*c-;
if (operation1 == '*' && operation2 == '*')
    return ab*c*+;
if (operation1 == '*' && operation2 == '/')
    return ab*c/+;

if (operation1 == '/' && operation2 == '+')
    return ab/c+;
if (operation1 == '/' && operation2 == '-')
    return ab/c-;
if (operation1 == '/' && operation2 == '*')
    return ab/c*;
if (operation1 == '/' && operation2 == '/')
    return ab/c/;
return 0;
}

 

 

1 odpowiedź

+1 głos
odpowiedź 7 grudnia 2018 przez DeBos123 Dyskutant (9,340 p.)
Na dole tej strony: http://csis.pace.edu/~wolf/CS122/infix-postfix.htm masz rozpisane w jaki sposób "przekonwertować" działanie na RPN (odwróconą notacje polską).

Jeżeli będziesz chciał w przyszłości dodać funkcje do działań to może ci się przydać ten algorytm: https://en.wikipedia.org/wiki/Shunting-yard_algorithm

Podobne pytania

+6 głosów
3 odpowiedzi 2,602 wizyt
pytanie zadane 12 kwietnia 2015 w JavaScript, jQuery, AJAX przez FilipM Początkujący (420 p.)
0 głosów
1 odpowiedź 175 wizyt
pytanie zadane 28 stycznia 2018 w C i C++ przez elzulninho Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 91 wizyt
pytanie zadane 21 października 2018 w Matematyka, fizyka, logika przez Szymon137 Nowicjusz (140 p.)
Porady nie od parady
Zadając pytanie postaraj się o odpowiedni tytuł, kategorię oraz tagi.Tagi

59,248 zapytań

104,670 odpowiedzi

216,616 komentarzy

31,668 pasjonatów

Przeglądających: 252
Pasjonatów: 19 Gości: 233

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...