Formatieren von Text < Algor.+Datenstr. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) überfällig | Datum: | 10:49 Sa 23.10.2010 | Autor: | BarneyS |
Aufgabe | Erstellen Sie ein Struktogramm zu folgender Aufgabe:
Ein Programm soll einen Text von der Standard-Eingabe lesen. Formatieren und auf die Standard-
Ausgabe schreiben.
Die Formatierung soll folgende Aspekte berucksichtigen:
Blanks am Anfang einer Zeile werden nicht ausgegeben (Ausgabe linksbüundig)
Mehrfach aufeinander folgende Blanks werden in der Ausgabe durch ein einzelnes Blank
ersetzt
Großgeschriebene Vokale werden durch die entsprechenden kleinen Buchstaben ersetzt |
Hallo,
meine Frage bezieht sich darauf, wie ich am besten den Pseudocode schreibe, der ja teil des Struktogramms ist.
Für meine Geschmack ist das noch zu viel Java drin. Der Code sollte ja so geschrieben werden, dass man ihn in einer beliebigen Sprache programmieren könnte. Ich möchte hier aber spezielle Methoden von Java benutzen, wie z.B. substring(), charAt() und replace(). Wie kann man das darstellen, ohne tatsächlich Java Code zu schreiben?
Hier der Pseudocode:
Hauptprogramm
Eingabe <- String Einlesen von Console
Eingabe <- remSpace(Eingabe)
for i <- 0 ; i < Eingabe.length() ; i++
if (Eingabe.charAt(i) == 32) AND (i < (Eingabe.length() - 1))
Eingabe = Eingabe.substring(0, i + 1) + remSpace(Eingabe.substring(i + 1))
end if
// Editiert:-----------------------------
b <- Eingabe.charAt(i)
if (b == 'A' OR 'E' OR 'I' OR 'O' OR 'U')
// Die Methode ist nicht besonders effizient
// aber dafür ist der Code kompakter (ansonsten müsste man mit char Array arbeiten)
Eingabe = Eingabe.replace(b, b + 32 )
end if
//----------------------------
Print: Eingabe
Unterprogramm: public static String remSpace(String text)
if text.charAt(0) == 32
if text.length() == 1
return ""
end if
return remSpace(text.subsequence(1))
else
return text
end if
Wenn jemand natürlich einen Vorschlag zur Verbesserung des Algorithmus ansich hat, bin ich auch ganz Ohr. Ich habe absichtlich einen rekursiven Algorithmus benutzt, da wir das gerade in der Vorlesung haben. Man kann es aber sicherlich auch iterativ lösen.
Danke!
Barney
Hier noch die Grafiken:
[Dateianhang nicht öffentlich]
[Dateianhang nicht öffentlich]
Dateianhänge: Anhang Nr. 1 (Typ: png) [nicht öffentlich] Anhang Nr. 2 (Typ: png) [nicht öffentlich]
|
|
|
|
Hallo!
Ich kann nix zum Pseudocode sagen, weil ich deinen Code zwar verstehe, aber nicht weiß, welche Regeln es für Pseudocode gibt.
Aber so ein paar Dinge:
if (Eingabe.charAt(i) > 64) AND (Eingabe.charAt(i) < 91)
b <- Eingabe.charAt(i)
Eingabe = Eingabe.replace(b, b + 32 )
end if
Zunächst willst du hier ALLE Großbuchstaben durch Kleinbuchstaben ersetzen. Laut Aufgabe sollst du das aber nur für die Vokale AEIOU machen. Und anschließend durchsuchst du den kompletten String nach diesem Großbuchstaben, und ersetzt ihn überall. Das funktioniert, aber ich weiß nicht, ob du dir das auch so gedacht hast.
Was ich ganz nett fände, wäre nicht auf ==32 zu testen, sondern auf ==' ' . Denn ' ' ist die Zahl, deren ASCII-zeichen das Leerzeichen ist. Dagehen ist " " ein String. Du könntest dann z.b. auch sowas wie
if(x>='A' and x<='Z')
machen. Find ich eingängiger, als immer mit den Zahlen rumzuhantieren.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 12:05 Sa 23.10.2010 | Autor: | BarneyS |
Hallo Sebastian,
danke für die Antwort.
Da hab ich wohl die Aufgabenstellung nicht richtig gelesen.^^
Mit deinen Anmerkungen hast du recht.
if (Eingabe.charAt(i) > 64) AND (Eingabe.charAt(i) < 91)
b <- Eingabe.charAt(i)
Eingabe = Eingabe.replace(b, b + 32 )
end if
Dies ist nicht sehr effizient. Allerdings wollte ich den Code so kompakt wie möglich halten. Aber ich werde versuchen es noch zu verbessern.
Man müsste hier ansonsten den String in einem char Array speichern....
Es bleibt immer noch meine eigentliche Fragen nach dem Pseudocode offen. Würde mich über eine Antwort freuen!
VG Barney
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:20 Mo 25.10.2010 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|