Witam mam problem z zadaniem(i zaznaczam nie jest to ONP tylko NP :) ) :
Prosze napisac program obliczajacy formuly notacji polskiej (NP). Dokładne wyjaśnienie mozna znalezc w Wiki. Dzialania sa calkowitoliczbowe. Zmienne i wyniki mieszcza sie w int.
W pierwszej linii podano liczbe zestawow testowych. W kazdej kolejnej linii podana jest jedna formula w NP bez nawiasow.
Chciałem to zrobić w następujący sposób:
1.wczytujemy stringiem wzór
2.we wzorze szukam kiedy są 2 liczby obok siebie (za pomoca kodu ascii)
3.jak znalazlem to sprawdzam znak przed 1sza liczba i obliczam
4.wynik wpisuje w miesce znaku , zuzyte liczby usuwam i calosc przesuwam
5.jezeli nie koniec powtarzam az bedzie koniec
na kartce to dziala :) tylko pytanie czy nie zuzyje to za duzo pamieci ? ew. czy macie jakis prostrzy pomysl na rozwiazanie problemu
przyklad:
- + / / / 6 5 + 7 8 + - 5 2 * 6 9 3 3
ma wyjsc 0
moją metodą
1.- + / / 1 + 7 8 + - 5 2 * 6 9 3 3
2.- + / / 1 15 + - 5 2 * 6 9 3 3
3.- + / 0 + - 5 2 * 6 9 3 3
4.- + / 0 + 3 * 6 9 3 3
5.- + / 0 + 3 54 3 3
6.- + / 0 57 3 3
7.- + 0 3 3
8.- 3 3
9.0
i gdy zacząłem sobie coś pisać to natrafiłem na problem ... a mianowicie zamiana strinka (elementów) na kod ascii
myślałem że atoi pomoże ale niestety ....
czy ktoś mógłby pomóc w zamianie na kod ascii lub podać jakiś lepszy sposób rozwiązania problemu?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
int t,n;
char tab[10];
scanf("%d",&t);
while(t--)
{
scanf("%s", tab);
atoi(tab);
for(n=0;n>=10;n++)
{
if(tab[n]<=57 && tab[n]>=48 && tab[n+1]<=57 && tab[n+1]>=48)
printf("sa 2 liczby obok siebie");
else
printf("nie ma 2ch liczb obok sie bie");
}
}
system("PAUSE");
return 0;
}