fork(2) download
  1. program ideone;
  2. const MAX_S = 100; // definiuje rozmiar stosu
  3.  
  4. var
  5. S : array[0..MAX_S-1] of double; // stos
  6. p : integer; // wskačnik stosu
  7. e : string; // element wyra_enia ONP
  8. v1,v2 : double; // argumenty operacji
  9. c : word; //plik:text; // pozycja b_ŕdu przy konwersji
  10. begin
  11.  
  12. //assign(plik,'dzialanie.txt');
  13. //reset(plik);
  14. //readln(plik,e);
  15.  
  16.  
  17. p := 0; // inicjujemy stos;
  18.  
  19. repeat // w pŕtli przetwarzamy wyra_enie ONP
  20. //readln(plik,e); // odczytujemy element wyra_enia ONP
  21. readln(e);
  22.  
  23. if e = '=' then break;
  24.  
  25. val(e,v1,c); // dokonujemy konwersji
  26.  
  27. if c = 0 then
  28. begin // liczba
  29. S[p] := v1; // umieszczamy j_ na stosie
  30. inc(p); // zwiŕkszamy wskačnik stosu
  31. end
  32. else
  33. begin // operator
  34. v1 := S[p-2]; // pobieramy ze stosu dwa argumenty
  35. v2 := S[p-1];
  36. case e[1] of // wykonujemy operacje wg operatora
  37. '+' : v1 := v1 + v2;
  38. '-' : v1 := v1 - v2;
  39. '*' : v1 := v1 * v2;
  40. '/' : v1 := v1 / v2;
  41. end;
  42. S[p-2] := v1; // wynik umieszczamy na stosie
  43. dec(p); // ze stosu zniknŕ_a jedna liczba
  44. end;
  45.  
  46. until false;
  47.  
  48. writeln(S[p-1]:0:6); // wypisujemy wynik ze szczytu stosu
  49. readln;
  50. //close(plik);
  51.  
  52. end.
Success #stdin #stdout 0s 276KB
stdin
4
4
+
=
stdout
8.000000