[C] Notacja polska - sposób
Ostatnio zmodyfikowano 2012-11-08 13:01
wisien92 Temat założony przez niniejszego użytkownika |
[C] Notacja polska - sposób » 2012-11-06 16:24:06 Witam mam takie zadanie: 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 pozdrawiam |
|
DejaVu |
» 2012-11-06 16:28:48 Wydaje mi się, że są na to gotowe algorytmy... |
|
wisien92 Temat założony przez niniejszego użytkownika |
» 2012-11-06 16:36:28 no właśnie NP i ONP sie zapisuje odwrotnie ONP 2 3 + 5 * NP * 5 + 3 2
czyli stosu wydaje mi sie nie trzeba a raczej rekurencyjnie to rozwiązać ... chyba, że czegoś nie dotrzegam |
|
crash |
» 2012-11-06 16:37:17 |
|
m4tx |
» 2012-11-06 16:51:20 Dobrze Ci się wydaje DejaVu@ :)
Osobiście korzystałem (ale tylko jako wzór): http://edu.i-lo.tarnow.pl/inf/utils/010_2010/0410.php
Wszystko jest w Googlach. |
Taa... Tylko że podajesz link do ONP, a autorowi chodzi o NP. To jest jednak różnica :) |
|
crash |
» 2012-11-06 17:07:35 Zobaczyłem to właśnie kilkanaście sekund za późno. Nie mam nic na swoje usprawiedliwienie ;]
Hmm, a gdyby tak wejście czytać od tylca? Albo sobie wynik ONP odwrócić... Tylko kurka nie tędy droga chyba ;p </offtop> |
|
wisien92 Temat założony przez niniejszego użytkownika |
» 2012-11-06 17:25:16 chciałem narazie dla dowolnego stringa sprawdzic czy sa 2 liczby obok siebie ... (dodatkowe pytanie(:)) -czy atoi nie powinno zmieniac tego stringa na kod ascii?) char tab[ 10 ];
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" ); }
|
|
DejaVu |
» 2012-11-06 18:08:37 |
|
« 1 » 2 |