Читайте также:
|
|
Написати програму з використанням оверлейної структури. Оверлейні модулі приєднати до виконавчого файлу (*. exe). Для регулярних типів використати типізовані модулі. В першому оверлеї прочитати з клавіатури три n (n ≥ 3) вимірних матриці з дійсними компонентами і зберегти їх у три файли. В другому – прочитати дані з файлів, знайти для кожної матриці її норму у вигляді максимального елемента із сум по модулю елементів кожної стрічки і зберегти результати у файлах. В третьому прочитати отриманий результат з файлів та відобразити на екрані (у вигляді таблиці) матрицю з мінімальною нормою.
Опис алгоритму
Текст текст текст
Текст програми
{F+,O+}
program olia;
uses overlay, crt, un1,un2,un3, und;
{O+ un1}
{O+ un2}
{O+ un3}
{O+ und}
begin
clrscr;
OvrInit('olia.exe');
write('Vvedit rozmir matryc ');
readln(n);
for k:=1 to 3 do begin
writeln('Vvedit elementy ',k,' matryci');
ReadMatr(k);
FindNorm(k);
end;
EndNorm;
repeat until KeyPressed;
end.
{$F+,O+}
unit un1;
interface
uses und;
procedure ReadMatr(m:integer);
implementation
procedure ReadMatr;
var i,j:integer;
begin
if m=1 then assign(f[m],'ff1.pas');
if m=2 then assign(f[m],'ff2.pas');
if m=3 then assign(f[m],'ff3.pas');
rewrite(f[m]);
for i:=1 to n do
begin
for j:=1 to n do
begin
read(a);
write(f[m],a,' ');
end;
writeln(f[m]);
end;
close(f[m]);
end;
end.
unit un2;
interface
uses und;
procedure FindNorm(m:integer);
implementation
procedure FindNorm;
var i,j:integer;
begin
if m=1 then assign(f[m],'ff1.pas');
if m=2 then assign(f[m],'ff2.pas');
if m=3 then assign(f[m],'ff3.pas');
reset(f[m]);
if m=1 then assign(fk[m],'fk1.pas');
if m=2 then assign(fk[m],'fk2.pas');
if m=3 then assign(fk[m],'fk3.pas');
rewrite(fk[m]);
for i:=1 to n do
begin
S[i]:=0;
for j:=1 to n do
begin
read(f[m],a);
S[i]:=S[i]+a;
end;
end;
close(f[m]);
norm:=S[1];
for i:=2 to n do
if S[i]>norm then norm:=S[i];
write(fk[m],norm);
close(fk[m]);
end;
end.
{$F+,O+}
unit un3;
interface
uses und;
procedure EndNorm;
implementation
procedure EndNorm;
var i,j:integer;
begin
for j:=1 to 3 do
begin
if j=1 then assign(fk[m],'fk1.pas');
if j=2 then assign(fk[m],'fk2.pas');
if j=3 then assign(fk[m],'fk3.pas');
reset(fk[j]);
read(fk[j],nor[j]);
close(fk[j]);
end;
max:=nor[1]; mn:=1;
for i:=2 to 3 do
if max<nor[i] then
begin
max:=nor[i];
mn:=i;
end;
writeln('Naibilsha norma u matr ',mn,': ',nor[mn]);
if mn=1 then assign(f[mn],'ff1.pas');
if mn=2 then assign(f[mn],'ff2.pas');
if mn=3 then assign(f[mn],'ff3.pas');
reset(f[mn]);
for i:=1 to n do
begin
for j:=1 to n do
begin
read(f[mn],a);
write(a,' ');
end;
writeln;
end;
close(f[mn]);
end;
end.
{$F+,O+}
unit und;
interface
type FFF=array[1..3] of text;
NNN=array[1..3] of integer;
SSS=array[1..10] of integer;
var k, a, n, m, max, mn, norm, i, j, N1:integer;
f,fk:FFF;
nor:NNN;
S:SSS;
ss:string[1];
implementation
end.
Апробація
1) Vvedit rozmir matryc
Vvedit elementy 1 matryci
2 3 4
3 4 5
7 6 5
Vvedit elementy 2 matryci
Завдання № 10
тема завдання
Дата добавления: 2015-07-17; просмотров: 93 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Текст програми | | | Постановка задачі |