Funktionsunterprogramm aber wie?

fate2k5

Grünschnabel
Aufgabenstellung: Schreiben Sie ein Unterprogramm, dass eine 5 × 5-Matrix übergeben bekommt und eine Kopie
dieser Matrix an einen Ausgabeparameter übergibt.Welche Typdeklarationen sind hier notwendig?

nun habe ich schon folgendes getestet:
ich habe probiert in der einen unit, die matrix zu initalisieren und sie in eine input.txt gespeichert und dann in hauptprogramm habe ich einfach die zahlen aus der input.txt in die output.txt einlesen lassen.

ich bin nun soweit, dass ich mein programm habe, allerdings ohne unterprogramm:

PROGRAM Matrix(input, output, mout);

const
n=5; m=5;

var
x: Array[1..n] of Array[1..m] of integer;
i,j,max : integer;
mout : text;

begin

assign(mout, 'output.txt');
reset(mout);
rewrite(mout);

For i:= 1 To n Do
Begin
For j:=1 To M Do
read(x[i,j]);
readln;
end;

For i := 1 to n do
Begin
For j := 1 to m do write(mout, x[i,j]:5);
writeln(mout)
End;
writeln(mout);
max := x[1,1];
For i:= 1 to n do
for j:= 1 to m do
if x[i,j] > max then max := x[i,j];

writeln(mout, 'Groesstes ist ',max);
writeln(mout);
writeln(mout, 'done.');
close(mout);
readln;
end.

aber da fehlen ja die type konstruktionen und das unterprogramm :(
hat vllt jmd einen lösungsansatz oder vorschlag :)?

achja ich programmiere alles in Freepascal

danke im vorraus
gruss sascha
 
Bin nicht ganz sicher ob ich das mit dem Unterprogramm und der Typdeklaration richtig verstanden hab, aber eventuell soll das mit nem Record gemacht werden..

du könntest z.B so was machen:

Code:
const N = 5;
         M = 5;


type 5erMatrix = record
       Matrix  : array [1..N] of array[1..M] of integer; 
       Max     : integer;
       Min      : integer;

        //usw..

end;


Jetzt kannst du in deinem Hauptprogramm, oder wo au immer.., die Variablen des Records bearbeiten und sie dann über ne Write-Funktion in eine Datei schreiben.

Im lesenden Programm kannst du dann ein identisches Record mit nem Read füllen.
Dadurch sparst du die For-Schleifen...

Wenn du noch Fragen hast führ ichs bissle weiter aus.
gruß Kangaxx
 
Zuletzt bearbeitet:
Also so ganz habe ich das nicht verstanden =(
Ich habe nun wie du es gesagt hast, Typen in mein Hauptprogramm geschrieben:

Code:
program schreibeprog(input, outpu, schreibdatei, lesedatei);

uses leseprog;

const   n=5;
           m=5;

type  fuenfermatrix = record
        matrix : array[1..n] of array[1..m] of integer;
        max : integer;
        j,i : integer;
        lesedatei : text;

var     j,i,max = integer;
        lesedatei : text;

begin

assign(lesedatei, 'input.txt');
reset(lesedatei);
rewrite(lesedatei);

        for i:= 1 to n do
        begin
                for j:= 1 to m do
                        read(x[i,j]);
                        readln;
                end;

        for i:= 1 to n do
                begin
                        For j:= 1 to m do write(lesedatei, x[i,j]:5);
                        writeln(lesedatei)
                end;

writeln(lesedatei);
max := x[1,1];
for i:= 1 to n do
        for j:=1 to m do
                if x[i,j] > max then max := x[i,j];

writeln(lesedatei, 'Groesstes ',max);
writeln(lesedatei);
writeln(lesedatei, 'done.');
readln;
end.

So nun bin ich gerade an meiner Unit am werkeln, weiss nun aber nicht, wie ich eine For-Schleife spare und wie ich es überhaupt mache.

Code:
unit leseprog;

interface

type   fuenfermatrix = record
         schreibdatei : text;

implementation

var    schreibdatei : text;


begin

end.
 
Hi ich finde die Aufgaben sind übelst schwammig formuliert.
Aufgaben

Aufgabe 4 habe ich so interpretiert:
Code:
program Matrix_4(input,output);
uses crt;
const n = 5;
type TwoDim5 = array[1..n,1..n] of Integer;
var matrix :TwoDim5;
    i,j : byte;
    output : text;

procedure CopyInToFile(matr : TwoDim5);
begin
 assign(output,'output.txt');
 rewrite(output);
 for i:=1 to n do
  for j:=1 to n do
  begin
   write(output,matr[i][j]:4);
   if j = 5 then writeln(output);
  end;
 close(output);
end;

Wer cool wenn wer weiß wie man Aufgabe 5 angeht.
 
Ist eigentlich ganz einfach.
Ein Matrix ist eigentlich ein mehrdimensionales Array und über eine Typdeklaration dürfte das einfach lösbar sein

Code:
type MATRIX = record
   matrix : array[1..5,1..5] of integer; //wenn' s Fließkomma sein soll dann halt double
end;

var 
  M : MATRIX;

// hier die Funktion die mit der Matrix arbeiten soll
function Beispiel(In : MATRIX):MATRIX;
begin
  /Mache irgend etwas mit der Matrix -> In wird hier verändert
              .
              .
  //Bearbeitete Matrix zurückgeben
  Result := In;
end;
      .
      .
//Jetzt das Hauptprogramm
begin
   //Mache irgend etwas  (z.B Matrix M mit Werten füllen)  
     .
  //die Matrix in Funktion Beispiel bearbeiten und Rückgabewert in M wieder speichern
  M:=Beispiel(M);
    .
    .
  //weiterer Code
end.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück