Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program lab11;
- {R+}
- const Nmax=10;
- type matrix=array[1..Nmax,1..Nmax] of integer;
- flags=array[1..3] of boolean;
- averages=array[1..3] of real;
- Procedure IO(var file1,file2:textfile; const name:char; out M:matrix; out n:byte);
- var i,j:byte;
- Begin
- readln(file1,n);
- for i:=1 to n do Begin
- for j:=1 to n do read(file1,M[i,j]);
- end;
- writeln(file2,'Исходная матрица ',name,'(',n,'x',n,')',': ');
- for i:=1 to n do Begin
- for j:=1 to n do write(file2,M[i,j],' ');
- writeln(file2,' ');
- end;
- End;
- Procedure find_average(const M:matrix; const n:integer; out average_i:real; out flag_i:boolean);
- var i,j:byte;
- sum,count:integer;
- Begin
- sum:=0;
- count:=0;
- for i:=1 to n do
- if M[i,n]=1 then Begin
- flag_i:=True;
- for j:=1 to n do Begin
- sum:=sum+M[i,j];
- count:=count+1;
- average_i:=sum/count;
- end;
- end;
- end;
- Function find_max(const average:averages; const flag:flags; out flag_max:boolean):real;
- var i:byte;
- max:real;
- Begin
- flag_max:=false;
- i:=1;
- while (i<=3) and not flag_max do Begin
- if (flag[i]=true) then Begin
- max:=average[i];
- flag_max:=true;
- end
- else inc(i);
- end;
- if (flag_max=true) then Begin
- while (i<=3) do Begin
- if (flag[i]=true) and (average[i]>max) then find_max:=average[i];
- inc(i);
- end;
- end;
- end;
- Procedure print_result(var fout:textfile; const flag_max:boolean; const max:real; const average:averages; const flag:flags);
- var i:byte;
- begin
- for i:=1 to 3 do Begin
- if (flag[i]=true) then writeln(fout,'Среднее арифметическое ',i,' матрицы равно: ',average[i]:3:3)
- else writeln(fout,'Среднее арифметическое ',i,' матрицы не существует');
- end;
- if (flag_max=True) then writeln(fout,'Максимум равен ',max:3:3)
- else writeln(fout,'Не удалось найти максимум');
- end;
- var A,B,C:matrix;
- fin1,fin2,fin3,fout:textfile;
- na,nb,nc:byte;
- average:averages;
- flag:flags;
- max:real;
- flag_max:boolean;
- begin
- Assignfile(fin1,Paramstr(1));Assignfile(fin2,Paramstr(2));Assignfile(fin3,Paramstr(3));Assignfile(fout,Paramstr(4));
- Reset(fin1);Reset(fin2);Reset(fin3);Rewrite(fout);
- IO(fin1,fout,'A',A,na);
- IO(fin2,fout,'B',B,nb);
- IO(fin3,fout,'C',C,nc);
- find_average(A,na,average[1],flag[1]);
- find_average(B,nb,average[2],flag[2]);
- find_average(C,nc,average[3],flag[3]);
- max:=find_max(average,flag,flag_max);
- print_result(fout,flag_max,max,average,flag);
- closefile(fin1);
- closefile(fout);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement