| Autor |
Beitrag |
Lauzijungs
Hält's aus hier
Beiträge: 13
|
Verfasst: Mi 14.06.06 19:23
Hab grad ein Problem mit einer Multiplikations-Aufgabe:
Wir sollen in einer Tabelle (StringGrid) Zahlen multiplizieren.
Dabei sollen am Rand, also sowohl am oberen als auch am linken Rand der Tabelle die Zahlen 1 bis 10 stehen.
Also in dieser Form:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 |
Diese Aufgabe sollen wir mit dem Datentyp array lösen, könnte mir da jemand helfen, ich hab zur Zeit gar keinen Plan
Wir hatten sowas ähnliches schonmal mit der Addition, da scheint mein Programm aber noch etwas fehlerhaft zu sein:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| type tfeld=array[1..10,1..10] of integer; . . . procedure... VAR feld:tfeld; BEGIN for i:=1 to 5 DO for j:=1 to 5 DO BEGIN feld[i,j]:=i+j; END; stringgrid1.cells[i,j]:=inttostr (feld[i,j]); END; |
Scheint aber jetzt nur die Prozedur für die Addition an sich zu sein, wie ich die Zahlen am Rand darstelle, weiß ich momentan auch nicht mehr.
Es wäre schön, wenn mir hier jemand helfen könnte!
Moderiert von Christian S.: Delphi-Tags hinzugefügt
Moderiert von Christian S.: Code-Tags hinzugefügt
|
|
SmileySN
      
Beiträge: 297
WinXP, Win7
Delphi 2010 Professional
|
Verfasst: Mi 14.06.06 19:46
Ich würde so anfangen, dass ich mir vorstelle Du hast ein Stringgrid mit 11 Zeilen
Die erste Zeile beschreibst Du mit
Delphi-Quelltext 1: 2: 3: 4: 5:
| For i:= 1 to 10 Do Stringgrid1.cells[1,i]:=IntToStr(i)+' ';
For i:= 1 to 10 Do Stringgrid1.cells[i+1,1]:=IntToStr(i); |
Dann muss das Stringgrid nur noch wie eine Tabelle dargestellt werden
Wenn es sein muss kann man auch vorher erst noch die beiden Arrays auf die gleiche Weise füllen und dann dem Stringrid zuweisen.
|
|
Lauzijungs 
Hält's aus hier
Beiträge: 13
|
Verfasst: Mi 14.06.06 20:51
Hm, da wird bei mir der folgende Fehler angezeigt:
FOR-Schleifenvariable 'i' kann nach Durchlauf undefiniert sein.
Woran liegt das?
Folgende Prozedur hab ich grade hier zu stehen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure addi(f:tfeld);
var i,j:integer; begin For i:= 1 to 10 Do Form1.Stringgrid1.cells[1,i]:=IntToStr(i)+' ';
For i:= 1 to 10 Do Form1.Stringgrid1.cells[i+1,1]:=IntToStr(i);
form1.stringgrid1.cells[i,j]:=inttostr(f[i,j]); end; |
Moderiert von Christian S.: Delphi-Tags hinzugefügt
|
|
SmileySN
      
Beiträge: 297
WinXP, Win7
Delphi 2010 Professional
|
Verfasst: Mi 14.06.06 21:44
Delphi-Quelltext 1:
| form1.stringgrid1.cells[i,j]:=inttostr(f[i,j]); |
Hier musst Du auch noch eine bzw. zwei Schleifen drüber setzen sonst gibst Du ja nur eine einzelne Zelle aus.
Delphi-Quelltext 1: 2: 3:
| For i:= 1 To 10 Do For j := 1 To 10 Do form1.stringgrid1.cells[i,j]:=inttostr(f[i,j]); |
Die Variable j wurde von Dir nirgends gesetzt, aber bei ..cell[i,j].. dann benutzt.
Stell Dir eine Excel-Tabelle vor, wenn Du da nur eine Zelle beschreibst, dann sieht die Matrix nicht ganz vollständig aus.
|
|
SmileySN
      
Beiträge: 297
WinXP, Win7
Delphi 2010 Professional
|
Verfasst: Mi 14.06.06 21:49
Übrigends habe ich in meinem Beispiel das Stringgrid schon direkt beschrieben.
Wenn Du es mit einem Array machen sollst, dann beschreibe oben das Array f und weise dann unten dieses dem Stringrid zu.
|
|
Lauzijungs 
Hält's aus hier
Beiträge: 13
|
Verfasst: Do 15.06.06 19:59
So das mit dem Multiplizieren hat nun mittlerweile funktioniert, danke für die Hilfe!
Jetzt soll aber in der 11. Spalte die jeweiligen Summen der einzelnen Zeilen angezeigt werden, das muss auch irgendwie wieder mit array und Zählschleifen glaub gehen, weiß ich aber wieder nicht richtig wie genau.
Also das soll dann so aussehen:
1 2 3 4 5 6 7 8 9 10
1 1 2 3 4 5 6 7 8 9 10 55
2
3
4
5
6
7
8
9
10
Hab jetzt nur mal die erste Zeile als Beispiel ausgefüllt, also kommt mir jetzt auf die 55 da an.
Könnte mir da bitte nochmal jemand helfen, ich wäre sehr dankbar!!
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Do 15.06.06 20:14
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| 1 2 3 4 5 6 7 8 9 10 1 1 2 3 4 5 6 7 8 9 10 2 2 4 6 8 10 12 14 16 18 20 3 4 5 6 7 8 9 10 |
55 ?
|
|
Lauzijungs 
Hält's aus hier
Beiträge: 13
|
Verfasst: Do 15.06.06 20:31
Na in der 11. Spalte soll in Zeile 1 die 55 ausgegeben werden, als Summe der Zahlen 1,2,3,4,5,6,7,8,9,10, die sich in Zeile 1 aus der Multiplikation mit 1 ergeben
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Do 15.06.06 20:37
Das scheint mir aber doch eher Addition zu sein was Du meinst.
|
|
Lauzijungs 
Hält's aus hier
Beiträge: 13
|
Verfasst: Do 15.06.06 20:39
Ja ist es ja auch, hab ja geschrieben, dass ich die Multiplikation schon hinbekommen habe, jetzt aber das Problem mit dieser Summe habe, das ist Addition, stimmt schon!
|
|
SmileySN
      
Beiträge: 297
WinXP, Win7
Delphi 2010 Professional
|
Verfasst: Do 15.06.06 22:11
Ich nehme an, Du willst die Zeilen aufaddieren und das ergebnis in Zeile 11 schreiben.
Hier das Prinzip wenn man davon ausgeht, dass in dem Array f die Zahlen als Integer gespeichert sind.
Es werden nacheinander Zeile 1 bis 10 zusammenaddiert und das Ergbebnis in Array f[Zeile11,k] reingeschrieben.
Wenn die Summenliste bei 1 anfangen soll, dann k:=1 am Anfang setzen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| k:=2;
For i:= 1 To 10 Do begin Ergebnis:=0;
For j := 1 To 10 Do begin Ergebnis:=Ergebnis + f[i,j]; end;
f[11,k]:=Ergebnis; k:=k + 1; end; |
Hab den Code nicht getestet, aber das Prinzip wie es geht sollte daraus hervorgehen.
|
|