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. |
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:
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.
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; |
Re: Mittelwert von Myarray
Und warum macht ihr net einfach an meinem formatierten Quellcode weiter? :gruebel: :gruebel: :gruebel:
|
Re: Mittelwert von Myarray
Weil da auch schon der Fehler drinnen war :P
Ne, kleiner Scherz: hab ich nicht gesehen, sorry :oops: |
Re: Mittelwert von Myarray
Zitat:
|
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: |
Re: Mittelwert von Myarray
Entweder Vertikal durchs Array oder Horizontal durch und dann gleiches Spiel: Addieren dann Teilen!
|
Re: Mittelwert von Myarray
und wie geh ich vertikal durchs array? :gruebel: ;)
|
Re: Mittelwert von Myarray
Hallo,
Delphi-Quellcode:
die Summe nicht durch 4 dividieren, sondern durch: High(Myarray)-Low(Myarray). Aber vergiss die Klammer um diesen Ausdruck nicht.
i := Low(Myarray) to High(Myarray) do
summe := Summe + Myarray[i]; mitte := summe / 4; Noch ne Bemerkung: Jetzt haben wir dir alles gelöst ohne dass du nachdenken musstest. Ist das nicht schön? Grüsse Rainer |
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. |
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