![]() |
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. |
Re: Mathe Problem 1+2-3 ... +99-100
wie wäre es mit...
Delphi-Quellcode:
var i: integer;
e: extended; begin e := 1.0; for i := 2 to 100 do e:=e+(power(-1,i)*i); Caption := floattostr(e); end; |
Re: Mathe Problem 1+2-3 ... +99-100
hallo....meine lösung?
1 + 2-3 + 4-5 + 6-7 ... jedes paket macht -1 daher 1 - Anzahl der Pakete... |
Re: Mathe Problem 1+2-3 ... +99-100
auch eine alternative :D
|
Re: Mathe Problem 1+2-3 ... +99-100
es ginge auch...
Code:
1+2 -3+4 -5+6 -7+8 ... -(n-1) + n
3 + 1 + 1 + 1 ... 2+(n/2) für alle n=2*m {m=1,2..x) 2-((n+1)/2) für alle n=2m-1 {m=1,2..x) |
Re: Mathe Problem 1+2-3 ... +99-100
Eine Überlegung noch von mir...
Ich bin durch glkgereons "Paketmethode" drauf gekommen. Mann addiert immer Pakete, die eine Zahl rechnet, minus die nächstgrößere ganze Zahl. Das hieße doch dann, es würde immer um eins kleiner werden ( (-) + (-) = (-) ). Man könnte doch dann prinzipiell folgendermaßen vorgehen:
Code:
Also so in etwa... die Anzahl der Pakete wäre dann die Zahl im negativen Bereich, zu der dann die 1 zugezählt wurde.
1 + (100 div (-2) )
Ich bin mir jedoch nicht sicher, ob meine oben genannte Rechnung so korrekt ist... ;) //edit: :wall: Hab wohl nicht genau nachgelesen. glkgereon hat ja genau dieselbe Lösung :oops: |
Re: Mathe Problem 1+2-3 ... +99-100
Zitat:
|
Re: Mathe Problem 1+2-3 ... +99-100
Wenn die letzte Zahl ungerade ist, müsste man prüfen, ob sie ungerade ist. Wenn ja, dann muss die letzte Zahl imho noch dazu addiert werden ;)
|
Re: Mathe Problem 1+2-3 ... +99-100
Das mag ich so an diesem Forum :dp: über die simpelsten Probleme wird sich hier gleich totdiskutiert :)
Schick mir mal jemand ne PM wenn das Thema hier die 100 Lösungsvorschläge gesprengt hat! :drunken: Greetz Boombuler |
Re: Mathe Problem 1+2-3 ... +99-100
Zitat:
1. jemand hat ne frage gestellt 2. sie wurde vom informatischen teil her beantwortet 3. ich hab eingeworfen, dass das vom mathematischen gesichtspunkt gesehen "suboptimal" ist 4. jetzt wird ne vernünftige mathematische lösung gesucht |
Re: Mathe Problem 1+2-3 ... +99-100
Zitat:
Der einzige Beitrag der hier unproduktiv ist, ist Deiner und nun auch meiner :wall: |
Re: Mathe Problem 1+2-3 ... +99-100
und nocheinmal werde ich meine Lösung wiederholen, da sie auch für ungerade anzahlen funktioniert und kurz ist und überhaupt und so!!! :twisted:
Delphi-Quellcode:
falls n gerade ist, kommt genau das obere raus, da N Mod 2 = 0 ist...
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; anderenfalls kommt 1 raus, und eine ungerade zahl wird immer addiert, A + N in diesem Fall würde man 1,99 übergeben (erste Zahl: 1, Weitere Zahlen: 99) ich hoffe da sind keine fehler mehr drin (ich liebe es immer wenn irgendwo ein (x+1) oder (x-1) fehlt :( ) |
Re: Mathe Problem 1+2-3 ... +99-100
Habe die erste 3 Lösungen ausprobiert und alle drei sind zum Ergebnis von 52 gekommen.
Ich habe das ganze noch einmal so nach gerechnet und bin auf 50 gekommen. Auch in der Schule sind wir auf 50 gekommen. --- Edit --- In der Schule haben wie als Mathematische Lösungen immer 2 Zahlen zusammengefasst so das wir immer auf -1 gekommen sind. Das dann halt 50 mal. 50*(-1) = -50 |
Re: Mathe Problem 1+2-3 ... +99-100
also ich komme auf -49...
1, dann 50 Paare zu je -1 nix +50... |
Re: Mathe Problem 1+2-3 ... +99-100
Zitat:
Code:
. 1 = +1
1 2-3 = -1 2 4-5 = -1 .. .. 49 99-99 = -1 100 =+100 ---------------- 52 =============== |
Re: Mathe Problem 1+2-3 ... +99-100
Huppsala..meine rechnung is falsch da im ersten post folgendes steht:
1+2-3+4-5+6-7...99-100 da muss ein plus hin!!! (ungerade Zahlen bis auf die 1 werden abgezogen....gerade addiert) demnach ergibt sich folgende Formel. X = Anfang + N - (N-1) Div 2 bzw X = Anfang + (N Mod 2) * N - (N-1) Div 2 (soweit ich das sehe und mich nicht vertue) |
Re: Mathe Problem 1+2-3 ... +99-100
Zitat:
1-2+3-4+5-6 ... -1| -1| -1| ... :oops: |
Re: Mathe Problem 1+2-3 ... +99-100
:shock: oh mann :wall:
dann sind es natürlich -n/2 für alle graden n und (-3n+1)/2 für alle ungeraden! |
Re: Mathe Problem 1+2-3 ... +99-100
-(n/2) is korrekt, aber wieso (-3n+1)/2 ?
ich hätte gesagt: -(n/2)+n also -(n/2) + (n mod 2)*n Edit: und, um nochmal auf das problem M - M+1 + M+2 - M+3 ... M+N zurückzukommen....also eine variable Anfangszahl, sei gesagt: die Formel -(n/2) muss nicht geändert werden. -(n/2)+(n mod 2)*n muss wie folgt geändert werden: -(n/2) + (n mod 2) * (n+anfang) |
Re: Mathe Problem 1+2-3 ... +99-100
mein gott, ich versteh nicht wieso ihr über so einen pipifax immer so lange diskutiert. und bei den ganzen beiträgen sieht man auch, dass 87% nicht mal nachdenken geschweige denn die vorigen beiträge ordentlich lesen. das kann doch echt nicht mehr angehen. habt ihr alle langeweile oder wie?
denkt doch mal ein kleines bißchen nach, bevor ihr hier einen beitrag schreibt. bitte. |
Re: Mathe Problem 1+2-3 ... +99-100
Zitat:
(-3n+1)/2 teste es daoch aus.... |
Re: Mathe Problem 1+2-3 ... +99-100
Zitat:
|
Re: Mathe Problem 1+2-3 ... +99-100
Jetzt noch ein Lösungsvorschlag von mir :mrgreen: :
Man errechnet die Summe der positiven und die der negativen Zahlen mit der Gaußschen Summenformel und subtrahiert sie dann. Sollte langsamer als die "Pakete"-Idee sein, dafür kann man alles schnell von 1+2-3+4... auf 1-2+3-4... oder auch 2-3+4-6+6-9... umstellen.
Delphi-Quellcode:
function Foo: Integer;
// Erste Zahl, Letzte Zahl, Anzahl function Gauss(AFrom, ATo, ACount: Integer): Integer; begin Result := (AFrom + ATo) * ((ATo - AFrom) div ACount + 1) div 2; // = (From + To) * Steps / 2 // Steps = (From - To) div Count + 1 end; begin Result := Gauss(1, 99, 2) - Gauss(2, 100, 2); //1 - 2 + 3... // Result := Gauss(2, 50 * 2, 2) - Gauss(3, 50 * 3, 3); //2 - 3 + 4 - 6..., 50 Paare end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:38 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