![]() |
Wo höchstes Wachstum, wo geringstes?
Guten Morgen!
Ich möchte eine kleine Simulation schreiben, bei der die Population von Hasen in einem bestimmten Testgebiet ausgewertet werden soll. Also: Ich habe hier eine Tabelle vor mir (aus dem Bio-Heft. :mrgreen: ): Jahr - Anzahl 1980 - 200 1981 - 218 1982 - 220 1983 - 197 1984 - 199 1985 - 207 1986 - 183 1987 - 176 1988 - 176 1989 - 191 1990 - 210 1991 - 204 Jetzt habe ist eine Art Diagramm in eine PaintBox bekommen. :D Das ging ja noch, aber: Wie bekomme ich die Jahre mit dem größten Populationszuwachs und die größte Populationsabnahme heraus? Bsp: größter Populationszuwachs: von 1988-1990 größte Populationsabnahme: von 1982-1987 In dem Diagramm kann ich das leicht ablesen, aber rechnen.. :gruebel: |
Re: Wo höchstes Wachstum, wo geringstes?
Neue Spalte dazu (z.B. Delta oder Wachstum o.ä) für weitere Auswetungen,
delta = 0 tabelle[0,3] = 0 for x := 1 to 11 do Tabelle[x,3] := Tabelle[x,2] - Tabelle[x-1,2] min = 9999999 max = 0 L = gewünschte Umtergrenze H = gewünschte Obergrenze L und H suchen (auch trivial) for x := 0 to 11 do begin if Tabelle[x,1] = (gesuchte Untergrenze) then L := x if Tabelle[x,1] = (gesuchte Obergrenze) then H := x end for x := L to H do begin if max < Tabelle[x,3] then max := Tabelle[x,3] if min > Tabelle[x,3] then min := Tabelle[x,3] end Jahr Anzahl Delta 1980 200 0 1981 218 18 1982 220 2 1983 197 -23 1984 199 2 1985 207 8 1986 183 -24 1987 176 -7 1988 176 0 1989 191 15 1990 210 19 1991 204 -6 voila! |
Re: Wo höchstes Wachstum, wo geringstes?
Guten Morgen Billa!
Vielen Dank. Nur kenne ich mich mit Tabellen recht wenig bzw. gar nicht aus. Wo muss das alles denn hin? Ich habe das Datum in ListBox1 und die Anzahl in ListBox2. Wäre echt nett von dir, wenn du mir das auch noch sagen würdest. ;) Aber das gibt mir ja nur die Änderung zum Vorjahr, ich möchte aber die ganze Zeitspanne haben. :? |
Re: Wo höchstes Wachstum, wo geringstes?
Hi Matze,
Listboxen sind eher für das Frontend geeignet, für die Statistik ziehe ich Arrays vor: Array[0..11,1..3] of double - inhalte Listbox1 in Zahlen konvertieren und in array[x,1] kopieren - inhalte Listbox2 dito array[x,2] - dann wie beschrieben Man kann natürlich auch direkt auf den Listboxen arbeiten (sie haben schließlich Indizes, und mehr brauchen wir nicht), dann muss aber jedesmal konvertiert werden (Zeichenkette nach Zahl usw.). Außerdem kann man mit dem beschrieben Verfahren durch Wiederholung der Schritte 2 und 3 weitere statistische Fragestellungen beantworten (Durchschnitt o.ä.). Arrays sind recht gut in der Sprachreferenz Object Pascal (liegt bei D6 Enterprise bei) beschrieben. Gruß und viel Spass Billa :freak: |
Re: Wo höchstes Wachstum, wo geringstes?
Aber das gibt mir ja nur die Änderung zum Vorjahr, ich möchte aber die ganze Zeitspanne haben. :?
Weißt du auch, wie ich so etwas realisiere? Aber danke schonmal. |
Re: Wo höchstes Wachstum, wo geringstes?
Mein Beispiel erstellt natürlich zuerst die Änderungen zum Vorjahr, denn aus diesen Werten sollst Du ja wohl ein Maximum bzw ein Minimum suchen!?
X ist nicht der Index für ein beliebiges Jahr, sondern eine Schleifenvariable! Damit wird der gesamte Zeitraum zwischen L und H durchsucht. Ich denke, das ist genau was Du suchst. |
Re: Wo höchstes Wachstum, wo geringstes?
Gut, die Änderungen hab ich jetzt. *freu*
Und wie mache ich das, dass ich ein solches Ergebnis bekomme?: größter Populationszuwachs: von 1988-1990 größte Populationsabnahme: von 1982-1987 |
Re: Wo höchstes Wachstum, wo geringstes?
Kann ich bei
Delphi-Quellcode:
auch eines anstatt Double mit Date versehen?
Array[0..11,1..3] of double;
Dass ich in diesem array das Datum, die Population und die Änderung speichern kann? |
Re: Wo höchstes Wachstum, wo geringstes?
1. Fall L = 8, H = 10
Schleife 3 durchlaufen lassen, Max ist dann Deine Antwort (zahlenmäßig grösstes Wachstum) 2. Fall L = 2, H = 6 Schleife 3 nochmal, Min ist die gesuchte Zahl P.S. wenn Du statt dem Wachstum lieber das JAHR des größten Wachstums bzw der größten Abnahme wissen willst, musst Du die Schleife 3 erweitern for x := L to H do begin if max < Tabelle[x,3] then begin max := Tabelle[x,3] merker1 := x end if min > Tabelle[x,3] then begin merker2 := x min := Tabelle[x,3] end end Das JAHR des größten Wachstums ist dann Tabelle[merker1,1] Das JAHR der größten Abnahme ist dann Tabelle[merker1,1] Falls Du noch Probleme hast, poste einfach Deinen Source. |
Re: Wo höchstes Wachstum, wo geringstes?
Danke, ich teste das jetzt mal. :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 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-2025 by Thomas Breitkreuz