AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

verschachtelte schleifen

Ein Thema von baala · begonnen am 16. Jan 2007 · letzter Beitrag vom 17. Jan 2007
Antwort Antwort
Seite 1 von 3  1 23      
baala

Registriert seit: 16. Jan 2007
8 Beiträge
 
#1

verschachtelte schleifen

  Alt 16. Jan 2007, 20:08
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: http://img413.imageshack.us/img413/2603/fragebj3.jpg

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:
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;
//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

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
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: verschachtelte schleifen

  Alt 16. Jan 2007, 20:13
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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
baala

Registriert seit: 16. Jan 2007
8 Beiträge
 
#3

Re: verschachtelte schleifen

  Alt 16. Jan 2007, 20:17
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
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: verschachtelte schleifen

  Alt 16. Jan 2007, 20:18
Das ist doch Unsinn.

Soll man jetzt da wirklich sinnloserweise eine zweite Schleife reinbauen, obwohl es absolut nichts bringt? Versteh einer die Lehrer...

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;
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Tormentor32
Tormentor32

Registriert seit: 27. Okt 2005
Ort: Düsseldorf
369 Beiträge
 
Delphi XE5 Professional
 
#5

Re: verschachtelte schleifen

  Alt 16. Jan 2007, 20:19
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;
Richard Mahr
  Mit Zitat antworten Zitat
baala

Registriert seit: 16. Jan 2007
8 Beiträge
 
#6

Re: verschachtelte schleifen

  Alt 16. Jan 2007, 20:24
Zitat von 3_of_8:
Das ist doch Unsinn.

Soll man jetzt da wirklich sinnloserweise eine zweite Schleife reinbauen, obwohl es absolut nichts bringt? Versteh einer die Lehrer...
ja, dass ist komplett schwachsinnig, zumal diese doppelte schleife beim lehrer selbst nicht funktioniert.

@Tormentor32, vielen dank, damit werde ich es mal versuchen, halt mal schauen, wie ich das in die aufgabe ein bauen kann
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: verschachtelte schleifen

  Alt 16. Jan 2007, 20:36
Ich persönlich würde das ohne mit der Wimper zu zucken ohne verschachtelte Schleife machen.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: verschachtelte schleifen

  Alt 16. Jan 2007, 21:45
In Deiner Aufgabenstellung (jpg Bild) steht aber auch kein Wort von Verschachtelung.
Nur etwas von for Schleifen.

Delphi-Quellcode:
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;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
baala

Registriert seit: 16. Jan 2007
8 Beiträge
 
#9

Re: verschachtelte schleifen

  Alt 16. Jan 2007, 22:00
@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
vll kann ich sie auch in der arbeiten benutzen, da wird der lehrer aber schauen, da wir noch nie mit funktionen gearbeitet haben...

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;
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#10

Re: verschachtelte schleifen

  Alt 16. Jan 2007, 22:03
Zitat von Klaus01:
Delphi-Quellcode:
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;
Dein Funktionsheader macht wenig Sinn
Man kann einen String als suche übergeben, du erlaubst aber bei dem Vergleich nur ein Zeichen von Quelle...

Ich finde das hier sinnvoller:
function replace(Quelle: String; suche,ersetze:char):String 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.
Delphi-Quellcode:
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;
(Ist ungetestet und ich glaube auch, dass da irgendwo ein Fehler drin ist...bitte korrigiert mich!)


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz