www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Algorithmen und Datenstrukturen" - Formatieren von Text
Formatieren von Text < Algor.+Datenstr. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Algorithmen und Datenstrukturen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Formatieren von Text: Guter Pseudocode
Status: (Frage) überfällig Status 
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]
        
Bezug
Formatieren von Text: Antwort
Status: (Antwort) fertig Status 
Datum: 11:57 Sa 23.10.2010
Autor: Event_Horizon

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.


Bezug
                
Bezug
Formatieren von Text: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
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

Bezug
        
Bezug
Formatieren von Text: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 11:20 Mo 25.10.2010
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Algorithmen und Datenstrukturen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.mathebank.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]