program pratybos3_15;
const T = 50;
type Mas = array [1..5, 1..8] of integer; //Matricos aprasymas
var i, k :integer; //pagalbiniai kintemieji
n2 :integer; //Maziausias matr elementui saugoti skirtas kintamasis
s :integer; //eilutes turincios min matr elemento nr saugoti skirtas kintamasis
x :integer; //Didziausiam matr elementui saugoti skirtas kintamasis
d :integer; //eilutes turincios max matr elemento nr saugoti skirtas kintamasis
matrix:Mas; //Matricos kintamasis
//------------------------------------------------------------------------------
//procedura suskurs tektsiniame faile matrica 5x8 ir atsistiktiniu skaiciu
procedure kuria(var matrix:Mas);
var i,k:integer;
begin
Randomize; //ijungiam randomize
for i:= 1 to 5 do
begin
for k:= 1 to 8 do
begin
matrix[i][k]:= random(T); //generuojami matricos elementai
end;
end;
end;
//------------------------------------------------------------------------------
//procedura irasys matrica i faila 'matrica.dat'
procedure raso (matrix:Mas);
var F:text;
begin
Assign(F, 'matrica.dat'); //failo priskyrimas
ReWrite(F); //istrinamas failas
for i:= 1 to 5 do
begin
for k:= 1 to 8 do begin
Write(F,matrix[i][k]:5); //i faila irasomi matricos elementai
if k = 8 then WriteLn(F); //nauja eilute
end;
end;
Close(f); //uzdaromas failas
end;
//------------------------------------------------------------------------------
//procedura suras min matricos elementa ir eilute kurioje jis yra
procedure min (var s, n2:integer);
var F: text; n, i, k :integer;
begin
Assign(F, 'matrica.dat');
reset(F); //failas paruosiamas nuskaitymui
n2:=maxint; //priskiriama max sveikassis skaicius - pradine reiksme
read(F,n); //nuskaitomas pirmasis matricos elementas
s := 0; //pradine reiksme
for i:= 1 to 5 do
begin
for k:= 1 to 8 do
begin //------------------------------//
if n<n2 then begin //ieskoma min elemento //
n2:=n; s:=i; end; //ir isimenamas eilutes nr //
Read(F,n); //elemento nuskaitymas is failo //
end; //------------------------------//
end;
Close (F); //failo uzdarymas
end;
//------------------------------------------------------------------------------
//programa apskaiciuos aritemetini vidurki tos eilutes kuri turi maziausia
//matricos elementa
procedure aritvid(s:integer);
var i, k, n :integer; F :text; vid :real;
begin
Assign(F, 'matrica.dat');
Reset (F); //failas paruosiamas nuskaitymui
vid := 0; //pradine reiksme
for i:= 1 to 5 do
begin
if (i = s) then //tikrinama ar ta pati eilute
begin
for k:= 1 to 8 do
begin
Read (F,n);
vid := vid + n; //kaupiama tos eilutes elementu suma
end;
end else for k:= 1 to 8 do read(F, n);
end;
vid := vid / 8; //apskaiciuojamas aritmetinis vidurkis
WriteLn ('Aritemtinis vidurkis = ', vid :10:2);
Close(f); //uzdaromas failas
end;
//------------------------------------------------------------------------------
//procedura suras max matricos elementa ir jo eilutes nr
procedure max (var x, d:integer);
var F: text; n, i, k :integer;
begin
Assign(F, 'matrica.dat');
x:=-maxint; //priskiriama pradine reikmse
reset(F);
read(F,n);
d := 0; //priskiriama pradine reikmse
for i:= 1 to 5 do
begin
for k:= 1 to 8 do
begin //------------------------------//
if n>x then begin //ieskoma max elemento //
x:=n; d:=k; end; //ir isimenamas eilutes nr //
Read(F,n); //elemento nuskaitymas is failo //
end; //------------------------------//
end;
Close (F); //failo uzdarymas
end;
//------------------------------------------------------------------------------
//procedura apskaiciuos visu matricos elementu suma isskyrus tos eilutes
//kurioje yra max matricos elementas
procedure suma(d:integer);
var i, k,g, n :integer; F :text; sum :longint;
begin
Assign(F, 'matrica.dat');
Reset (F);
sum := 0;
n := 0; //pradine reiksme
for i:= 1 to 5 do
begin
//tikrina ar tai ne ta eilute kur yra max elementas
begin
for k:= 1 to 8 do begin
if (k <> d) then
begin
Read (F,n);
sum := sum + n;
//kaupiama suma
end else begin
sum := sum -n;
read (F, n);
for g:= d+1 to 8 do
read(F, n);
sum := sum + n;
end;
end; end;
end;
WriteLn ('Matricos elementu suma ismetus max elemento eilute = ', sum :10);
Close(f);
end;
//------------------------------------------------------------------------------
begin
kuria(matrix); //kreipiasi i procedura kuri sukurs matrica
raso(matrix); //kreipiasi i procedura kuri irasys matrica i faila
WriteLn('Pradiniai duomenys');
for i:= 1 to 5 do
begin //atspauzdina pradiniuos duomenis
for k:= 1 to 8 do begin
Write(matrix[i][k]:5);
if k = 8 then WriteLn;
end;
end;
WriteLn;
min(s, n2); //kreipimasis i procedura kuri suras min elementa ir jo eilutes nr
WriteLn('Maziausias matricos elementas = ', n2:5);
WriteLn('Jis yra ', s:5, ' eiluteje');
aritvid(s); //eilutes su min elementu aritmetinio vidurkio skaiciavimo proceduros iskvietimas
max(x,d); //kreipimasis i procedura kuri suras max elementa ir jo eilutes nr
WriteLn('Didziausias matricos elementas = ', x:5);
WriteLn('Jis yra ', d:5, ' eiluteje');
suma(d); //kreipimasis i procedura kuri apskaiciuos visu matricos elementu suma
Readln; //isskyrus eilute su max elementu
end.