Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] ONP -> NP

Ostatnio zmodyfikowano 2012-11-07 15:54
Autor Wiadomość
notsopro
Temat założony przez niniejszego użytkownika
[C++] ONP -> NP
» 2012-11-07 15:46:03
Witam, mam program który liczy ONP (zrobiony wzorując się na poradniku w internecie) i zastanawiałem się jak przerobić go żeby liczył również NP ...

działa na zasadzie że jeżeli jest liczba to wpisuje na stos , jeżeli znak to pobiera 2 ostatnio wpisane liczby i liczy .... teraz zastanawiałem się jak zrobić czy np.

-jeżeli znak to wpisuje na stos i jeżeli są 2 liczby obok siebie to liczy ... tylko dla bardziej skomplikowanych przykładów by to nie działało

-jeżeli liczba to wpisuje do jednego stosu jeżeli znak to do innego i jeżeli w stosie liczb są już 2 elementu to biore ostatni znak ze stosu znaków i licze - tutaj jest problem ponieważ nie wiem jak to zrobić ;/

kod ONP :
C/C++
#include <iostream>
#include <math.h>

using namespace std;

int main( int argc, char * argv[] )
{
    int stos[ 256 ]; //tablica która będzie służyć za stos
    int wsk = 0; //wskaźnik na element stosu
    int a, b, w; //zmienne potrzebne do wykonania działania
    char el[ 256 ]; //tablica która będzie wczytana na początku
    int t;
   
    cin >> t;
   
    while( t-- )
    {
        do
        {
            cin >> el;
           
           
           
            //zapisanie liczby do stosu
            if( el[ 0 ] >= '0' && el[ 0 ] <= '9' )
            {
                a = b = 0;
                do
                a = 10 * a + el[ b++ ] - 48;
                while( el[ b ] );
               
                stos[ wsk++ ] = a;
            }
            //jeżeli element to = to sprawdzam ze stosu poprzednią wartość i wyświetlam ją
            else if( el[ 0 ] == '=' ) cout << stos[ --wsk ] << endl;
           
            else
            {
                b = stos[ --wsk ];
                a = stos[ --wsk ];
               
                switch( el[ 0 ] )
                {
                case '+': w = a + b;
                    break;
                case '-': w = a - b;
                    break;
                case '*': w = a * b;
                    break;
                case '/': w = a / b;
                    break;
                case '^': w = 1;
                    while( b-- )
                         w *= a;
                   
                    break;
                }
               
                stos[ wsk++ ] = w;
            }
        }
        //jeżeli element to nie = to powtarzam dalej całą czynność
        while( el[ 0 ] != '=' );
       
    }
   
    system( "PAUSE" );
    return EXIT_SUCCESS;
}
P-68711
DejaVu
» 2012-11-07 15:49:36
P-68712
notsopro
Temat założony przez niniejszego użytkownika
» 2012-11-07 15:54:43
upss lekki trol ... niezauważyłem sorka
P-68713
« 1 »
  Strona 1 z 1