Teilaufgabe2:
Schreibe ein Programm, welches aus einer Benutzereingabe Zahlen und Satzzeichen extrahiert und getrennt ausgibt. Beachte: die Ausgabe soll in der "verkehrten" Reihenfolge des Vorkommens erfolgen. Z.B
"Ich habe 1 webseite, mit 35 Zeilen code: in nur 5 Tagen erstellt!"
Ausgabe: 5 35 1 ! : ,
Benutze zum Zwischenspeichern den Stack und die Stackroutinen aus dieser Aufgabe:
"Aus klein mach groß": Teil1 - Stack
Wobei Zahlen im einen Stack landen und Satzzeichen im anderen, so dass am Ende nur die Inhalte der Stacks nacheinander ausgegeben werden müssen.
Eingabe:
Zahlenformat: "normales" Dezimalformat: 123;123.321,0.321
d.h entweder ganze Zahlen oder Fließkommazahlen mit einem "Punkt"
maximale Anzahl der Stellen in einer einzelnen Zahl: 255 (nur für Leute interessant, die Stacks mit festen Datentypen umgesetzt haben).
Satzzteichenformat: ": , ! ?" (also kein Punkt ".", damit es keine Verwechslungsgefahr gibt)
Einfachheitshalber gehe von dieser Form der Eingabe aus: Eine einzelne Zeile wie:
"mein rechner hat 3500Mhz und deiner nur 3400, also bin ich um 2.4% 1337er als du"
Tipp: Ihr müsst nicht unbedingt Stacks mit unterschieldichen Datentypen verwenden - nur sichergehen, dass in einem Stack eben nur Zahlen und im anderen nur Satzzeichen stehen. Ansonsten wären z.B unterschiedliche Datenstrukturen wie "stack_float" und "stack_string" und entsprechend angepasste Routinen eine mögliche Lösung.
Betrachte dazu die Möglichkeiten der genutzen Programmiersprache:
z.B C: atof,strtof
C#: Float.Parse
Java: Float.parseFloat
C++: die netten >> << Operatoren der istringstream Klasse
Pascal: Val
Delphi: StringToFloat
Alternativ bieten viele Programmiersprachen sowas wie isNum()/isNaN
Es sollten keine "Sonderformen" der Zahlen erkannt werden, sondern nur das, was die Standardroutinen der jeweiligen Programmiersprache bieten. D.h ihr müsst nur die Zahlen "lokalisieren"
Wie schon in der vorherigen Aufgabe: trennt euere Main und die Funktionen voneinander. Ob ihr die Eingabe aus einer GUI oder Konsole einlest, ist egal.
Schreibe ein Programm, welches aus einer Benutzereingabe Zahlen und Satzzeichen extrahiert und getrennt ausgibt. Beachte: die Ausgabe soll in der "verkehrten" Reihenfolge des Vorkommens erfolgen. Z.B
"Ich habe 1 webseite, mit 35 Zeilen code: in nur 5 Tagen erstellt!"
Ausgabe: 5 35 1 ! : ,
Benutze zum Zwischenspeichern den Stack und die Stackroutinen aus dieser Aufgabe:
"Aus klein mach groß": Teil1 - Stack
Wobei Zahlen im einen Stack landen und Satzzeichen im anderen, so dass am Ende nur die Inhalte der Stacks nacheinander ausgegeben werden müssen.
Eingabe:
Zahlenformat: "normales" Dezimalformat: 123;123.321,0.321
d.h entweder ganze Zahlen oder Fließkommazahlen mit einem "Punkt"
maximale Anzahl der Stellen in einer einzelnen Zahl: 255 (nur für Leute interessant, die Stacks mit festen Datentypen umgesetzt haben).
Satzzteichenformat: ": , ! ?" (also kein Punkt ".", damit es keine Verwechslungsgefahr gibt)
Einfachheitshalber gehe von dieser Form der Eingabe aus: Eine einzelne Zeile wie:
"mein rechner hat 3500Mhz und deiner nur 3400, also bin ich um 2.4% 1337er als du"
Tipp: Ihr müsst nicht unbedingt Stacks mit unterschieldichen Datentypen verwenden - nur sichergehen, dass in einem Stack eben nur Zahlen und im anderen nur Satzzeichen stehen. Ansonsten wären z.B unterschiedliche Datenstrukturen wie "stack_float" und "stack_string" und entsprechend angepasste Routinen eine mögliche Lösung.
Betrachte dazu die Möglichkeiten der genutzen Programmiersprache:
z.B C: atof,strtof
C#: Float.Parse
Java: Float.parseFloat
C++: die netten >> << Operatoren der istringstream Klasse
Pascal: Val
Delphi: StringToFloat
Alternativ bieten viele Programmiersprachen sowas wie isNum()/isNaN
Es sollten keine "Sonderformen" der Zahlen erkannt werden, sondern nur das, was die Standardroutinen der jeweiligen Programmiersprache bieten. D.h ihr müsst nur die Zahlen "lokalisieren"
Wie schon in der vorherigen Aufgabe: trennt euere Main und die Funktionen voneinander. Ob ihr die Eingabe aus einer GUI oder Konsole einlest, ist egal.
Code:
String zahl="";
eingabe="mein rechner hat 3500Mhz ..."
For Laenge der Eingabe do
lese zeichen ein
if istNummer_oder_Punkt(zeichen) then zahl=zahl+zeichen; (Sting zusammenbauen)
else_block
if istEinSatzzeichen(zeichen)=TRUE then push(satzzeichen_stack,zeichen)
if istEineZahl(zahl)=TRUE then push(zahlen_stack,zahl)
zahl=""; (string wieder leer machen)
else_block_end
od