![]() |
fußballsation mathematik
bin grad meine hausaufgaben mit delphi am ausrechnen aber ich komm einfach nicht drauf wo ich den fehler im code hab
aufgabe: Ein fußballstation hat 79040 Sitzplätze. In der 1. Reihe sind 1010 Sitzplätze vorhanden, in den folgenen Reihen jeweis 20 Sitzplätze mehr. Wieviel Reihen hat das Stadion? Im lösungsbuch steht es wären 52 Reihen aber bei mir kommt immer was anderes raus
Delphi-Quellcode:
var s,i:integer;
begin S:=990; i:=0; while s<79041 do begin i:=i+1; s:=s+(i*20); end; label1.caption:=inttostr(i); end; |
AW: fußballsation mathematik
Hier ist der Fehler:
Delphi-Quellcode:
Wenn s die Gesamtanzahl der Sitze ist, würde das bedeuten:
s:=s+(i*20);
Code:
Richtig wäre es aber so:
Die 1. Reihe hat 990 Sitze
Die 2. Reihe hat 20 Sitze Die 3. Reihe hat 40 Sitze Die 4. Reihe hat 60 Sitze usw...
Code:
Die 1. Reihe hat 1010+0 Sitze
Die 2. Reihe hat 1010+20 Sitze Die 3. Reihe hat 1010+40 Sitze Die 4. Reihe hat 1010+60 Sitze usw... |
AW: fußballsation mathematik
Zitat:
Konkret: Du nimmst nur die erste Reihe voll mit - aber von den anderen nimmst du nur die "extra Plätze" mit, und vernachlässigst die 990 anderen Plätze ;) Ich habe das mal schnell auf dem Papier gemacht, da kommen auch 52 Reihen raus - insofern kann ich das Lösungsbuch bestätigen. Rechenweg:
Code:
:arrow:
n = Gesamtanzahl der Plätze
x = Anzahl der Reihen n = 990*x + x*(x+1)/2 * 20 **= 990*x + 10*x^2 + 10*x n einsetzen: 0 = 10*x^2 + 1000*x - 79040 ![]() |
AW: fußballsation mathematik
Delphi-Quellcode:
Ich habe alles nochmal überdacht und bin mit diesem queltext zu folgendem ergebnis gekommen: 53.
var s,i,o:integer;
begin S:=1010; i:=0; O:=79041; while s<O do begin if i=0 then begin s:=1010 ; i:=i+1; end else begin s:=s+(20*i)+1010 ; i:=i+1; end; end; label1.caption:=inttostr(i); end; Nah dran aber nicht perfekt ich könnte i natürlich einfach um 1 vermindern bevor ich es ausgebe aber mein Queltext erscheint mir doch als logisch. wenn ich jedoch S ausgeben will dann müsste ja normalerweisse 79040 ausgegebn werden aber das tut er nicht. |
AW: fußballsation mathematik
var s,i,o:integer;
begin S:=1010; i:=0; O:=79040; ich habe den Fehler bei der Initialisierung der Obergrenze gefunden. Jedoch ist mir nicht ganz klar warum die Obergrenze nicht um 1 erhöht werden muss wenn man das in eine while schleife reinpackt. |
AW: fußballsation mathematik
Der einfachste Lösungsweg müsste doch so sein:
Delphi-Quellcode:
var Total, Reihe, Plaetze: integer;
begin Total := 79040; Plaetze := 1010; Reihe := 0; while Plaetze <= Total do begin inc(Reihe); dec(Total,Plaetze); inc(Plaetze,20); end; end; |
AW: fußballsation mathematik
Du hast als oberes Limit 79041 gesetzt. Da 52 Reihen aber nur 79040 Sitzplätze liefern, muss noch eine her. Dein Code gibt daher 53 aus ;)
Zum warum: Du prüfst immer, ob die Anzahl an Plätzen schon reicht. Wenn nicht, wird noch eine Reihe hinzugefügt. Am Ende kommen also immer soviele Reihen raus, dass die Anzahl der Plätze gleich oder größer als die gegebene Anzahl ist. Genau wie du es dir überlegt hast bevor du den Code geschrieben hast :P @DäddyH ( :mrgreen: ) das kommt auf die Definition von "einfach" an. Insbesondere ob die Definition die Erstellung eines Delphiprogramms zu Lösung einer quadratischen Gleichung beinhaltet :P |
AW: fußballsation mathematik
ich mache mir oft programablaufpläne bei solchen aufgaben die helfen einem wirklich sehr viel weiter so dass man im nachhinein nicht mehr soviel umändern muss im programmtext wenn man einmal richtig nachgedacht hat:)
|
AW: fußballsation mathematik
War das denn jetzt eine Mathe-Aufgabe oder eine Info-Aufgabe, um ein mathematisches Problem zu lösen?
|
AW: fußballsation mathematik
Ach ja stimmt.
Ich habe das ganze programm mal umgeschriebn zu einer repeat Schleife jetzt ist es mir schlüssiger.
Delphi-Quellcode:
repeat
if i=0 then begin s:=1010 ; i:=i+1; end else begin s:=s+(20*i)+1010 ; i:=i+1; end until s=o; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:51 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