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

Problem ze stosem

Ostatnio zmodyfikowano 2011-03-21 22:02
Autor Wiadomość
MrOsamaful
Temat założony przez niniejszego użytkownika
Problem ze stosem
» 2011-03-21 21:02:46
Program nie działa tak jak powinien.

Input:

2 +4 + 3

Output:

Operatory: +
Cyfry: 34

A powinno być

Output:

Operatory: ++
Cyfry: 342

C/C++
#include <iostream> // I/o
#include <stack>    // Stos
#include <string>   // Stringi
#include <cstdlib>  // Atoi



using namespace std;
typedef unsigned int uint;
// Stos na cyfry
stack < int > numbers;
// Stos na operator
stack < char > operators;
char buffer[ 256 ];
string input;

int main()
{
    char * conv;
    char ch[ 1 ]; // Uzywane przy beznadziejnym
    // konwertowaniu char na char*
   
    cout << "Wpisz dzialanie:" << endl;
    while( 1 )
    {
        cin.getline( buffer, 256 );
        input = buffer; //char[] na string
       
       
       
        for( uint i = 0; i < input.size(); i++ )
        {
            begin: // Usuwa biale znaki
            if( isspace( input[ i ] ) )
            {
                i++;
                goto begin;
            }
            // Sprawdza czy cyfra, jezeli tak to
            // Wpycha ja na stos
            if( isalnum( input[ i ] ) )
            {
                // Nie wpadl mi do glowy lepszy sposob
                // Na konwertowanie...
                ch[ 0 ] = input[ i ];
                conv = ch;
               
                // Zamienia char na int
                numbers.push( atoi( conv ) );
            }
           
            else
            // Wpycha na stos operatory
                 operators.push( input[ i ] );
           
            cout << input[ i ];
        }
       
        cout << endl << "Operatory: ";
        // Wypisuje operatory, nie dziala tak jak bym chcial
        // Nie wypisuje wszystkich
        for( uint i = 0; i < operators.size(); i++ )
        {
            cout << operators.top();
            operators.pop();
        }
       
        cout << endl << "Cyfry: ";
        // Wypisuje cyfry, nie dziala tak jak bym chcial
        // Nie wypisuje wszystkich
        for( uint i = 0; i < numbers.size(); i++ )
        {
            cout << numbers.top();
            numbers.pop();
        }
        cout << "\n\n\n\n\n";
    }
    return 0;
}
P-29554
szyx_yankez
» 2011-03-21 21:37:28
Spróbuj tak:
C/C++
{
    [...]
    cout << endl << "Operatory: ";
    // Wypisuje operatory, nie dziala tak jak bym chcial
    // Nie wypisuje wszystkich
    for(; !operators.empty(); )
    {
        cout << operators.top();
        operators.pop();
    }
   
    cout << endl << "Cyfry: ";
    // Wypisuje cyfry, nie dziala tak jak bym chcial
    // Nie wypisuje wszystkich
    for(; !numbers.empty(); )
    {
        cout << numbers.top();
        numbers.pop();
    }
    cout << "\n\n\n\n\n";
}
return 0;
}
P-29564
MrOsamaful
Temat założony przez niniejszego użytkownika
» 2011-03-21 22:02:39
Dzięki, działa świetnie, uratowałeś mnie :P
P-29571
« 1 »
  Strona 1 z 1