Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu Delphi
Ich hab die Chance umsonst zur CeBit zu kommen, wenn ich eine Wette gewinne. Ich soll einen Code schreiben für folgende Aufgabe: Ein Stringgrid mit 11x11 Feldern soll in den den Cellen [1,1] bis [10,10] (ein Quadrat von 10x10 Zellen) mit Zufallszahlen gefüllt werden. In den Zellen [1,0] bis [11,0] sollen die Summen für die jeweiligen Spalten stehen. In den Zellen [0,1] bis [0,11] sollen die jeweiligen Zeilensummen stehen. Die Bedingung für meinen Sieg, der Code darf zusammen mit dem automatisch generierten Teil, der nicht verändert werden darf) nicht mehr als 38 Zeilen umfassen. Weitere Bedingunegn: Eine Anweisung pro Zeile und es darf nicht über die gestrichelte, senkrechte Linie hinaus geschrieben werden. Ich hoffe ihr könnt mir helfen.
dead_orc
08.03.2005, 17:12
Helfen kann ich dir wohl nicht, aber ich schätze mal, dass das rein gar nichts mit Webdesign zu tun hat! (Und außerdem hört es sich fast unmöglich an, aber das sagt einer, der nie Delphi-Code gesehen hat ^^)
Ups, dann hab ich den Titel des Forums falsch verstanden, iich dachte, dass wär ein allgemeines Programmierer-Forum. Sorry.
War nicht einfach... ich hasse solche verschachtelungen xD
Sind genau 38 Codezeilen. Ich hoffe du bringst die erfahrung mit das einzubauen, ansonsten wirkts unglaubwürdig ;)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
private
IntData: array[0..11,0..11] of Integer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
x,y: Integer;
begin
Randomize;
for x := 0 to 10 do
for y := 0 to 10 do
if (x = 0) or (y = 0) then begin
IntData[x,0] := x;
IntData[0,y] := y;
end else begin
IntData[x,y] := Random(100);
IntData[x,11] := IntData[x,11] + IntData[x,y];
IntData[11,y] := IntData[11,y] + IntData[x,y];
end;
for x := 0 to 11 do
for y := 0 to 11 do
StringGrid1.Cells[x,y] := IntToStr(IntData[x,y]);
end;
end.
Edit: Öhhh... momment... Ich hab da wohl was falsch verstanden ^^ So sinds sogar nur 35 Zeilen :A
procedure TForm1.FormCreate(Sender: TObject);
var
x,y: Integer;
begin
Randomize;
for x := 1 to 10 do
for y := 1 to 10 do
begin
IntData[x,y] := Random(100);
IntData[x,11] := IntData[x,11] + IntData[x,y];
IntData[11,y] := IntData[11,y] + IntData[x,y];
end;
for x := 1 to 11 do
for y := 1 to 11 do
StringGrid1.Cells[x,y] := IntToStr(IntData[x,y]);
end;
Natürlich würde das irgendwie ohne den Array 'IntData' gehen. Aber dann müsstest du ellenlange Zeilen schreiben weil du immer StrToInt casten musst.
So siehts dann aus:
http://staff.onsetsu.de/freezy/grb/stringgrid.jpg
Freezy, danke für den Code, aber eine Bedingung ist nicht erfüllt. In den Zellen [0,x] und [x,0] sollen nicht die Zahlen von 1 bis 10 stehen, sondern die Zeilen- bzw. Spaltemsummen, also die Addition aller neben- bzw. unterstehenden Zellen.
EDIT. Ups, hast du ja schon bemerkt. Ich danke dir dafür. http://www.multimediaxis.de/images/smilies/old/sm_12.gif
Hmm... die Summen stehen jetzt immer an [x,11],[11,y]. Diese auf [x,0],[o,y] zu bringen ist aber nicht sonderlich schwer. Sollte es trotzdem hapern sag bescheid ^^
Sorry für den Doppelpost, aber es soll Freezy auch auffallen.
@Freezy: Es gibt ein Problem, dass Stringgrid soll nur aus den Zellen 0 bis 10 x 0 bis 10 bestehen, also nicht die 0er Reihe leer lassen. Die Summen können aber trotzdem unten und rechts stehen, dass sit egal. Gib mir mal deine Mail, dann schick ich dir mal nen Screenshot wie es aussehen soll.
EDIT: Ich hab es angepasst bekommen, jetzt muss ich es nur noch in nen Button einbinden und dann mal gucken, ob es reicht. Ich danke dir auf jeden Fall, das bringt mich nen großen Schritt weiter.
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.