Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1.  
  2. const int MAX_S = 100; // definiuje rozmiar stosu
  3.  
  4. int main()
  5. {
  6. double S[MAX_S]; // stos
  7. int p = 0; // wskaźnik stosu
  8. string e; // element wyrażenia ONP
  9. double v1,v2; // argumenty operacji
  10. stringstream ss; // strumień łańcuchowy
  11.  
  12. while(true) // w pętli przetwarzamy wyrażenie ONP
  13. {
  14. getline(cin,e);
  15.  
  16. if(e == "=") break; // sprawdzamy koniec wyrażenia
  17.  
  18. ss.str(""); // usuwamy wszelki tekst ze strumienia
  19. ss.clear(); // czyścimy błędy konwersji z poprzednich wywołań
  20. ss << e; // odczytany element umieszczamy w strumieniu
  21.  
  22. if(ss >> v1) // konwertujemy na liczbę i sprawdzamy, czy nie było błędu
  23. // liczba
  24. S[p++] = v1; // umieszczamy ją na stosie
  25.  
  26. else
  27. { // operator
  28. v2 = S[--p]; // pobieramy ze stosu dwa argumenty
  29. v1 = S[--p];
  30. switch(e[0]) // wykonujemy operacje wg operatora
  31. {
  32. case '+' : v1 += v2; break;
  33. case '-' : v1 -= v2; break;
  34. case '*' : v1 *= v2; break;
  35. case '/' : v1 /= v2; break;
  36. }
  37. S[p++] = v1; // wynik umieszczamy na stosie
  38. }
  39. }
  40.  
  41. cout << fixed << S[--p] << endl; // wypisujemy wynik ze szczytu stosu
  42.  
  43. return 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement