![]() |
Delphi-Version: 7
Summen zwischen 2 Zahlen mit Repeat-Until
Hey Leute,
kleine Frage: Ich soll für die Schule n Programm programmieren, was die Summe zwischen 2 Zahlen ausgibt. z.B. a=5 b=10 => s:=5+6+...+10=45, und dies mit einer Repeat-Until-Schleife. Ich zerbreche mir jz seit na viertel-stunde den Kopf, was ich falsch mache :(
Delphi-Quellcode:
Als erstes sage ich das c dem wert der ersten eingegebenen Zahl entspricht. Die Summe beginnt logischer Weise mit 0.
procedure TForm1.Button1Click(Sender: TObject);
var a,b:integer; s:integer; c:integer; begin a:=strtoint(edit1.text); b:=strtoint(edit1.text); c:=a; s:=0; repeat s:=s+c; c:=c+1; until c=b; label5.caption:=inttostr(s); end; In der Schleife wird dann die summe (am Anfang 0) mit c addiert (am Anfang 5). c (5) wird danach zu 6 . Beim nächsten durchgang heißt es dann: 5+6 und c wird zu 7..u.s.w. bis letztendlich c=10 is. Wenn ich allerdings das Prog starte, und die 2 Zahlen eingebe, hängt sich das Prog auf. Wo liegt der Fehler? Danke im Vorraus, Gruß Michael |
AW: Summen zwischen 2 Zahlen mit Repeat-Until
Zitat:
|
AW: Summen zwischen 2 Zahlen mit Repeat-Until
Und zusätzlich zu dem Zuweisungsfehler von DeddyH (also nicht er hat den Fehler gemacht ... sondern gefunden ;)) ist noch ein Fehler in der Abbruchbedingung.
Deine Schleife hört einen Schritt zu zeitig auf.
Delphi-Quellcode:
ist besser. :)
until c>b
|
AW: Summen zwischen 2 Zahlen mit Repeat-Until
Hi Michael,
ich gehe mal davon aus, dass Du zwei Edit-Boxen hast für die beiden Werte. Dann solltest Du b auf den Wert der zweiten Box setzen, dann sollte es erstmal funzen. Jetzt wird c nämlich niemals gleich b, da nach dem ersten Durchlauf Deiner Schleife c schon größer als b ist. Danach wirst Du feststellen, dass Deine Summe nicht stimmt: die letzte Zahl wird nämlich nicht addiert, aber die Lösung dafür findest Du sicher selbst ... Grüße, Holger |
AW: Summen zwischen 2 Zahlen mit Repeat-Until
Ogott danke leute :D
Son blöder Zuweisungsfehler... Ja die sache mit break kommt erst in da nächste Stunde dran, werds aber schon dabei machen ;) |
AW: Summen zwischen 2 Zahlen mit Repeat-Until
Du bräuchtest übrigens eine While...Do - Schleife anstatt Repeat...Until.
Wenn nämlich a = 10 und b = 9 wäre, dann will man den Schleifenkörper eigentlich gar nicht betreten. Und die am Besten geeignete Schleife wäre eine For...to...Do-Schleife. Naja, vielleicht erklärt das euer Lehrer die nächste Stunde oder er weiss vielleicht selber nicht, welche Schleifenart für bestimmte Aufgaben am Besten ist. |
AW: Summen zwischen 2 Zahlen mit Repeat-Until
Ich weiß natürlich, dass die das in der Schule unbedingt mit Schleifen machen sollen. Aber allgemein geht es doch auch mit zwei gaußschen Summenformeln, oder? Und zwar in der Art:
Code:
:-D
Ergebnis := GaußscheSumme(b) - GaußscheSumme(a - 1);
|
AW: Summen zwischen 2 Zahlen mit Repeat-Until
jepp, war auch meine erste Idee, aber wenn es der PC rechnen muss :mrgreen:
|
AW: Summen zwischen 2 Zahlen mit Repeat-Until
Zitat:
:roll: Sherlock |
AW: Summen zwischen 2 Zahlen mit Repeat-Until
Zitat:
Delphi-Quellcode:
Na da, in SherlocksSpezialUnit :P
unit SherlocksSpezialUnit;
interface function GaussscheSumme(N: Integer): Int64; implementation function GaussscheSumme(N: Integer): Int64; begin Result := (N * (N + 1)) div 2; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:12 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