Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Summen zwischen 2 Zahlen mit Repeat-Until (https://www.delphipraxis.net/158359-summen-zwischen-2-zahlen-mit-repeat-until.html)

Matz4000 14. Feb 2011 17:06

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:
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;
Als erstes sage ich das c dem wert der ersten eingegebenen Zahl entspricht. Die Summe beginnt logischer Weise mit 0.
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

DeddyH 14. Feb 2011 17:11

AW: Summen zwischen 2 Zahlen mit Repeat-Until
 
Zitat:

Delphi-Quellcode:
a:=strtoint(edit1.text);
b:=strtoint(edit1.text);

Sicher, dass das so stimmt?

chaosben 14. Feb 2011 17:13

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:
until c>b
ist besser. :)

ho.sch 14. Feb 2011 17:15

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

Matz4000 14. Feb 2011 17:23

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 ;)

sx2008 14. Feb 2011 22:14

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.

Deep-Sea 15. Feb 2011 08:20

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:
Ergebnis := GaußscheSumme(b) - GaußscheSumme(a - 1);
:-D

Bummi 15. Feb 2011 09:01

AW: Summen zwischen 2 Zahlen mit Repeat-Until
 
jepp, war auch meine erste Idee, aber wenn es der PC rechnen muss :mrgreen:

Sherlock 15. Feb 2011 09:14

AW: Summen zwischen 2 Zahlen mit Repeat-Until
 
Zitat:

Zitat von Deep-Sea (Beitrag 1081766)
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:
Ergebnis := GaußscheSumme(b) - GaußscheSumme(a - 1);
:-D

Geil, in welcher Delphi-Unit steht denn diese [OH]GaußscheSumme[/OH] zur Verfügung?


:roll:
Sherlock

Deep-Sea 15. Feb 2011 09:20

AW: Summen zwischen 2 Zahlen mit Repeat-Until
 
Zitat:

Zitat von Sherlock (Beitrag 1081774)
Geil, in welcher Delphi-Unit steht denn diese [OH]GaußscheSumme[/OH] zur Verfügung?

Delphi-Quellcode:
unit SherlocksSpezialUnit;

interface

function GaussscheSumme(N: Integer): Int64;

implementation

function GaussscheSumme(N: Integer): Int64;
begin
  Result := (N * (N + 1)) div 2;
end;

end.
Na da, in SherlocksSpezialUnit :P


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:46 Uhr.
Seite 1 von 2  1 2      

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