Entwickler-Ecke

Sonstiges (Delphi) - Delphi Hausaufgabe Schleife von 1-10 und dann wieder 10-1


Greek - Sa 20.09.08 12:20
Titel: Delphi Hausaufgabe Schleife von 1-10 und dann wieder 10-1
Also meine Hausaufgabe ist , ein Programm zu machen das von 1-10 zählt und dann wieder von 10-1 runterzählt , mit nur einer einzigen schleife...

das hab ich bis jetzt gemacht:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var i, swert, ewert, j : integer;
begin
  Memo1.Clear;
  swert:=StrToInt(Edit1.Text);
  ewert:=StrToInt(Edit2.Text);
  i:=swert;
  j:=ewert;
  Repeat
  if (i<=ewert) then Memo1.Lines.Add(IntToStr(i))  Inc(i)
                     else
  Memo1.Lines.Add(IntToStr(j));
  dec(j);
  Until (j<=swert) and (i>=ewert);


funktioniert gerade überhaupt nicht, weil ich zu viel verändert hab
hoffe ihr könnt mir meine fehler sagen

Mfg Greek

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt


nagel - Sa 20.09.08 12:25

Hallo,

mach mal Begin/End-Blöcke nach Then und Else.


Greek - Sa 20.09.08 12:28

öh so?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
  Repeat
  if (i<=ewert) then Begin Memo1.Lines.Add(IntToStr(i))  Inc(i)
  end;
                     else
                     Begin
  Memo1.Lines.Add(IntToStr(j));
  dec(j);
  Until (j<=swert) and (i>=ewert);
  end;


sry kenn mich mit delphi noch net gut aus

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt


Chryzler - Sa 20.09.08 12:30
Titel: Re: Delphi Hausaufgabe hilfe
user profile iconGreek hat folgendes geschrieben:
Also meine Hausaufgabe ist , ein Programm zu machen das von 1-10 zählt und dann wieder von 10-1 runterzählt , mit nur einer einzigen schleife...

Was die Lehrer immer für tolle Aufgaben stellen.. :lol:

Ich würde eine Schleife nehmen die von 1 bis 20 zählt, dann frägst du in der Schleife ab, ob die Schleifenvariable <= 10 ist, wenn ja gibst du sie aus, wenn nicht gibst du 21 - Schleifenvariable aus.


Greek - Sa 20.09.08 12:32

äh wie mach ich das?

Ich kann delphi noch überhaupt net und die aufgabe ist so schwer.. ich glaub der hat sich verschrieben O.o


Hidden - Sa 20.09.08 12:33

Hi,

Deinen Quelltext packst du am besten in <span class="inlineSyntax"><span class="codecomment">{PROTECTTAG63b7dd3fc42a514aa747449ec646bba7}</span></span> Einzelne Stellen markierst du mit dem Highlight-Tag: [highlight ] markierte Stelle [/highlight]

mfG,


Greek - Sa 20.09.08 12:37


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
unit Aufgabe3U1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    BitBtn1: TBitBtn;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var i, swert, ewert : integer;
begin
  Memo1.Clear;
  swert:=StrToInt(Edit1.Text);
  ewert:=StrToInt(Edit2.Text);
  i:=swert;
  if (i<=swert) then For i:=swert to ewert do
                    Memo1.Lines.add(IntToStr(i));
  if (i>=ewert) then For i:=ewert downto swert do
                     Memo1.Lines.add(IntToStr(i));

end;

procedure TForm1.Button2Click(Sender: TObject);
var i, swert, ewert : integer;
begin
  Memo1.Clear;
  swert:=StrToInt(Edit1.Text);
  ewert:=StrToInt(Edit2.Text);
  i:=swert;
  While (i<=ewert) do begin
  Memo1.Lines.Add(IntToStr(i));
  inc(i);
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var i, swert, ewert, j : integer;
begin
  Memo1.Clear;
  swert:=StrToInt(Edit1.Text);
  ewert:=StrToInt(Edit2.Text);
  i:=swert;
  j:=ewert;
  Repeat
  if (i<=ewert) then Begin Memo1.Lines.Add(IntToStr(i))  Inc(i)
  end;
                     else
                     Begin
  Memo1.Lines.Add(IntToStr(j));
  dec(j);
  Until (j<=swert) and (i>=ewert);
  end;
end;

end.


Achja wir müssen mit Delphi 3 programmier ist also ne recht alte version


Chryzler - Sa 20.09.08 12:37

user profile iconGreek hat folgendes geschrieben:
äh wie mach ich das?

Ich kann delphi noch überhaupt net und die aufgabe ist so schwer.. ich glaub der hat sich verschrieben O.o

Dann würde ich vorschlagen dass du dir den Delphi-Crashkurs [http://www.christian-stelzmann.de/artikel/CrashkursReloaded/] von user profile iconChristian S. aneignest, besonders in diesem Falle Schleifen [http://www.christian-stelzmann.de/artikel/CrashkursReloaded/#_Toc180058866].


Christian S. - Sa 20.09.08 12:40

Hallo,

bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien [http://www.entwickler-ecke.de/richtlinien.html]:

1.2 Beiträge:
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]


Einfach oben bei Deinem ersten Beitrag auf user defined image oder user defined image klicken und den Titel ändern. Danke Dir!

Viele Grüße,
Christian


Greek - Sa 20.09.08 12:44

ok danke hab ich gemacht, also kann mir jemand sagen wie das mit den 1-20 zählen und so geht? ich muss das nämlich demnächst abschicken, hab net mehr viel zeit noch nen crash kurs zu machen...(ich fang ihn aber gleich mal an)


Greek - Sa 20.09.08 13:00

Wow ich habs gerade selber hingegrigt!! :D

Danke für den Begin/end tipp :)


Jakob_Ullmann - Sa 20.09.08 13:02

Wieso nicht einfach for-to-do bzw. for-downto-do nehmen?


Greek - Sa 20.09.08 13:32

muss es in jeder schleife machen und mit repeat hab ich gerade angefangen


wazup - Sa 20.09.08 13:48


Quelltext
1:
for-to-do/for-downto-do Schleife                    

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var
  Zahl1, Zahl2, I: Integer;
begin
  Zahl1 := 1;
  Zahl2 := 5;

  for I := Zahl1 to Zahl2 do
    Memo1.Lines.Add(IntToStr(I));

  for I := Zahl2 downto Zahl1 do
    Memo1.Lines.Add(IntToStr(I));
end;

Quelltext
1:
repeat-until-Schleife                    

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
var
  Zahl1, Zahl2, TEMP1, TEMP2: Integer;
begin
  TEMP1 := 1;
  TEMP2 := 10;
  Zahl1 := TEMP1;
  Zahl2 := TEMP2;

  repeat
    if Zahl1 <= TEMP2 then
    begin
      Memo1.Lines.Add(IntToStr(Zahl1));
      Inc(Zahl1);
    end
    else begin
      Memo1.Lines.Add(IntToStr(Zahl2));
      Dec(Zahl2);
    end;
  until (Zahl1 >= TEMP2) and (Zahl2 + 1 <= TEMP1);
end;

Quelltext
1:
while-do-Schleife                    

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
var
  Zahl1, Zahl2, TEMP1, TEMP2: Integer;
begin
  TEMP1 := 1;
  TEMP2 := 10;
  Zahl1 := TEMP1;
  Zahl2 := TEMP2;

  while (Zahl2 >= TEMP1) do
  begin
    if Zahl1 <= TEMP2 then
    begin
      Memo1.Lines.Add(IntToStr(Zahl1));
      Inc(Zahl1);
    end
    else begin
      Memo1.Lines.Add(IntToStr(Zahl2));
      Dec(Zahl2);
    end;
  end;
end;


Greek - Sa 20.09.08 13:56


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
  Memo1.Clear;
  swert:=StrToInt(Edit1.Text);
  ewert:=StrToInt(Edit2.Text);
  i:=swert;
  j:=ewert;
  While (j>swert) and (i<=ewert) do Begin
    if (i<=ewert) then
  Begin
      Memo1.Lines.Add(IntToStr(i));
      Inc(i);
  end;
    If (i>=ewert) then
  Begin
      Memo1.Lines.Add(IntToStr(j));
      dec(j);
  end;
 end;
end;




Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
var i, swert, ewert, j : integer;
begin
  Memo1.Clear;
  swert:=StrToInt(Edit1.Text);
  ewert:=StrToInt(Edit2.Text);
  i:=swert;
  j:=ewert;
  Repeat
    if (i<=ewert) then
  Begin
      Memo1.Lines.Add(IntToStr(i));
      Inc(i);
  end;
    If (i>=ewert) then
  Begin
      Memo1.Lines.Add(IntToStr(j));
      dec(j);
  end;
  Until (j<swert) and (i>=ewert);


die repeat schleife stimmt aber while zählt er nur bis 9 runter wieso?


Greek - Sa 20.09.08 13:57

wazup du benutzt 2 Schleifen , in der aufgabe steht aber das man nur eine verwenden darf


wazup - Sa 20.09.08 14:05

user profile iconGreek hat folgendes geschrieben:
wazup du benutzt 2 Schleifen , in der aufgabe steht aber das man nur eine verwenden darf
While-Do-Schleife

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
var
  Zahl1, Zahl2, TEMP1, TEMP2: Integer;
begin
  TEMP1 := 1;
  TEMP2 := 10;
  Zahl1 := TEMP1;
  Zahl2 := TEMP2;

  while (Zahl2 >= TEMP1) do
  begin
    if Zahl1 <= TEMP2 then
    begin
      Memo1.Lines.Add(IntToStr(Zahl1));
      Inc(Zahl1);
    end
    else begin
      Memo1.Lines.Add(IntToStr(Zahl2));
      Dec(Zahl2);
    end;
  end;
end;
For-Schleife

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var
  Zahl1: Integer;
  Zahl2: Integer;
  I: Integer;
begin
  Zahl1 := 1;
  Zahl2 := 10;

  for I := Zahl1 to Zahl2 * 2 do
  begin
    if I <= Zahl2 then Memo1.Lines.Add(IntToStr(I))
    else Memo1.Lines.Add(IntToStr(Zahl2 * 2 - I + 1));
  end;


Greek - Sa 20.09.08 14:14

Ich hab aber bei der Repeat Schleife jetzt noch den Luxus reingemacht das man sich die zahlen aus wählen kann ( swert:=StrToInt(Edit1.Text); ) geht das auch für die while und for schleife?


Greek - Sa 20.09.08 15:15

nagut habs so gelassen danke für eure hilfe! =)


wazup - Sa 20.09.08 16:03

user profile iconGreek hat folgendes geschrieben:
nagut habs so gelassen danke für eure hilfe! =)
Ich habs nochmal überarbeitet!

For-To-Do Schleife:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
var
  Num1, Num2, I: Integer;
begin
  Num1 := 6;
  Num2 := 10;

  for I := Num1 to Num2 * 2 do
  begin
    if I <= Num2 then Memo1.Lines.Add(IntToStr(I))
    else begin
      if Num2 + 1 = Num1 then
        Break
      else begin
        Memo1.Lines.Add(IntToStr(Num2));
        Dec(Num2);
      end;
    end;
  end;
end;
For-DownTo-Schleife

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
var
  Num1, Num2, I: Integer;
begin
  Num1 := 6;
  Num2 := 10;

  for I := Num2 * 2 downto Num1 do
  begin
    if I <= Num2 then Memo1.Lines.Add(IntToStr(I))
    else begin
      if not (Num1 - 1 >= Num2) then
      begin
        Memo1.Lines.Add(IntToStr(Num1));
        Inc(Num1);
      end;
    end;
  end;
end;
Repeat-Until-Schleife

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
var
  Num1, Num2, Tmp1, Tmp2: Integer;
begin
  Num1 := 5;
  Num2 := 16;
  Tmp1 := Num1;
  Tmp2 := Num2;

  repeat
    if Num1 <= Tmp2 then
    begin
      Memo1.Lines.Add(IntToStr(Num1));
      Inc(Num1);
    end
    else begin
      Memo1.Lines.Add(IntToStr(Num2));
      Dec(Num2);
    end;
  until (Num1 >= Tmp2) and (Num2 + 1 <= Tmp1);
end;
While-Do-Schleife

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
var
  Num1, Num2, Tmp1, Tmp2: Integer;
begin
  Num1 := 5;
  Num2 := 16;
  Tmp1 := Num1;
  Tmp2 := Num2;

  while (Num1 <= Tmp2) and (Num2 >= Tmp1) do
  begin
    if Num1 < Tmp2 then
    begin
      Memo1.Lines.Add(IntToStr(Num1));
      Inc(Num1);
    end
    else begin
      Memo1.Lines.Add(IntToStr(Num2));
      Dec(Num2);
    end;
  end;
end;