PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Stapelspeicher


janosch
27.06.2002, 14:02
Hallo !

Ich brauche mal wieder eure hilfe

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

Ach ja das Programm soll in C geschrieben sein !

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


Jack
27.06.2002, 14:09
Push und Pop sind lediglich zwei Funktionen, die du dazu schreiben sollst. Die Funktion Push legt also ein Zeichen auf deinen Stack, die Funktion Pop holt sich das Zeichen vom Stack.
Im Prinzip recht einfach, denn Push legt immer oben drauf, und Pop holt immer das oberste Element runter.
Die Zeicheneingabe wird mit Push solange auf den Stack gelegt, bis der User seine Eingabe beendet hat, dann durchläufst du eine Schleife mit Pop bis der Stack leer ist und gibst die Zeichen aus.
Fertig ist das Proggy ;)

Felix Kaiser
27.06.2002, 14:24
Gehört aber wohl eher ins Assembler Forum, nen Code hätt ich in 10 Minuten fertig, kleine Routineübung ;)

janosch
27.06.2002, 14:54
@Felix Kaiser

nö gehört es nicht da das Prohramm unter C geschrieben werden soll

mfg janosch
P.S. Habe es oben noch mal dazu geschrieben

Bolle
27.06.2002, 16:22
ich hab mal schnell was zuzsammengekleistert:

#include <iostream.h>

char stapelschpeicher[20];

void push(char wort[], char stk[], int length)
{
for( int i = 0; i < length; ++i)
{
stk[i] = wort[i] ;
}
}

void pop( char stk[], int length)
{
for( int i = (length-1); i > -1; --i)
{
cout << stk[i] ;
}
cout << endl;
}

int main()
{
char wort[20];
cin >> wort;
int len = strlen(wort);
push(wort, stapelschpeicher, len);
pop(stapelschpeicher, len);
return 0;
}

das sollte es eigentlich sein, wenn ich euch richtig verstanden habe. wenn nicht, wieder 10 minuten meines lebes verschwendet :mauer:

edit:
aus stack für den kaiser stapelschpeicher gemacht.

Felix Kaiser
27.06.2002, 21:04
Dann find ichs ein Verbrechen, wenn du das ganze hier Stack nennst, da du nur einen Array im Datenspeicher hast...

Bolle
27.06.2002, 22:25
na, ich nen das ding stack weil das ja ein fast stack is und weil jack das ding auch stack nennt. außerdem is das kürzer als stapelschpeicher.
aber für den kaiser änder ich das ja gerne :D

Tilion
28.06.2002, 12:30
also ich befind mich ja gerade noch in den anfängen von c\c++ aber haben vectoren nicht schon eingebaute push und pop funktionen?

Bolle
28.06.2002, 13:50
ja also, das schreiben in den vektor also die push funktion ist wirklich überflüssig, wurde hier aber von seinem chef/lehrer? gefordert. die pop funkion is teilweise überlüssig. natürlich kannst du den inhalt des vektor "stapelspeicher" auch über cout << stapelspeicher << endl; ausgeben lassen. hier sollte er aber den inhalt des vektors rückwerts ausgeben lassen, somit wird diese funktion benötigt.


edit:

nochwas die uhr geht ne stunde nach (die board uhr)

janosch
28.06.2002, 14:59
@Bolle

Big THX für die Lösung :D :D :D :D :D :D

mfg janosch

Format C:
28.06.2002, 17:43
folgendes Beispiel kopiert einen String über den Steak:


char buffer[]="string";
char ausgabe[299]="";
int i, a, b;


GetWindowText(GetDlgItem(hwnd, IDC_EDIT1), buffer, 10);

for(i=0;i<strlen(buffer);i++)
{
a=buffer[i];
_asm
{
push a;
pop b;
}
ausgabe[i]=b;
}

SetWindowText(GetDlgItem(hwnd, IDC_EDIT2), ausgabe);



ich hab zur ein/ausgabe Get/SetWindowText benutzt, mußt halt z.B in cin/cout ändern

xOOn
30.06.2002, 01:46
Dann find ichs ein Verbrechen, wenn du das ganze hier Stack nennst, da du nur einen Array im Datenspeicher hast...

also dann bin ich schwerverbrecher:D :D :D

Format C:
30.06.2002, 03:04
@ xOOn : zeig doch mal deinen QC her :)

Jack
01.07.2002, 09:51
Mhm, dann bin ich auch einer *g*
Nee, mal im ernst, wir haben gelernt daß Stack = Stapelspeicher.
Und da das Ding wie einer funktioniert, muß es wohl auch einer sein ;)

xOOn
01.07.2002, 10:55
QC ???

Jack da muss ich dir rechtgeben nur sollte man es wirklich nicht als array impelentieren aber die faulheit