Notacja polska - zamiana na ascii lub inna metoda? [C]

0

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;
}
 
0

źle masz warunek w pętli for ma być chyba n <= 10 atoi zamienienia tylko jeden znak ascii na inta. to co ty zrobiłeś to podałeś adres pierwszego elementu stringa i tylko go zamieniłeś na inta, ponieważ nazwa tablicy jest adresem jej początku.

0

coś takiego mniej wiecej dopisać?

 for(n=0;n<=10;n++)
            atoi(tab[n]); 

czy lepiej pokoleii?

0

dobra ośmieszyłem sie lekko ;p

zrobione temat do zamknięcia
:D

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