AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi natürliche, ungerade zahlen addieren
Thema durchsuchen
Ansicht
Themen-Optionen

natürliche, ungerade zahlen addieren

Ein Thema von Amo · begonnen am 30. Sep 2006 · letzter Beitrag vom 30. Sep 2006
Antwort Antwort
Seite 1 von 3  1 23      
Amo

Registriert seit: 26. Okt 2005
82 Beiträge
 
Delphi 7 Enterprise
 
#1

natürliche, ungerade zahlen addieren

  Alt 30. Sep 2006, 17:58
Also die zahl die ich brauche ist: alle natürlichen und ungeraden zahlen von 1 bis 489511 (jeweils eingeschlossen) ---> zusammen addiert. So jetzt habe ich eben gecodet und vom code her funktioniert es ja alles, nur das ergebnis kommt nicht hin.

Hier mein code (Auf der Form vorhanden sind Button1, Button2, Memo, Edit1):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
  i := 0;
  while strtoint(memo.Lines.Strings[memo.Lines.Count-1]) > 1 do
  begin
  memo.Lines.Add(inttostr(strtoint(memo.Lines.Strings[i])-2));
  inc(i);
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var a: integer; result: longint;
begin
  a := 0;
  while a < memo.Lines.Count do
  begin
  result := strtoint(memo.Lines.Strings[a]);
  edit1.Text := inttostr(strtoint(edit1.text)+result);
  inc(a);
  end;
end;
Vorraussetzung Edit1.Text ist am anfang null.

So, wo ist jetzt der fehler? Ich verstehe es einfach nicht, als ergebnis bekomme ich immer eine negative zahl!!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: wo ist der fehler?

  Alt 30. Sep 2006, 18:00
Warum nimmst du keine For-Schleife?
Markus Kinzler
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: wo ist der fehler?

  Alt 30. Sep 2006, 18:03
Moin Amo,

bitte verpasse Deinem Beitrag doch noch einen aussagekräftigen Titel. Danke.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: wo ist der fehler?

  Alt 30. Sep 2006, 18:05
Ich glaube das ist schon im Ansatz falsch, zumindest ist für mich nicht ersichtlich, wo da ungerade Zahlen herkommen sollen.
Ich würde das so machen:
Delphi-Quellcode:
function UngeradeZahlenaddiert(von,bis:Integer):Integer;
Var i:Integer;
Begin
  if (von mod 2)=0 Then
    Inc(von);
  if (bis mod 2)=0 Then
    Dec(bis);
  i:=von;
  Result:=0;
  while i<bis do
  begin
    Result:=Result+i;
    Inc(i,2);
  end;
end;
Außerdem hab ich den Verdacht, dass das irgendwie auch ohne Schleife geht..
Benjamin
  Mit Zitat antworten Zitat
Benutzerbild von richie
richie

Registriert seit: 21. Apr 2006
Ort: Dresden
127 Beiträge
 
#5

Re: wo ist der fehler?

  Alt 30. Sep 2006, 18:09
Edit: Hab mich verlesen. Aber so müsste es doch gehen:

Delphi-Quellcode:
 for I := 1 to 489511 do
  if I mod 2 = 1 then
    Zahl := Zahl + I;
WriteLn(IntToStr(Zahl));
ReadLn;
Robert
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: wo ist der fehler?

  Alt 30. Sep 2006, 18:29
Zitat von BenjaminH:
Außerdem hab ich den Verdacht, dass das irgendwie auch ohne Schleife geht..
So isses...
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#7

Re: wo ist der fehler?

  Alt 30. Sep 2006, 18:29
Hai ihr,

ich habe hier auch noch einen Vorschlag der auf das Delphi-Referenz durchsuchenMod verzichtet
Delphi-Quellcode:
function OddlySum(const aFrom, aTo: Integer): Int64;
var
  i: Integer;
  blubb: Int64;
begin
  blubb := 0;
  for i := aFrom to aTo do
  begin
    if (i and 1) = 1 then
    begin
      blubb := blubb + i;
    end;
  end;
  result := blubb;
end;

procedure TDemo_Form.Button1Click(Sender: TObject);
begin
  ShowMessageFmt('%d', [OddlySum(1, 489511)]);
end;

[edit]Mal schnell Cardinal gegen Int64 getauscht
Stephan B.
  Mit Zitat antworten Zitat
Amo

Registriert seit: 26. Okt 2005
82 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: natürliche, ungerade zahlen addieren

  Alt 30. Sep 2006, 18:33
@ ritchie: hmm, da kommt eine zahl raus (1923305872) aber die ist ja auch nicht korrekt.. also ich habe jetzt i und zahl als cardinal deklariert, ich hoffe das war richtig..

@ BenjaminH: Ich bin noch dabei das jetzt zu machen und zu testen^^
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: natürliche, ungerade zahlen addieren

  Alt 30. Sep 2006, 18:34
Man könnte auch Laufvariable von der zahl entkoppeln
Delphi-Quellcode:
for i = 0 to <ende-start div 2>+1
begin
   z = <start>+2*ende-1;
...
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#10

Re: natürliche, ungerade zahlen addieren

  Alt 30. Sep 2006, 18:35
Man könnte auch einfach die dafür erdachte mathematische Formel benutzen .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:23 Uhr.
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