All pastes #33820 Raw Edit

Unnamed

public text v1 · immutable
#33820 ·published 2005-12-15 21:51 UTC
rendered paste body
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.