Oblicznie wyrażenia [C++]

.

  1. Jeżeli napis wejściowy zaczyna się znakiem ‘(’ a kończy się znakiem ‘)’ to obciąć oba.

  2. Wyzerować zmienne liczba_nawiasów=0, Same_Cyfry=true

  3. Pętla przeglądająca znaki napisu wejściowego START

  4. Jeżeli kolejny znak jest nawiasem otwierającym Same_Cyfry=false; oraz zwiększ liczba_nawiasów

  5. Jeżeli kolejny znak jest nawiasem zamykającym Same_Cyfry=false; oraz zmniejsz liczba_nawiasów i a jeżeli mniejsza niż zero to BŁĄD

  6. Jeżeli kolejny znak jest znakiem operacji +,-,*,/ a liczba_nawiasów jest zerem to podziel w tym miejscu napis i wywołaj funkcje rekurencyjne fun(od lewej części) operacja fun(od prawej części) i zwróć wynik.

  7. Jeżeli kolejny znak nie jest cyfrą to Same_Cyfry=false;

  8. Koniec pętli.

  9. Jeżeli Same_Cyfry to skonwertuj napis na liczbę i zwłócz ją

  10. BŁĄD

.

#include 

using namespace std;


int main()

{

//tutaj cały algorytm obliczeń

return 0;

}

Idąc w myśl z forum 4programmers, NIKT NIE JEST NA TYLE NAIWNY, BY NAPISAĆ ZA CIEBIE CAŁY PROGRAM, CZYLI ODROBIĆ ZA CIEBIE (W KOŃCU TO TY DOSTAŁES) ZADANIE DOMOWE, zacznij pisać, spytaj o konkretny problem przedstawiając swój kod, a na pewno ktoś pomoże.

Swoją drogą, możesz poszukać rozwiązań, jakie stosowane są w kalkulatorach wysokiej klasy, a wymyślonych przez Polaków, czyli Odwrotnej Notacji Polskiej (onp), w tedy kalkulator poradzi sobie ze wszystkim, szukaj w Google “onp +c++”

Niestety nie masz racji, z odwrotną polską notacją będzie pewien problem a mianowicie uwzględnia priorytety operacji, a w zadaniu ma nie uwzględniać.

Priorytetów uwzględniać nie trzeba, ale można. Równie dobrze można użyć konwersji na ONP.

Przecież ziołkowski właśnie o tym pisał. Masz racje nie doczytałem że można jednak uwzględniać.

Pamiętam też kiedyś, że jak przeglądałem przykładowy rozdział tej książki (która jest jeszcze w przygotowaniu) to natrafiłem się właśnie na taki program :slight_smile:

:arrow: http://helion.pl/ksiazki/pcpptp.htm