Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Räuber-Beute-Simulation Hilfe, Klassen, Arrays (https://www.delphipraxis.net/191054-raeuber-beute-simulation-hilfe-klassen-arrays.html)

FrauNagel 3. Dez 2016 14:29

Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Code:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type
TReh=class
  private



  public
  TRehanzahl: array[1..5000,1..12,1..2]of integer;
  procedure FortpflanzungReh(Rehanzahl: array of integer);

end;
TWolf=class
private

public

TWolfanzahl: array[1..5000,1..12,1..2]of integer;
procedure FortpflanzungWolf(Wolfanzahl: array of integer);
procedure Fressen(Rehanzahl: array of integer);
end;


  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    ListBox1: TListBox;
    ListBox2: TListBox;
    ScrollBar1: TScrollBar;
    ScrollBar2: TScrollBar;
    procedure FormCreate(Sender: TObject);
    procedure ScrollBar1Change(Sender: TObject);
    procedure ScrollBar2Change(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;
  n:integer;
  //TRehanzahl: array[1..5000,1..12,1..2]of integer;
  Rehliste: file of integer;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
assignfile(Rehliste,'C:\Users\Thorsten\Desktop\Lazarus Projekte\Informatik Räuber Beute\Rehliste.dat')
end;

procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
  label4.caption:=IntToStr(scrollbar1.position);
end;

procedure TForm1.ScrollBar2Change(Sender: TObject);
begin
  label5.caption:=IntToStr(scrollbar2.position);
end;

procedure TReh.FortpflanzungReh(Rehanzahl:array of integer);
var
  Nachkommen: integer;
  Geschlecht: integer;
  i,k,l,m: integer;
  j: integer;
begin
  n:= filesize(Rehliste);
   for k:= 0 to n do begin
         for l:=3 to 12 do begin
                     TRehAnzahl[k,l,1]
end;
         end;

  //for := TRehanzahl[0..0,3..12,1] to TRehanzahl[n..n,3..12,1] do begin
         Nachkommen:= random(4);
               for j:= 1 to Nachkommen do begin
                Geschlecht := random(1)+1;
                  seek(Rehliste,filesize(Rehliste));
                  write(Rehliste,filepos(Rehliste),1,Geschlecht)
               end;
     //end;
end;

procedure TWolf.FortpflanzungWolf(Wolfanzahl:array of integer);
begin

  end;

procedure TWolf.Fressen(Rehanzahl:array of integer);
begin

end;

end.
Vor allem mit der Deklaration der Liste in Verbindung mit den Klassen habe ich Probleme. Die For Schleife bei Nachkommen funktionieren auch nicht.

Bitte Helft mir :thumb::thumb::thumb::thumb::thumb::thumb::thumb:

Daniel 3. Dez 2016 14:56

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Zitat:

Zitat von FrauNagel (Beitrag 1355275)
Vor allem mit der Deklaration der Liste in Verbindung mit den Klassen habe ich Probleme. Die For Schleife bei Nachkommen funktionieren auch nicht.

Moin und willkommen in der DP,

mit den Nachkommen hat man oft seine liebe Not - zuerst, wenn sie in die Pubertät kommen, später dann, wenn sie auf das Erbe schielen. ;-)
Was genau geht denn bei Dir nicht? Ein bisschen mehr musst Du uns schon geben. Angefangen von einer konkreten Zielsetzung bis hin zu etwas präziseren Fragen.

FrauNagel 3. Dez 2016 15:03

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Es soll eine Räuber-Beute Simulation werden in der es Rehe und Wölfe gibt. Bei zu vielen Rehen soll es aber weniger Nahrung geben, sodass wieder welche sterben.

Jedenfalls ist das ein Schulprojekt meiner Kinder und ich bin leider aufgrund meiner Berufstätigkeit zeitlich nicht in der Lage Ihnen ausreichend dabei zu helfen.
Vielleicht könntest du dich einmal damit auseinandersetzen und es weiter machen. Wäre dir super dankbar :-D

Liebe Grüße Frau Nagel

vagtler 3. Dez 2016 16:15

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
lol - Tja, Daniel, weisse Bescheid, machma... :mrgreen:

Daniel 3. Dez 2016 17:01

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Zitat:

Zitat von FrauNagel (Beitrag 1355277)
Jedenfalls ist das ein Schulprojekt meiner Kinder und ich bin leider aufgrund meiner Berufstätigkeit zeitlich nicht in der Lage Ihnen ausreichend dabei zu helfen.

Moin,

ich kann verstehen, dass man ab und an in blöde Situationen kommt, wenn die Lütten etwas brauchen und man selber sie aus verschiednen Gründen nicht unterstützen kann. Insbesondere ist klar, das man nicht von jedem Elternteil Programmier-Kenntnisse erwarten kann. Dennoch ist dieses Forum nicht für diese Form des "Rundum-Service" gedacht. Ich und auch andere bieten jedoch gern Unterstützung, wenn sich da jemand selbst durchbeißt.

p80286 3. Dez 2016 23:52

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Also, liebe FrauNagel
Das ist ungefähr so als hättest Du Mehl, Backpulver und Zucker und wolltest eine Torte backen. Nur ob es Sacher- oder Buttercreme werden soll??

Die paar Zeilen Sourcecode sind nicht sehr erhellend.
Ein paar zusätzliche Informationen, wären schon ganz gut.

Gruß
K-H

Delphi-Laie 4. Dez 2016 21:21

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Zitat:

Zitat von p80286 (Beitrag 1355285)
Die paar Zeilen Sourcecode sind nicht sehr erhellend.

Sie hätten auch übersichtlicher formatiert und vor allem die auskommentierten Zeilen, die keinen Programmablauf bewirken, der besseren Übersicht halber entfernt sein können. Aber naja, wir haben ja alle mal in den Foren (klein) angefangen.

FrauNagel, warum fragen Sie in diesem Forum und nicht Ihre Kinder? So klein können die doch nicht mehr sein, wenn solche Programmierung in deren Schule thematisiert wird.

Ich rege an, daß Sie ein komplettes Quelltext-Projekt hier veröffentlichen, also ohne die beim Compilieren zusätzlich anfallenden Dateien - sonst wird es arg groß, besonders bei Lazarus. Sie lassen die Quelltextdateien in eine Archivdatei packen (egal, ob komprimiert oder nicht, allzugroß wird das Projekt ja nicht sein) und laden das über die Schaltfläche "Anhänge verwalten" in dieses Forum.

Das kann jeder(mann), der helfen möchte, recht schnell selbst starten und dann sehen, was (richtiges oder falsches) passiert - oder auch nicht(s). Ich würde ja auch gern helfen, sehe aber mit diesem spärlichen Einstieg auch nicht so recht einen Ansatz(punkt) dafür.

FrauNagel 6. Dez 2016 15:46

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Liste der Anhänge anzeigen (Anzahl: 1)
Im Anhang ist nun das aktuelle Projekt.
Ich wage einen neuen Versuch es Ihnen näher zu bringen und benötige dringend Hilfe.

Es soll nämlich eine Räuber Beute Simulation werden in der einige Rehe pro Zyklus von Wölfen umgebracht werden. Die Rehe, sowie auch die Wölfe sollen sich alle zwölf zyklen vermehren (Nachkommen). Wenn es zu viele Rehe gibt soll die Vermehrungsrate angepasst werden weil ja weniger Futter da wäre. Nach einer gewissen Zeitspanne wie aktuell gedacht nach 12 Jahren bei den Rehen sollen sie an Altersschwäche sterben.
Problematisch ist allerdings das Rechnen mit den mehrdimensionalen Arrays bzw. das reinschreiben von Daten in die Liste. Lazarus bemängelt die aktuelle Deklaration der Liste bzw. Klasse, wenn jemand dort helfen könnte wären ich und meine Kinder Ihnen sehr dankbar.

freimatz 6. Dez 2016 16:21

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Zitat:

Zitat von FrauNagel (Beitrag 1355277)
Jedenfalls ist das ein Schulprojekt meiner Kinder und ich bin leider aufgrund meiner Berufstätigkeit zeitlich nicht in der Lage Ihnen ausreichend dabei zu helfen.
Vielleicht könntest du dich einmal damit auseinandersetzen und es weiter machen. Wäre dir super dankbar :-D

Und wie ist dann den Kindern geholfen? Was lernen die dann daraus?

jobo 6. Dez 2016 16:26

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Zitat:

Zitat von freimatz (Beitrag 1355510)
Und wie ist dann den Kindern geholfen? Was lernen die dann daraus?

Ich denke, man kann davon ausgehen, dass Sie es Ihren Kindern erklären wird. Wobei ich bei sowas auch immer irritiert bin, soll man sich über das Engagement der Eltern freuen oder am Schulsystem zweifeln.
Persönlich weiß ich jedenfalls, dass mein Informatiklehrer an der Schule ein echter Glücksgriff war im Vergleich zu dem aktuellen Standard.

Daniel 6. Dez 2016 18:58

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Lüüüd, wer sich berufen fühlt, möge hier gern weiterhelfen. Wenn ein Teilnehmer dieses Forum betritt und höflich nach Unterstützung fragt, kann man sie geben oder verwehren - beides okay. Aber eine Diskussion, ob den Kids damit dauerhaft geholfen ist, ist müßig und kostet alle Beteiligten nur Zeit & Nerven.

Delphi-Laie 6. Dez 2016 20:52

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
So, dann werde ich mal den Reigen echter Hilfe (was ich darunter verstehe) eröffnen.

1. Wie ich schon schrieb, das Compilat (die Exe-Datei) ist überflüssig, es hat das Archiv nur unnötig vergrößert. Naja, ist letztlich Admins Angelegenheit, wenn er dafür unendlich viel Platz hat.

2.
Delphi-Quellcode:
for k:= 0 to n do begin
         for l:=3 to 12 do begin
                     TRehAnzahl[k,l,1]
end;
         end;
hat leider keine echte Anweisung. "TRehAnzahl[k,l,1]" ist nur der Aufruf einer Feldvariablen, doch mit dieser geschieht nichts. Weder wird der Wert abgefragt (er wandert ja nirgendwo hin) noch wird dieser Feldvariablen ein Wert zugewiesen, z.B. TRehAnzahl[k,l,1]:=1.

Edit: Wie die Exe-Datei zustandegekommen ist, ist rätselhaft, denn jedenfalls mein Lazarus bleibt beim Compilieren an besagter anweisungsloser Zeile mit "Illegal expression" stecken.

Edit 2: TRehAnzahl war auskommentiert, ich nahm es wieder hinzu, also die Auskommentierung weg. Dennoch immer noch eine "Illegal expression". Erst nach einer Wertzuweisung an diese Feldvariable wurde das Projekt (mit einigen Hinweisen wegen überflüssiger Variablen) compiliert.

Klaus01 6. Dez 2016 21:12

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Guten Abend,

kann man nicht auf dieses 3 dimensionale Array verzichten, wenn die Tiere in Klassen gepackt werden.

Delphi-Quellcode:
type
  TGender = (female, male);

  TReh = class(TObject)
    private
      fGender: TGender;
      fAge: Byte;
    public
      property gender: TGender read fGender write fGender; // weil nur weibliche Rehe Nachwuchs bekommen können
      property age: Byte read fAge write fAge;             // ab welchem Alter ist ein Reh gebährfähig?
  end;

  TWolf = class(TObject)
    private
      fAge: Byte;
    public
      property age: Byte read fAge write fAge;
  end;
Dann sehe eine Rehliste so aus:
Delphi-Quellcode:
Rehliste = Array[0..maxRehPopulation] of TReh;
Wenn man will kann man anstelle des Array auch eine ObjectList oder eine generische ObjectList nehmen.
Damit wird die Verwaltung der Klassen ein wenig einfacher.

Bei den Wölfen wäre eine Rudelbildung noch interessant, denn ein Rudel jagt immer zusammen.
Es reißt also nicht jeder Wolf ein Reh.

Grüße
Klaus

p80286 6. Dez 2016 22:38

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Zitat:

Zitat von Klaus01 (Beitrag 1355529)
Bei den Wölfen wäre eine Rudelbildung noch interessant, denn ein Rudel jagt immer zusammen.
Es reißt also nicht jeder Wolf ein Reh.

Ich glaube damit gehst Du zu weit, ich vermute hier geht es schlicht um statistische Werte.
Wobei mir hier sehr viele Angaben fehlen
a) wieviel Reh-Futter steht zur Verfügung.
b) wie hoch ist die Reproduktionsrate der Rehe und der Wölfe.
c) wie hoch ist die Mortalitätsrate der Wölfe und Rehe durch Futtermangel
d) wie ist Futtermangel definiert
e) wie hoch ist die Mortalitätsrate der Rehe durch Wölfe

Ein weiterer Punkt wäre z.B. das für die Fortpflanzung natürlich geschlechtsreife Tiere benötigt werden, da den Wölfen aber vor allem Jungtiere zum Opfer fallen werden, kann es sein, daß die Rehe u.U. an Altersschwäche aussterben.

Gruß
K-H

Delphi-Laie 6. Dez 2016 22:49

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Für die letzten beiden: Eure Hilfe in allen Ehren, aber schießt Ihr nicht ein wenig über das Ziel hinaus? Der eine in bezug auf das Programmierniveau, der andere bezüglich der Aufgabenstellung? Es geht darum, daß Programmieranfänger eine überschaubare Aufgabenstellung erstmal grundsätzlich lösen müssen!

p80286 6. Dez 2016 22:54

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1355539)
Für die letzten beiden: Eure Hilfe in allen Ehren, aber schießt Ihr nicht ein wenig über das Ziel hinaus? Der eine in bezug auf das Programmierniveau, der andere bezüglich der Aufgabenstellung? Es geht darum, daß Programmieranfänger eine überschaubare Aufgabenstellung erstmal grundsätzlich lösen müssen!

Und was ist die konkrete Aufgabenstellung?

Gruß
K-H

Delphi-Laie 6. Dez 2016 23:01

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Zitat:

Zitat von p80286 (Beitrag 1355541)
Und was ist die konkrete Aufgabenstellung?

Zitat Frau Nagel: "Es soll nämlich eine Räuber Beute Simulation werden"

Vermutlich demnach: Erstellen Sie eine....

nahpets 6. Dez 2016 23:11

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Die Anforderung steht im Rar-Archiv von oben im Verzeichnis Plan und dort in der OpenOffice-Datei unbenannt1.odt.

Wer kein OpenOffice hat, bennen die Datei um in unbenannt1.zip und entnehmen dem Zip-Archiv die Datei content.xml.

Und damit es nicht zuviel wird:
Zitat:

Zitat von unbenannt1.odt
Räuber-Beute-Beziehung

Reh
Eingebbare Startgröße der Population
Zeitraum (1 Jahr)
0-3 Kitze pro Jahr (2 Tiere)
(Anzahl Rehe/2 *Random(Kitze)) ← Findet im Mai statt.


Wolf
Zeitraum (1 Jahr)
0-6 Welpen pro Jahr (2 Tiere)
(Anzahl Rehe/2 *Random(Welpen)) ← Findet im Mai statt.


Verhältnis (Anfang): Reh/4 = Wolf

Rehe sterben nur durch wolf, Wolf stirbt am Alter/Unfälle.
Wölfe töten random(AnzahlRehe)/4


jobo 7. Dez 2016 08:28

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Noch ein kleiner Hinweis am Rande.
Wenn man etwas "Gefühl" für die Aufgabenstellung bekommen möchte, man findet dazu einige konkrete Aufgaben im Internet.
Nicht unbedingt identisch, aber Fuchs und Hase bspw. tauchen auf und einiges andere interessante.

p80286 10. Dez 2016 09:18

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Für alle, die mit jobos Hinweis nicht so gut klar gekommen sind:
http://www.ralphhenne.de/informatik/...5HaseFuchs.pdf
http://www.ralphhenne.de/informatik/...greenfoot.html

Ich für meinen Teil wäre nie auf die Idee gekommen für die Aufgabenstellung ein Array einzusetzen. Da hätte es eine einfache while/until Schleife getan.

Gruß
K-H

Luckie 10. Dez 2016 12:03

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Was für Programmiertechniken (Verzweigungen, Schleifen, Datenstrukturen, usw.) sind denn schon aus dem Unterricht bekannt?

jobo 10. Dez 2016 12:40

AW: Räuber-Beute-Simulation Hilfe, Klassen, Arrays
 
Zitat:

Zitat von p80286 (Beitrag 1355820)
Ich für meinen Teil wäre nie auf die Idee gekommen für die Aufgabenstellung ein Array einzusetzen. Da hätte es eine einfache while/until Schleife getan.

Zitat:

Zitat von Luckie (Beitrag 1355831)
Was für Programmiertechniken (Verzweigungen, Schleifen, Datenstrukturen, usw.) sind denn schon aus dem Unterricht bekannt?

Das -finde ich- ist das klassische Problem bei dieser Art Hilfe. Wenn man den Unterrichtsstoff nicht kennt, kann man eigentlich schlecht raten, mit welchen Mitteln eine Aufgabe umgesetzt werden soll.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:29 Uhr.

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