Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   fußballsation mathematik (https://www.delphipraxis.net/156640-fussballsation-mathematik.html)

xxsasch4xx 9. Dez 2010 12:21

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;

Namenloser 9. Dez 2010 12:38

AW: fußballsation mathematik
 
Hier ist der Fehler:
Delphi-Quellcode:
s:=s+(i*20);
Wenn s die Gesamtanzahl der Sitze ist, würde das bedeuten:
Code:
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...
Richtig wäre es aber so:
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...

jfheins 9. Dez 2010 12:40

AW: fußballsation mathematik
 
Zitat:

Zitat von xxsasch4xx (Beitrag 1067340)
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

Dann rechnest du was falsches ;)
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:
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
:arrow: http://www.wolframalpha.com/input/?i...1000*x+-+79040

xxsasch4xx 9. Dez 2010 12:53

AW: fußballsation mathematik
 
Delphi-Quellcode:
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;
Ich habe alles nochmal überdacht und bin mit diesem queltext zu folgendem ergebnis gekommen: 53.
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.

xxsasch4xx 9. Dez 2010 13:00

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.

DeddyH 9. Dez 2010 13:03

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;

jfheins 9. Dez 2010 13:04

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

xxsasch4xx 9. Dez 2010 13:09

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

DeddyH 9. Dez 2010 13:11

AW: fußballsation mathematik
 
War das denn jetzt eine Mathe-Aufgabe oder eine Info-Aufgabe, um ein mathematisches Problem zu lösen?

xxsasch4xx 9. Dez 2010 13:12

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 07:23 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