Delphi-PRAXiS

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 13: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 13: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 13: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 13: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 14: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 14: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 14: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 14: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 14: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 14: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;

xxsasch4xx 9. Dez 2010 14:17

AW: fußballsation mathematik
 
ich hab bisschen in meinem Mathebuch rumgeblättert und habe im Kapitel "Folgen und Reihen" viele solcher aufgaben gefunden die man leicht mit Computern berechnen kann ohne dass man wissen muss wie man Zahlengesetze aufstellt. Mit Computern ist alles viel einfacher. Tolle Erfindung :wink:

Luckie 9. Dez 2010 14:20

AW: fußballsation mathematik
 
Zitat:

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

Ich würde dich dringend bitte etwas auf korrekte Rechtschreibung und Zeichensetzung zu achten. Selbst in den zwei Worten des Beitragstitels ist ein Rechtschreibfehler, der ihn fast unleserlich macht. Es ist wohl kaum zu viel verlangt, wann man sich beim Erstellen eines Beitrages diesbezüglich etwas Mühe gibt. Schließlich erwartest du dass wir uns mit deinem Beitrag auseinandersetzen und wenn man so einen hingeschluderten Beitrag liest, vergeht einem die Lust zu helfen. Und für mich persönlich ist korrekte Rechtschreibung eine Form der Höflichkeit im Internet, wo man hauptsächlich über Texte kommuniziert.

jfheins 9. Dez 2010 14:38

AW: fußballsation mathematik
 
Zitat:

Zitat von xxsasch4xx (Beitrag 1067370)
ich hab bisschen in meinem Mathebuch rumgeblättert und habe im Kapitel "Folgen und Reihen" viele solcher aufgaben gefunden die man leicht mit Computern berechnen kann ohne dass man wissen muss wie man Zahlengesetze aufstellt. Mit Computern ist alles viel einfacher. Tolle Erfindung :wink:

Da fällt mir doch wieder das Zitat ein "Computer lösen Probleme, die wir ohne sie nicht hätten" :mrgreen:

Btw.: WolframAlpha ist in sowas echt gut - du kannst auch direkt Reihen eingeben: http://www.wolframalpha.com/input/?i...0i%2C+i%3D1..x

Luckie 9. Dez 2010 14:48

AW: fußballsation mathematik
 
Zitat:

Zitat von xxsasch4xx (Beitrag 1067370)
mit Computern berechnen kann ohne dass man wissen muss wie man Zahlengesetze aufstellt.

bei der Einstellung fehlen einem fast die Worte. Leicht geänderte Aufgabenstellung und das war es dann für dich, weil du das Prinzip nicht verstanden hast, bzw. es gar nicht wolltest. Und du gehörst dann wahrscheinlich auch zu der Sorte Menschen, die dem Taschenrechner jedes Ergebnis glauben auch, wenn es noch so unmöglich ist. Im Bauingenieurstudium hatte ich einen Mechanikprofessor der alten Schule, der hatte noch mit Rechenschieber Statiken gerechnet. Wenn wir dem ein Ergebnis zugerufen haben, wusste er sofort, ob das Ergebnis richtig oder falsch war, weil er im Kopf schon aus Routine eine Überschlagsrechnung gemacht hatte. Und wie oft wurde ihm ein falsches Ergebnis zugerufen, weil sich jemand vertippt hatte und das Ergebnis geglaubt hatte. Seit dem zweifele ich alle Daten erst mal an, die mir von einer Maschine geliefert werden.

Rociel 9. Dez 2010 18:15

AW: fußballsation mathematik
 
Also dem mathematischem Verständnis halber würde ich eine Mischung zwischem ersten Post und einem repeat bevorzugen, nur dass es halt nicht

Delphi-Quellcode:
s:=s+(i*20);
sondern
Delphi-Quellcode:
s:=2*s+(i*20);
//bzw. anschaulicher
s:=s+(s+(i*20));
sein muss.

Das hat aus methodischer Sicht Vorteile, weil eine repeat-Schleife dem realen Problem am besten entspricht, denn was ist, wenn das Stadion nur eine Reihe hat? Dann hat es 0 Reihen, weil garnicht gezählt wird. Sprich mit einer repeat Schleife kann man das reale Problem einfacher (kein if nötig) mathematisch modellieren.

Delphi-Quellcode:
s:=990;
i:=0;
repeat
  i:=i+1;
  s:=s+(i*20);
until s>=79041
Die Lösung von DeddyH ist dazu - von der besseren Anpassung an ähnliche Problemstellungen - nahezu äquivalent(Bis auf das mit den 0 Reihen)

Das Modell mit einer while Schleife anzugehen ist methodisch also eher die zweite Wahl, aber wie das beim Programmieren immer so ist, jedem nach seiner Fasson ;)

Also hast du 2 Fehler gemacht, einmal die Plätze (s) falsch abgezählt und dann, dass es 0 Reihen gibt, obwohl es doch eigentlich mind. eine geben muss wenn mind. 1 Sitz ex.

Ersteres ist natürlich gravierend und würde Punktabzüge geben oder heißen Aufgabe nicht erfüllt (je nach Fach und AB) und zweiteres ist Ansichtssache. Je nachdem wie sehr dein Lehrer auf eine ordentliche Modellierung der Realität wert legt. Umgehen kann man das natürlich, indem sich rechtfertigt, dass ein Stadion mit nur einer Reihe eher seltener als Stadion bezeichnet wird.
Also entweder richtig proggen oder labern, beides zeigt, dass man sich dann mit den Problem mit seinen Ecken und Kanten auseinander gesetzt hat.

Davon abgesehen würde ich dir empfehlen (auch wenn Delphi/Pascal nicht casesensitive ist) Variablen immer gleich zu schreiben. Das hat Vorteile, wenn man sich mal mit anderen Sprachen beschäftigen will, die auf Groß- und Kleinschreibung achten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:33 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