• 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
87 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 Pasjonat (15,160 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,725 wizyt
pytanie zadane 12 kwietnia 2015 w JavaScript, jQuery, AJAX przez FilipM Początkujący (420 p.)
0 głosów
1 odpowiedź 201 wizyt
pytanie zadane 28 stycznia 2018 w C i C++ przez elzulninho Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 121 wizyt
pytanie zadane 21 października 2018 w Matematyka, fizyka, logika przez Szymon137 Nowicjusz (160 p.)
Porady nie od parady
Forum posiada swój własny chat IRC, dzięki któremu będziesz mógł po prostu pogadać z innymi Pasjonatami lub zapytać o jakiś problem. Podstrona z chatem znajduje się w menu pod ikoną człowieka w dymku.IRC

61,385 zapytań

107,325 odpowiedzi

223,536 komentarzy

33,148 pasjonatów

Przeglądających: 127
Pasjonatów: 8 Gości: 119

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.

...