Entwickler-Ecke

Sonstiges (Delphi) - Zahlen in Stringgrid addieren klappt nicht (for-Schleife)


ridom - Di 21.09.10 18:52
Titel: Zahlen in Stringgrid addieren klappt nicht (for-Schleife)
Also es geht um folgendes wir haben in der Schule diese aufgabe bekommen die ich unten als bild gezeigt habe

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Button1Click(Sender: TObject);
var i,j,k, spaltens, spaltenm, zeilens:integer;
begin
randomize;
  for i := 1 to 10 do
    begin
      for j := 1 to 10 do
        begin
          rnd[i,j]:= random(99)+1;
          Stringgrid1.Cells[i,j]:=inttostr(rnd[i,j]);
        end;
    end;

  for I := 1 to 10 do
    begin
      spaltens:= spaltens + rnd[i,1];
      stringgrid1.Cells[i,11]:= inttostr(spaltens);
    end;

Das Problem ist leider das ich nicht aus der Spalte 1 alle zahlen zusammen rechnen kann es kommt eine riesige zahl dabei raus und nicht das gewünschte ergebnis

Moderiert von user profile iconMartok: Delphi-Tags gesetzt.
Moderiert von user profile iconNarses: Titel geändert, war: "Delphi Schulaufgaben"


Jakob_Ullmann - Di 21.09.10 18:56

Das stringgrid1... und das end; solltest du vertauschen. Es ist besser, erst zu rechnen und dann auszugeben und nicht die Ausgabe ständig zu erneuern, wenn der User nicht gerade zusehen soll (was hier offenbar nicht der Fall ist).

Zu deinem Problem: spaltens muss initialisiert werden. Also spaltens := 0.

Und Randomize dient nur dazu, den Zufallsgenerator auf das aktuelle Datum / aktuelle Zeit zu initialisieren. Alle anderen Werte sind von allein zufällig (wenn du es gar nicht machst, hast du Zufallswerte, aber bei jedem Programmstart die selben). Mit anderen Worten: Das Randomize; sollte nur einmal aufgerufen werden, und zwar am Anfang des Programms.


ridom - Di 21.09.10 19:14

Nun kommt eine zahl raus die realistisch wirkt aber sie is immernoch falsch


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
type feldtyp = array [1..10,1..10of integer;
var feld, rnd: feldtyp;

procedure TForm1.Button1Click(Sender: TObject);
var i,j,k, spaltens, spaltenm, zeilens:integer;
begin
randomize;
spaltens:=0;
spaltenm:=0;
  for j := 1 to 10 do
    begin
      for i := 1 to 10 do
        begin
          rnd[i,j]:= random(99)+1;
          Stringgrid1.Cells[i,j]:=inttostr(rnd[i,j]);
        end;
    end;

  for I := 1 to 10 do
    begin
      spaltens:= spaltens + rnd[i,1];

    end;
    stringgrid1.Cells[1,11]:= inttostr(spaltens);


Georg08 - Di 21.09.10 19:22

Ich weiß, dass es nicht soo viel mit dem thema zu tun hat, aber bitte fpge die "[delphi]" tags hinzu... das macht alles etwas übersichtlicher besonders wegen der formatierung...

Danke


Jakob_Ullmann - Di 21.09.10 19:25

Du weißt, dass erst die x-, dann die y-Koordinate kommt?


ridom - Di 21.09.10 19:28

xD ach man ok dankeschön doofer fehler den ich immer wieder gerne mache jetzt klappts