Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Vokale entfernen (https://www.delphipraxis.net/156580-vokale-entfernen.html)

Connor Temple 7. Dez 2010 21:27

AW: Vokale entfernen
 
Also soll ich die "While >= length(Text)" schreiben?
Das beschriebene Index hatten wir in Verbindung mit Delete noch gar nicht.
Deswegen hab ich grad voll das Problem eure Lösungen so zu verstehen...

Fussel9 7. Dez 2010 21:57

AW: Vokale entfernen
 
... welcher der folgenden Begriffe sagt die denn was:

- rekusiv
- Menge
- pos({code})
- if ...or... then

je nach dem welche du kennst kann man einen Ansatz herausarbeiten

Aphton 7. Dez 2010 22:36

AW: Vokale entfernen
 
Zitat:

Zitat von Connor Temple (Beitrag 1066978)
In haben wir leider nicht benutzt.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Text                              :String;
    i                                 :Integer;
begin
Text := Texteingabe.Text ;
i := 1 ;
While i <= length(Text) Do
     Begin
          If Text[i] = 'a'
            Then Delete (Text, a) ;

     i := i + 1 ;
     end;
Textausgabe.Text := Text;
end;

end.
So siehts aus, mein Fehler liegt jetzt aber bei dem Delete, außerdem möchte ich das gerne für alle Vokale in Groß- und Kleinschreibung benutzen.
Aber so kommt ein Fehler, ich weiß echt nicht mehr weiter und verzweifel grad schon wieder an diesem komischen Programm, das einfach nicht versteht was ich von ihm will -.-

Hab den Thread noch nicht ganz durchgelesen, aber dein Fehler ist leicht behebbar:
einfach statt Delete(Text,a) ein Delete(Text,a,1) machen.
Das heißt soviel wie: Lösche von Text, ab der Stelle a, 1 Stelle.

Edit: Warum wird hier eigentlich ständig um den heißen Brei herumgeredet?
*duck_und_weglauf


MfG

Fussel9 7. Dez 2010 22:50

AW: Vokale entfernen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Habs, als rekursive Lösung.

d.h. das sich die procedure oder hier function in sich selbst aufruft.

das funktioniert hier z.B. so:

Ist der String leer?
-Nein
Ist der erste Buchstabe ein Vokal?
-Ja : lösche ihn und frage erneut
-Nein : merke ihn dir
_________lösche den ersten Buchstaben
_________gebe den gemerkten Buchstaben mit dem ergebniss einer erneuten prüfung aus

-Ja tue nichts


Also für das Wort 'Vokal' ergibt sich folgendes:

ist V ein Vokal?
-Nein
-result1:=V+ ist o ein Vokal?
_________-Ja
_________-result2:= ist k ein Vokal?
__________________-Nein
__________________-result3:=k+ ist a ein Vokal?
___________________________-Ja
___________________________-result4:= ist l ein Vokal?
____________________________________-Nein
____________________________________-result5:=l
_______________________________________________res ult1:=Vkl

ich glaube der Rest wird spätestens dann klar wenn du dir den Quellcode ansiehst...

:arrow:

Connor Temple 8. Dez 2010 14:11

AW: Vokale entfernen
 
So, wir haben heute in der Schule die Lösung bekommen, mit Case haben wir vorher aber auch nicht gearbeitet, so sieht mein Text jetzt aus:
Delphi-Quellcode:
procedure TForm1.EntvokalisierenClick(Sender: TObject);
var Text                                   :String  ;
    i                                      :Integer ;
begin
Text := Normaltext.Text ;

i := 1 ;

 While i <= length(Text) Do
   Begin
      Case Text[i] of
      'A','E','I','O','U','a','e','i','o','u'        :
         Begin
             Delete (Text, i, 1) ;
             i := i - 1 ;
         end;
   end;
   i := i + 1 ;

AusgabeText.Text := Text;
 end;
end;
end.
Ich musste ein bisschen selbst dazu schreiben und langsam wird es verständlicher mit Delphi umzugehen...

DeddyH 8. Dez 2010 14:13

AW: Vokale entfernen
 
Das Hochzählen von i gehört aber mit in die While-Schleife, oder nicht? ;)

mkinzler 8. Dez 2010 14:41

AW: Vokale entfernen
 
Und beim Löschen unbedingt die Schleife umdrehen!

DeddyH 8. Dez 2010 14:44

AW: Vokale entfernen
 
Wieso? Es wird ja keine For-Schleife verwendet, da ist das in der Tat notwendig.

user0815 8. Dez 2010 14:44

AW: Vokale entfernen
 
Zitat:

Das Hochzählen von i gehört aber mit in die While-Schleife, oder nicht?
Ist mit drinnen, genau wie die Ausgabe, das end gehört zum case :)

Delphi-Quellcode:
  i := 1;

  while i <= length(Text) do
  case Text[i] of
    'A','E','I','O','U','a','e','i','o','u' : Delete(Text, i, 1);
    else inc(i); // i := i + 1;
  end;

DeddyH 8. Dez 2010 14:45

AW: Vokale entfernen
 
:wall: Stimmt, das liegt an der "kreativen" Einrückung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:08 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz