Archiv verlassen und diese Seite im Standarddesign anzeigen : Stapelspeicher
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
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 ;)
@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
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...
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
also ich befind mich ja gerade noch in den anfängen von c\c++ aber haben vectoren nicht schon eingebaute push und pop funktionen?
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)
@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
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 :)
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 ;)
QC ???
Jack da muss ich dir rechtgeben nur sollte man es wirklich nicht als array impelentieren aber die faulheit
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.