Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi repeat-until und for schleife Frage (https://www.delphipraxis.net/9539-repeat-until-und-schleife-frage.html)

PomBär 28. Sep 2003 20:59


repeat-until und for schleife Frage
 
hallo
ich bin heute zum ersten mal hier und hab mal ne frage. ich hab die aufgabe in einer repeat-until bzw. in einer for schleife folgendes zu realisieren:
ich habe eine zahl von 1 bis 5,
1Versuch: wenn ich zb. 4 als zahl eingebe soll das mir das programm in einem label das ergebnis von 4+3+2+1 angeben.
2Versuch: wenn ich zb. 3 als zahl eingebe soll mir das programm in einem label das ergebnis von 3*2*1 angeben.
ich hoffe einer von euch kann mir helfen.
pombär :wall:

Dagon 28. Sep 2003 21:05

Re: repeat-until und for schleife Frage
 
Ich war mal so nett und habe dir das Problem Nr.1 gelöst:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Zahl, i: Integer;
    s: String;
begin
  Zahl := StrToInt(Edit1.Text);
  s := IntToStr(Zahl);
  for i := Zahl-1 downto 1 do
    s := s + ' + ' + IntToStr(i);
  Label1.Caption := s;
end;

Christian S. 28. Sep 2003 21:15

Re: repeat-until und for schleife Frage
 
Hallo!

Ich habe die Aufgabenstellung etwas anders verstanden als the_master.
Delphi-Quellcode:
function addiere(a : Integer) : String;
VAR i, temp : INTEGER;
begin
  temp := 1;
  for i := 2 TO a DO
  temp := temp + i;
  result := IntToStr(temp);
end;


function multipliziere(a : Integer) : String;
VAR i, temp : INTEGER;
begin
  temp := 1;
  for i := 2 TO a DO
  temp := temp * i;
  result := IntToStr(temp);
end;

procedure TForm1.Button1Click(Sender: TObject);
var Zahl : INTEGER;
begin
  Zahl := StrToInt(Edit1.Text);
  Label1.Caption := addiere(zahl);
  Label2.Caption := multipliziere(zahl);
end;
So, Code nicht getestet und ich bin mir auch nicht sicher, ob es das gesuchte ist.

MfG
Peter

Dagon 28. Sep 2003 21:17

Re: repeat-until und for schleife Frage
 
@ Peter Lustig: Ja, man hätte die Summe und das Produkt bilden sollen und nicht die Rechnung anzeigen lassen. :oops:

czapie 28. Sep 2003 21:22

Re: repeat-until und for schleife Frage
 
@PomBär,

ging deine Frage nur dahin, dass dir jemand das Problem löst, oder steckte da (aufgrund des Titels)
noch mehr Frage hinter? :?:
Czapie.

PomBär 28. Sep 2003 21:33

Re: repeat-until und for schleife Frage
 
hey leute das is echt voll nett von euch;
das ich so schnell ne antwort bekomme hätte ich nicht gedacht.
wisst ihr auch wie ich das ganze in einer repeat-until schleife realisiere? :dp:
PomBär

Dagon 28. Sep 2003 21:42

Re: repeat-until und for schleife Frage
 
Da ich zuvor nicht die Frage nicht richtig beantwortet habe, will ich's jetzt richtig machen:

Delphi-Quellcode:
function addiere(a : Integer) : String;
VAR i, temp : INTEGER;
begin
  temp := 1;
  i := 1;
  repeat
    inc(i);  
    temp := i + Temp;
  until i=a;
  result := IntToStr(temp);
end;
So siehts für die Addition aus. Es sollte leicht übertragbar auf die Multiplikation sein!

Christian S. 28. Sep 2003 21:43

Re: repeat-until und for schleife Frage
 
Du musst den den Startwert des Zählers (also i) selbst setzen und den Wert des Zählers in jedem Schleifendurchlauf selbst ändern. Und als "until"-Bedingung musst Du den Zähler mit der Obergrenze abgleichen.

//edit: @the_master: Bist Du Dir sicher, dass das inc(temp) in der Schleife richtig ist?

Dagon 29. Sep 2003 08:41

Re: repeat-until und for schleife Frage
 
@Peter Lustig: Ohne funktionierts zumindest nicht.

jbg 29. Sep 2003 09:22

Re: repeat-until und for schleife Frage
 
Ist die Hausaufgabe nun gelöst?

Jan 29. Sep 2003 09:26

Re: repeat-until und for schleife Frage
 
@the_master:

Streiche inc(temp);
und setze inc(i); vor temp := i + Temp; dann sollte es stimmen, weil so wie das bei dir steht ist das Unsinn... du addierst jetzt immer viel zu oft irgendwas drauf.
deine reihe für a = 5 sieht so aus:

temp =
1
2
3
4
6
7
10
11
15

kommt dann zwar mirakuloserweise auf das selbe raus, aber ist auf jeden Fall mal absolut schräg gerechnet. Ob das dann nachher noch mathematisch begründbar ist, warum das klappt.. keine Ahnung.
Gruß
Jan

Dagon 29. Sep 2003 09:32

Re: repeat-until und for schleife Frage
 
@Jan:
Danke. Ich habs jetzt geändert. Der Fehler ist mir wohl unterlaufen, weil ich eine Zeile, die als Komentar gekennzeichnet war, "entkommentiert" habe.

jbg 29. Sep 2003 09:33

Re: repeat-until und for schleife Frage
 
Und was passiert bei a<=0 ? - Eine fast Endlosscheife, ca. 4 Milliarden durchläufe stattfinden und der Integer temp überläuft.

Dagon 29. Sep 2003 09:36

Re: repeat-until und for schleife Frage
 
Dann setzt man halt noch
Delphi-Quellcode:
if a > 0 then CodeAusführen
vor die Schleife.

PomBär 29. Sep 2003 14:43

Re: repeat-until und for schleife Frage
 
mensch das sind ja richtig viele vorschläge. aber kann man das ganze nicht auch in einer while schleife realisieren. wisst ihr wie das geht? :gruebel:

Dagon 29. Sep 2003 14:46

Re: repeat-until und for schleife Frage
 
Klar, das ist auch möglich. Die Abbruchbedingung muss jetzt einfach i<>a lauten.

Dagon 29. Sep 2003 14:52

Re: repeat-until und for schleife Frage
 
Ich habe mal zum Problem Nr. 2 (Produktbildung) eine kleine Rekursion geschrieben:

Delphi-Quellcode:
Function Fakultaet(n: Extended): Extended;
begin
  If n = 0 then
    Result := 1
  else
    Result := n * Fakultaet(n - 1);
end;

Christian S. 29. Sep 2003 14:56

Re: repeat-until und for schleife Frage
 
Zitat:

Zitat von Pombär
mensch das sind ja richtig viele vorschläge. aber kann man das ganze nicht auch in einer while schleife realisieren. wisst ihr wie das geht?

Klar, aber nachdem wir Dir die For- und die Repeat-Until-Schleife schon vorgekaut haben, könntest Du die While-Schleife mal selber probieren. Und wenn es nicht klappt, helfen wir Dir, den Fehler zu finden. Du lernst echt mehr, wenn Du es selbst probierst!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 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-2025 by Thomas Breitkreuz