![]() |
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: |
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; |
Re: repeat-until und for schleife Frage
Hallo!
Ich habe die Aufgabenstellung etwas anders verstanden als the_master.
Delphi-Quellcode:
So, Code nicht getestet und ich bin mir auch nicht sicher, ob es das gesuchte ist.
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; MfG Peter |
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:
|
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. |
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 |
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:
So siehts für die Addition aus. Es sollte leicht übertragbar auf die Multiplikation sein!
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; |
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? |
Re: repeat-until und for schleife Frage
@Peter Lustig: Ohne funktionierts zumindest nicht.
|
Re: repeat-until und for schleife Frage
Ist die Hausaufgabe nun gelöst?
|
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 |
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. |
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.
|
Re: repeat-until und for schleife Frage
Dann setzt man halt noch
Delphi-Quellcode:
vor die Schleife.
if a > 0 then CodeAusführen
|
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:
|
Re: repeat-until und for schleife Frage
Klar, das ist auch möglich. Die Abbruchbedingung muss jetzt einfach i<>a lauten.
|
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; |
Re: repeat-until und for schleife Frage
Zitat:
|
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