![]() |
Mathe Problem 1+2-3 ... +99-100
Hallo,
ich hab da mal ein kleines Denkproblem. Ich hoffe mir kann jemand auf die spränge helfen. Ich hab eine Mathe Aufgabe die ich mit dem Pc lösen möchte. Undzwar: Zitat:
So jetzt habe ich flogendes gemacht
Delphi-Quellcode:
Das ganze klappt natürlich mal wieder nicht. Hat jemand ne Idee?
var i,e: integer;
a: Array [1..100] of Integer; begin e := 0; for i := 1 to 100 do begin a[i] := i; g := g + a[i] - a[i+1]; // ListBox1.Items.Add(IntToStr(a[i])); end; Caption := IntToStr(e); end; |
Re: Mathe Problem 1+2-3 ... +99-100
So könnts gehen:
Delphi-Quellcode:
var
Num, i: Integer; b: Boolean; Num := 1; b := True; for i := 2 to 100 do begin if b then Num := Num + i else Num := Num - i; b := not b; end; |
Re: Mathe Problem 1+2-3 ... +99-100
Also wenn du dir das mal vorstellst was du da machst sieht das ungefähr so aus:
G := 1 - 2 + 2 - 3 + 3 - 4 + 5 - 6... also
Delphi-Quellcode:
das sollte besser gehn...
var
g:integer; begin for i := 1 to 100 do if (i mod 2 = 0) or (i = 1) then g := g + i else g := g - i; end; habs aber net getestet nur fix runtergetippt... PS: Poste das obwohl wieder jemand schneller war... Greetz Boombuler |
Re: Mathe Problem 1+2-3 ... +99-100
um ne 3. möglichkeit zu präsentieren, die kk (komplizierter und kürzer :mrgreen: ) is:
Delphi-Quellcode:
Ich mag kurze schleifen und wenig ifs :mrgreen:
function EinsBisHundert: integer;
var i: integer; begin result := 1; for i := 2 to 100 do inc(result, (ord(not odd(i)) * 2 - 1) * i); //Das lange dings vor dem i gibt entweder +1 oder -1, also entweder dazu- oder wegzählen end; |
Re: Mathe Problem 1+2-3 ... +99-100
Ich würde aber raten, g vorher 0 zu setzen. Man weiß ja nie. ;)
|
Re: Mathe Problem 1+2-3 ... +99-100
Vielen dank, war wohl mal wieder auf'm falschen Dampfer.
Klappen beide möglichkeiten. :) Eine Frage habe ich noch warum fangt ihr die Schleife mit der 2 an? |
Re: Mathe Problem 1+2-3 ... +99-100
das kann man aber auch mit hilfe der mathematik umformen und muss dann nicht iterativ/rekursiv rechnen.
|
Re: Mathe Problem 1+2-3 ... +99-100
Zitat:
Delphi-Quellcode:
uses math;
//... function AlternierendeSumme(von: integer): integer; begin SetRoundMode(rmUp); result := (ord(not odd(von)) * 2 - 1) * round(von / 2) + 2; SetRoundMode(rmNearest); end; |
Re: Mathe Problem 1+2-3 ... +99-100
ma ne frage:
ist nicht a + a+1 - a+2 + a+3 .... - a+n automatisch gleich a-(n/2) wenn n gerade ist? (a=Anfang, n=Anzahl der schritte sozusagen) da immer zwei zahlen insgesamt gesehen eins abziehen? also:
Delphi-Quellcode:
function WieHeisstDas(Anfang, N: Int64):Int64;
begin //Für gerades N Result:=Anfang-(N Div 2); //Für jedes N Result:=Anfang-(N Div 2) + (N Mod 2) * (Anfang + N); end; |
Re: Mathe Problem 1+2-3 ... +99-100
Gauß hatte sich überlegt, dass man anstatt die Zahlen der Reihe nach zu addieren, sie sozusagen immer an den beiden Enden der Folge addieren kann, also statt 1 + 2 + 3 + ...
+ 100 rechnete er (1 + 100) + (2 + 99) + ... + (50 + 51). Er erhielt genau 50 zweiteilige Summen, von denen jede = 101 betrug. Daher konnte er auch multiplizieren: 50 mal 101 = 5050. vielleicht findest du auch was mit minus. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:40 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