NOTacja Polska problem z algorytmem

0

NIE CHCĘ GOTOWCA , PROSZĘ TYLKO O POMOC, GDYŻ JESTEM POCZĄTKUJĄCA.
Chciałabym dostać jakies wskazxówki dotyczące programu.
Proszę napisać program obliczający formuły notacji polskiej (NP). Dokładne wyjaśnienie można znaleźć w Wiki. Działania są całkowitoliczbowe. Zmienne i wyniki mieszczą się w int.

Wskazówka 1. Zastosować rekurencję.

Wskazówka 2. Czytanie napisów można realizować np.:

char napis[10];

scanf("%s", napis);

Wtedy scanf ignoruje białe znaki na początku, a odwołać się do pierwszej litery można na przykad napis[0].

Wskazówka 3. Zamianę napisu na typ całkowity o ile to możliwe wykonuje funkcja z stdlib.h

atoi(napis);

Input

W pierwszej linii podano liczbę zestawów testowych. W każdej kolejnej linii podana jest jedna formuła w NP bez nawiasów.
Output

Jena liczba będąca rozwiązaniem odpowiedniej formuły.
Example

Input:

8

3 + 1 3
    • 1 1 + 1 1
  • 2 2

/ / 4 - / 7 10 1 10

    • 2 5 - 8 6
    • / / / 6 5 + 7 8 + - 5 2 * 6 9 3 3
    • 4 6 8

/ 8 7

Output:

12

4

4

0

-1

0

6

1

0

Jeśli chcesz tylko pomocy, a nie gotowca, to określ co już zrobiłaś i z czym masz problem.

0

Tak a propos te wskazówki wyglądają mi na świadomie zbijające z tropu.
Rekurencja owszem może trochę uprościć zaś jeżeli popełnisz najdrobniejszy błąd będziesz go szukać bardzo długo - więc odradzam.
char napis[10];
scanf("%s",napis);
nigdy nie należy tak robić by nie mazać po pamięci, co najwyżej: scanf("%9s",napis);

Nie mówiąc już o tym że pewnie źle to przekopiowałeś ponieważ równania w NP nie odpowiadają wynikam.
Np:
3 + 1 3 powinno być * 3 + 1 3 aby wyszło 12

0

Mam czytanie w odwrotnej kolejnosci , ilosc testów, tylko nie chce mi wyrzucac wynikow. np jak jest +2 2 to wychodzi albo dodawanie albo + 4 4

0

#include<stdio.h>
#include <iostream>
#include <stdlib.h>

void turn_around (void)
{
int c;
while(( c = getchar ()) != EOF)
turn_around ();
putchar (c);
}
int main (void)
{
turn_around ();

{
int t;
scanf("%d",&t);
char napis[10];
for (int i=1; i<=t; i++)
scanf("%s",napis);

printf("%d", atoi(napis));

system("pause");
return 0;
}
}

0

to ma wyglądać raczej mniej więcej tak:

double policzONP(istream &dane) {
      string s;
      dane >> s;

      if (s ?????) {
            return policzONP(dane) + policzONP(dane)
      }

      ...

      if (s ?????) {
          double wynik;
          stringstream dana(s);
          dana >> wynik;
          return wynik;
      }
      cerr << "Błąd podczas interpretowania ONP" << endl;
      return 0;
}
0

to ma być NP ... a nie ONP

0

nie .. czyli ma byc tak samo tylko w drugą stronę tak?

1 użytkowników online, w tym zalogowanych: 0, gości: 1