• 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
1,144 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 Nałogowiec (44,950 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

0 głosów
0 odpowiedzi 582 wizyt
0 głosów
0 odpowiedzi 1,270 wizyt
pytanie zadane 17 marca 2020 w C i C++ przez Padoski Użytkownik (990 p.)
0 głosów
0 odpowiedzi 427 wizyt

93,425 zapytań

142,421 odpowiedzi

322,646 komentarzy

62,786 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...