Registriert seit: 5. Apr 2003
128 Beiträge
|
Matrix 2
11. Mai 2003, 17:13
ich habe noch eine frage zu einem ähnlichen programm wie in dem letzten matrix tread, genauergesagt eine erweiterung zu diesem. es wird angezeigt : "die typen der tatsächlichen und formalen var-parameter müssen übereinstimmen." wenn ich nur wüsste was das bedeuten soll ^^". ich poste mal wieder den delphisource code, hoffe ihr könnt mir helfen! thx im vorraus, die kommentare müssten aufschluss geben was das programm macht.
Delphi-Quellcode:
//*******************************************************//
// //
// Name: fDASTA202 //
// Autor: n00b on knees //
// Datum: 10.05.2003 //
// Zweck: Liest eine Zahl N in, erstellt eine Matrix //
// mit NxN Reihen, liest X und Y ein, deren //
// Zeilennummern der Matrix dann vertauscht werden.//
// //
//********************************************************//
unit fdasta202;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TFeld = array [1..10, 1..10] of integer;
TForm1 = class(TForm)
mmAus: TMemo;
btStart: TButton;
Label1: TLabel;
edN: TEdit;
X: TLabel;
edX: TEdit;
Label2: TLabel;
edY: TEdit;
btVertauschen: TButton;
procedure ShowMatrix( var a: integer; var N: TFeld);
procedure FillMatrix( var AFeld: TFeld; N: integer);
procedure btStartClick(Sender: TObject);
private
function GetN: integer;
function GetLine ( var N: integer; var AFeld: TFeld): TFeld;
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//********************************************************//
// //
// Name: GetN //
// Datum: 10.05.2003 //
// Zweck: Liest die Zahl N ein, und prüft ob sie im //
// Bereich von 2 bis 10 liegt. //
// //
//********************************************************//
function TForm1.GetN: integer;
//Variablendeklaration
var
N: integer;
begin
//Einlesen
N:=StrToInt(edN.Text);
//Wenn N im Bereich von 2 bis 10 liegt, dann
if (N > 1) and ( N <= 10) then
//Rückliefere N
result:= N
else
result:=random(9)+2;
end;
//********************************************************//
// //
// Name: FillMatrix //
// Datum: 10.05.2003 //
// Zweck: Füllt das mehrdimensionale Array mit //
// Zufallszahlen von 0 bis 99. //
// //
//********************************************************//
procedure TForm1.FillMatrix( var AFeld: TFeld; N: integer);
//Variablendeklaration
var
i, j: integer;
begin
//Kopfgesteurte Schleife, wobei i die 3 Zeilen sind.
for i:= 1 to N do
//Kopfgesteuerte Schleife, wobei j die 6 Spalten sind.
for j:=1 to N do
//fügt jedem Feldelement eine Zufallszahl von 0 bis 9 zu.
AFeld[i, j]:= random(99)+1;
end;
//********************************************************//
// //
// Name: ShowMatrix //
// Datum: 10.05.2003 //
// Zweck: Gibt das mehrdimensionale Feld aus. //
// //
//********************************************************//
procedure TForm1.ShowMatrix( var a: integer; var N: TFeld);
//Variablendeklaration
var
i, j: integer;
begin
//leert das Memofeld
mmAus.Clear;
//Beide folgenden Schleifen sind zur Formatierten Ausgabe in der Tabellenart
for i:=1 to a-1 do
begin
mmAus.Lines.Add(format(' %3d. Reihe: ',[i]));
for j:=1 to a-1 do
mmAus.Lines[i]:= mmAus.Lines[i]+format(' %3d',[N[i,j]]);
end;
end;
//********************************************************//
// //
// Name: GetLine //
// Datum: 10.05.2003 //
// Zweck: Liest X und Y ein, überrprüft ob diese im //
// richtigen Bereich liegen, und vertauscht //
// die Zeilen mit den Nummern. //
// //
//********************************************************//
function TForm1.GetLine ( var N: integer; var AFeld: TFeld): TFeld;
//Variablendeklaration
var
x, y, i: integer;
Temp: array [1..10] of integer;
begin
//Einlesen der Variablen
x:= StrToInt(edX.Text);
y:= StrToInt(edY.Text);
//Wenn X und Y kleiner gleich N, und größer 1 sind, dann
if (x <= N) and (y <= N) and (x > 1) and (y > 1) then
//Kopfegesteuerte Schleife, von 1 bis N um die Zeilen zu vertauschen
for i:=1 to N do
begin
Temp[i]:= AFeld[x, i];
AFeld[x,i]:= AFeld[y,i];
AFeld[y,i]:= Temp[i];
end;
//Liefert das Feld zurück
result:= AFeld;
end;
procedure TForm1.btStartClick(Sender: TObject);
//Variablendeklaration
var Feld: TFeld;
N: integer;
begin
//Ruft alle Unterprogramme auf
N:= Getn;
FillMatrix(N, Feld);
ShowMatrix(N, Feld); //Hier wird der Fehler angezeigt
Feld:= GetLine(N, Feld);
ShowMatrix(N, Feld);
end;
end.
Against TCPA & And I think we should live our dreams
|