![]() |
verschachtelte schleifen
Hallo ihr,
ich habe ein kleines Problem. und zwar: ich schreibe morgen eine Arbeit über Delphi. Ich befürchte, dass in der Arbeit verschachtelte for schleifen zu einsatz kommen, nur habe ich leider nicht viel ahnung, wie ich eine solche schreiben kann. Ich habe die Aufgabe einmal eingescannt: ![]() Es gibt noch ein paar lustige sachen! 1. das mit stringreplace zu machen, sollen wir nicht, so wollte ich das zu erst machen 2. Ich habe das ganz programm schon geschrieben, nur halt nicht mit der verschachtelung:
Code:
//ich hatte das programm etwas erweitert:in edit1 kommt das wort rein, in edit2,dass gesuchte zeichen und in edit3, dass zeichen welche für das zeichen aus edit2 eingesetzt werden soll
procedure TForm1.Button1Click(Sender: TObject);
var i:integer; buh,dat:string; begin dat:=''; for i:=1 to length(edit1.text) do begin buh:=copy(edit1.text,i,1); if buh=edit2.text then dat:=dat+edit3.text else dat:=dat+copy(edit1.Text,i,1) ; end; edit1.text:=dat; end; Geht auch gut, nur solle ich das so nicht machen. 3. Das mit der verschachtelung geht nicht richtig! Der Lehrer hat das uns gezeigt und bei langen wörtern, bzw vielen ö's, hat das Programm nicht richtig funktioniert, nur sollen wir das trotzdem so machen... Ich hoffe ihr hab eine Idee, wie das funktionieren kann :) Grüß Baal //upps, hatte das bild vergessen :( |
Re: verschachtelte schleifen
1. Schreib dir ne eigene Replace-Funktion, geh per For-Schleife durch und ersetze alle Zeichen oder such sie dir mit PosEx raus.
2. Wozu Verschachtelung? 3. Alle Standard-Stringroutinen sind auf ASCII ausgelegt, wenn du Umlaute brauchst, musst du schauen ob es die Routine auch für ANSI gibt. |
Re: verschachtelte schleifen
das ist ja das problem, ich muss diese verschachtelung haben.
ich würde das auch gerne ohne machen, nur brauch ich das ganze für die arbeit und wenn ich das da nicht habe, hab ich ein problem. das hauptproblem ist, ich kann mir nicht wirklich vorstellen wie das mit einer verschachtelung gehen soll. bzw wie so eine überhaupt aussieht :( |
Re: verschachtelte schleifen
Das ist doch Unsinn.
Soll man jetzt da wirklich sinnloserweise eine zweite Schleife reinbauen, obwohl es absolut nichts bringt? Versteh einer die Lehrer... :gruebel: EDIT: Mein Ansatz wäre so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var I:integer; str: String; oldchar, newchar: Char; begin str:=edit1.text; oldchar:=edit2.text[1]; newchar:=edit3.text[1]; for I:=1 to length(str) do if AnsiCompareText(str[I], oldchar)=0 then str[I]:=newchar; edit1.text:=str; end; |
Re: verschachtelte schleifen
Also aussehen kann ein verschachtelte schleife zum Beispiel so:
Delphi-Quellcode:
var i,j: integer;
begin for i := 1 to 10 do for j := 1 to 20 do begin //...irgendwas end; end; |
Re: verschachtelte schleifen
Zitat:
@Tormentor32, vielen dank, damit werde ich es mal versuchen, halt mal schauen, wie ich das in die aufgabe ein bauen kann :gruebel: |
Re: verschachtelte schleifen
Ich persönlich würde das ohne mit der Wimper zu zucken ohne verschachtelte Schleife machen.
|
Re: verschachtelte schleifen
In Deiner Aufgabenstellung (jpg Bild) steht aber auch kein Wort von Verschachtelung.
Nur etwas von for Schleifen.
Delphi-Quellcode:
Grüße
function replace(Quelle,suche,ersetze:string):String
var i:Byte; begin result:=''; for i:=1 to length(quelle) do if quelle[i] = suche then result:=result+ersetze else result:=result+quelle[i]; end; Klaus |
Re: verschachtelte schleifen
@Klaus01,
stimmt schon, dass in der aufgabe nichts von einer verschachtelung steht. Nur meinte der lehrer das zusätzlich, dass wir das damit machen sollen. Als ich ihm, meine ganz oben gepostet lösung zeigte, meine er gut, nur habe ich mich erfolgreich um den einsatz der verschachtelung gedrückt, was eingentlich wir eingentlich in dieser aufgane übenen sollte. Vielen dank auf für deine lösung, ich werde sie ebenfalls studieren :thumb: vll kann ich sie auch in der arbeiten benutzen, da wird der lehrer aber schauen, da wir noch nie mit funktionen gearbeitet haben... :mrgreen: Ich habe selbst etwas weiter an der verschachtelung geschrieben, es gibt zwar noch einen fehler, den werde ich aber auch bestimmt noch finden, wenn einer von euch einmal drauf schauen möchte ;) : ich nehme an, dass ich einfach noch den orginal string brauche um dann von ihm weiter auszulesen
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer; stra:string; begin stra:=edit1.text; for I := 1 to length(stra) do if stra[i] = 'ö' then begin stra[i]:= 'o' ; stra[i+1]:='e' ; for j := i+1 to length(stra) do stra[j]:= stra[j-1]; end; edit1.Text:=stra; end; |
Re: verschachtelte schleifen
Zitat:
Man kann einen String als suche übergeben, du erlaubst aber bei dem Vergleich nur ein Zeichen von Quelle... Ich finde das hier sinnvoller:
Delphi-Quellcode:
Wobei das natürlich nur für ein Zeichen geht, für das Problem ö zu oe müsste man das dann eben ein bisschen komplizierter machen.
function replace(Quelle: String; suche,ersetze:char):String
Delphi-Quellcode:
(Ist ungetestet und ich glaube auch, dass da irgendwo ein Fehler drin ist...bitte korrigiert mich!)
function replace(Quelle,suche,ersetze:string):String
var i:Byte; begin result:=''; for i:=1 to length(Quelle)-length(suche)+1 do begin if Copy(Quelle, i, length(suche))=suche then begin result:=result + ersetze + Copy(Quelle, i+1, length(Quelle)); replace(result, suche, ersetze); // mir viel gerade nix besseres ein als eine Rekursion, darf ruhig korrigiert werden break; end else result:=result+quelle[i]; end; end; Flare |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 Uhr. |
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 by Thomas Breitkreuz