Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mittelwert von Myarray (https://www.delphipraxis.net/120409-mittelwert-von-myarray.html)

Bericender 10. Sep 2008 23:34

Re: Mittelwert von Myarray
 
Habs mal mit Comments versehen
Code:
unit uZufall;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;

type
  TMyarray = Array [1..2,1..4] Of Integer;
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Edit3: TEdit;
    StringGrid1: TStringGrid;
    Memo1: TMemo;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit4: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private-Deklarationen } 
  public
    { Public-Deklarationen } 
  end;

var
  Form1: TForm1;
  MyArray: TMyarray;

implementation

{$R *.dfm} 

procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.Caption := 'neu';
Button2.Caption := 'memo';
Button3.Caption := 'grid';
Button4.Caption := 'edit';
Button5.Caption := 'MWZeile';
Button6.Caption := 'MWKomplett';
Button7.Caption := 'close';
StringGrid1.ColCount := 4;
StringGrid1.RowCount := 2;
Memo1.Clear;
Edit1.Visible := false;
Edit2.Visible := false;
Edit3.Visible := false;
Edit4.Visible := false;
Stringgrid1.Visible :=false;
Memo1.Visible := false;
end;

procedure fuellen;
var z,sp:integer;
begin
randomize;
for z:=1 to 4 do
for sp:=1 to high(Myarray)do
  myarray[sp,z]:=random(101)
end;


procedure TForm1.Button1Click(Sender: TObject);
//fuellt ein Array mit Zufallszahlen
begin
fuellen;
end;

procedure TForm1.Button2Click(Sender: TObject);
//schreibt den Inhalt des Arrays in ein memo
var a1,a2 : string; sp : integer;
begin
memo1.Visible := true;
a1 := '';
for sp:=1 to 4 do
a1 := a1+ ' '+inttostr(myarray[1,sp]);
memo1.lines.add (a1);

a2 := '';
for sp:=1 to 4 do
a2 := a2+ ' '+inttostr(myarray[2,sp]);
memo1.lines.add (a2);
end;

procedure TForm1.Button3Click(Sender: TObject);
//schreibt den Inhalt des Arrays in ein Stringgrid
var row,col : integer;
begin
stringgrid1.Visible:= true;
for row:= 0 to 2 do
for col:= 0 to 4 do
stringgrid1.cells[col,row]:=inttostr(myarray[row+1,col+1])
end;

procedure TForm1.Button4Click(Sender: Tobject);
//schreibt den Inhalt des Skripts in Edit 1 + 3
var a1,a2 : string; sp : integer;
begin
edit3.Visible:=true;
Edit1.Visible:= true;
a1 := '';
for sp:=1 to 4 do
a1 := a1+ ' '+inttostr(myarray[1,sp]);
edit3.text := a1;

a2:= '';
for sp:=1 to 4 do
a2 := a2+ ' '+inttostr(myarray[2,sp]);
edit1.text := a2;
end;

procedure TForm1.Button6Click(Sender: TObject);
//soll den Mittelwert des Arrays in Edit 2 ausgeben
var
i,j,summe,anzahl :integer; mitte:real;
begin
edit2.Visible:=true;
  summe := 0;
  for i := Low(Myarray) to High(Myarray) do
  for j := Low(MyArray[i]) to High(MyArray[i]) do
  begin
       Summe := Summe + MyArray[i,j];
       inc(anzahl);
  end;
mitte:= Summe/ anzahl;
edit2.Text:= floattostr(mitte);
end;


procedure TForm1.Button7Click(Sender: TObject);
//beendet das Programm
begin
close
end;

end.

littleDave 10. Sep 2008 23:44

Re: Mittelwert von Myarray
 
Ich bin mal so frei und formatier dir das ganze mal etwas. Dann kann man es viel besser lesen :zwinker:

Außerdem hast du die Variable Anzahl nicht mit 0 initialisiert. Somit ist der Anfangswert von Anzahl nicht vorherzusehen - halt gerade das, was im Speicher steht - und dass kann alles mögliche sein.

Daher: Variablen initialisieren, so wie du es bei Summe gemacht hast.
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
var i, j         : integer; // Schleifenvariablen
    Summe, Anzahl : integer;
    Mitte        : real;   // der fertige Mittelwert
begin
  // Initialisierung
  Summe := 0; // das hattest du
  Anzahl := 0; // das ABER NICHT <----------------
  Edit2.Visible := True;

  // Summe & Anzahl berechnen
  for i := Low(MyArray) to High(MyArray) do
    for j := Low(MyArray[i]) to High(MyArray[i]) do
    begin
      Summe := Summe + MyArray[i, j];
      inc(Anzahl);
    end;

  // Mittelwert berechnen
  Mitte := Summe / Anzahl;
 
  // Ergebnis ausgeben
  Edit2.Text := FloatToStr(Mitte);
end;
PS: zwar ist der Ansatz der Kommentare schon mal nicht all zu schlecht, jedoch wird man aus denen nicht viel schlaucher. Unterteile deinen Quelltext in Blöcke und kommentiere jeden Block, was er bewirken soll.

Mackhack 10. Sep 2008 23:49

Re: Mittelwert von Myarray
 
Und warum macht ihr net einfach an meinem formatierten Quellcode weiter? :gruebel: :gruebel: :gruebel:

littleDave 10. Sep 2008 23:52

Re: Mittelwert von Myarray
 
Weil da auch schon der Fehler drinnen war :P

Ne, kleiner Scherz: hab ich nicht gesehen, sorry :oops:

Mackhack 10. Sep 2008 23:53

Re: Mittelwert von Myarray
 
Zitat:

Zitat von littleDave
Weil da auch schon der Fehler drinnen war :P

Ne, kleiner Scherz: hab ich nicht gesehen, sorry :oops:

OK, weil sein Muell i immer noch unleserlich!

Bericender 11. Sep 2008 00:01

Re: Mittelwert von Myarray
 
*Asche übers Haupt schütt*

Jetz muss ich nur noch rauskriegen wie ich den Mittelwert für einzelne Zellen des Arrays berechnen kann :angel2:

Mackhack 11. Sep 2008 00:03

Re: Mittelwert von Myarray
 
Entweder Vertikal durchs Array oder Horizontal durch und dann gleiches Spiel: Addieren dann Teilen!

Bericender 11. Sep 2008 00:05

Re: Mittelwert von Myarray
 
und wie geh ich vertikal durchs array? :gruebel: ;)

WS1976 11. Sep 2008 05:37

Re: Mittelwert von Myarray
 
Hallo,

Delphi-Quellcode:
i := Low(Myarray) to High(Myarray) do
summe := Summe + Myarray[i];
mitte := summe / 4;
die Summe nicht durch 4 dividieren, sondern durch: High(Myarray)-Low(Myarray). Aber vergiss die Klammer um diesen Ausdruck nicht.

Noch ne Bemerkung:
Jetzt haben wir dir alles gelöst ohne dass du nachdenken musstest.
Ist das nicht schön?

Grüsse
Rainer

Bericender 11. Sep 2008 06:26

Re: Mittelwert von Myarray
 
irgendwie komm ich mir grad total blöd vor, weil ich nichts selber gemacht hab. Aber irgendwie hab ich das einfach nicht hinbekommen (trotz mehr als 8 Stunden die ich davor gesessen hab). Den irgendwie hatten wir das im Informatik Unterricht noch nie behandelt und haben Arrays selbst auch nur 10 Minuten behandelt. ;)

In dem Zugedanke an alle die mir geholfen haben und jetz weiß ich wenigstens für die folgenden Male wie das ganze funktioniert


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 Uhr.
Seite 4 von 5   « Erste     234 5      

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