PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : c/c++ und Stapelspeicher



jancarsten
27-06-2002, 13:00
Hallo !

Ich brauche mal wieder eure hilfe

Ich habe wieder ein Übungsaufgabe bekommen mit der ich nicht so ganz zu recht komme. Wie die übungs aufgabe ohne Push und POP geht weiß ich nur wie geht das ganze mit ?

Hier ist die Aufgabe:

quote:
--------------------------------------------------------------------------------
4. Geben Sie den Code für ein Programm an, dass eine Zeichenkette von der Tastatur einliest, auf einem Stapel zwischenspeichert und rückwärts wieder ausgibt. Benutzen Sie als Stapel einen Vektor(Feld) und geben Sie das Hauptprogramm und die benötigten push- und pop-Funktionen an . (6 Pkt)
--------------------------------------------------------------------------------



mfg janosch

micha
27-06-2002, 17:56
Hi,

das hier wäre eine Möglichkeit:



#include <stdio.h>

#define MAXLEN 1024

int push( char c );
const char pop( void );

int main( void )
{
char buf[MAXLEN];
int c = 0;

if( fgets( buf, MAXLEN, stdin ) != NULL )
{
while( c < strlen(buf) - 1 )
if( ! push( buf[c++] ) )
break;

while( (c = pop()) != '\0' )
printf( "%c", c );

printf( "\n" );
return( 0 );
}

return( 1 );
}

char stack[MAXLEN];
int count = 0;

int push( char c )
{
if( count < MAXLEN )
{
stack[count++] = c;
return( 1 );
}
else
return( 0 );
}

const char pop( void )
{
if( count > 0 )
return stack[--count];
else
return('\0');
}




micha:~> echo "Diesen Satz bitte mal umdrehen" | ./stack
neherdmu lam ettib ztaS neseiD
micha:~>


Gruß micha

anda_skoa
27-06-2002, 22:40
Sowas ähnliches in C++



#include <vector>
#include <string>
#include <iostream>

int main()
{
std::string str;
std::vector<char> stack;
std::cin >> str;

for (uint i = 0; i < str.size(); ++i)
{
stack.push_back(str[i]);
}


while (!stack.empty())
{
std::cout << stack.back();
stack.pop_back();
}
std::cout << std::endl;

return 0;
}


Ciao,
_