Считать из файла целочисленную матрицу и обнулить строку и столбец на пересечении которых стоит минимальный элемент. процесс проиллюстрировать анимацией на экране- Pascal(Паскаль)

uses crt;
type matr=array[1..20,1..20] of integer;
procedure Print(var a:matr;m,n,k1,k2:byte);
var i,j:byte;
begin
for i:=1 to m do
 begin
  for j:=1 to n do
   begin
    if(i=k1)or(j=k2) then textcolor(12)
    else textcolor(15);
    if (i=k1)and(j=k2)then textcolor(13);
    write(a[i,j]:4);
   end;
  writeln;
 end;
textcolor(15);
end;
var f:text;
    a:matr;
    n,m,i,j,imn,jmn:byte;
    nf:string;
begin
clrscr;
write('Имя файла для чтения: ');
readln(nf);
clrscr;
nf:=nf+'.txt';
assign(f,nf);
{$I-} reset(f);  {$I+}
if IOResult <> 0 then
 begin
  writeLn('Файл ',nf,' не найден!');
  writeLn('Работа программы завершена. Нажмите ENTER');
  readln;
  exit;
 end;
read(f,m,n);
for i:=1 to m do
for j:=1 to n do
read(f,a[i,j]);
imn:=1;
jmn:=1;
for i:=1 to m do
for j:=1 to n do
if a[i,j]<a[imn,jmn] then
 begin
  imn:=i;
  jmn:=j;
 end;
writeln('Исходная матрица');
Print(a,m,n,imn,jmn);
writeln('Минимальный элемент a[',imn,',',jmn,']=',a[imn,jmn]);
delay(2000);
gotoXY(1,1);
textcolor(10);
writeln('Обнуление строки');
for i:=1 to n do
 begin
  gotoXY((i-1)*4+1,imn+1);
  write('   0');
  delay(1000);
 end;
delay(2000);
gotoXY(1,1);
writeln('Обнуление столбца');
for i:=1 to m do
 begin
  gotoXY((jmn-1)*4+1,i+1);
  write('   0');
  delay(1000);
 end;
readln;
textcolor(15);
end.

Следующий вариант

uses crt;
type matr=array[1..20,1..20] of integer;
procedure Print(var a:matr;m,n,k1,k2:byte);
var i,j:byte;
begin
for i:=1 to m do
 begin
  for j:=1 to n do
   begin
    if(i=k1)or(j=k2) then textcolor(9)
    else textcolor(0);
    if (i=k1)and(j=k2)then textcolor(2);
    write(a[i,j]:4);
   end;
  writeln;
 end;
textcolor(0);
end;
var f:text;
    a:matr;
    n,m,i,j,imn,jmn:byte;
    nf:string;
begin
clrscr;
write('Имя файла для чтения: ');
readln(nf);
clrscr;
nf:=nf+'.txt';
assign(f,nf);
if not fileexists(nf) then
 begin
  writeLn('Файл ',nf,' не найден!');
  writeLn('Работа программы завершена. Нажмите ENTER');
  readln;
  exit;
 end
else reset(f);
read(f,m,n);
for i:=1 to m do
for j:=1 to n do
read(f,a[i,j]);
close(f);
imn:=1;
jmn:=1;
for i:=1 to m do
for j:=1 to n do
if a[i,j]<a[imn,jmn] then
 begin
  imn:=i;
  jmn:=j;
 end;
writeln('Исходная матрица');
Print(a,m,n,imn,jmn);
writeln('Минимальный элемент a[',imn,',',jmn,']=',a[imn,jmn]);
for i:=1 to 10 do
 begin
  gotoXY((jmn-1)*4+1,imn+1);
  textcolor(15);
  write(a[imn,jmn]:4);
  delay(100);
  gotoXY((jmn-1)*4+1,imn+1);
  textcolor(2);
  write(a[imn,jmn]:4);
  delay(100);
 end;
gotoXY(1,1);
textcolor(4);
writeln('Обнуление строки');
for i:=1 to n do
 begin
  gotoXY((i-1)*4+1,imn+1);
  write('   0');
  delay(1000);
 end;
delay(2000);
gotoXY(1,1);
writeln('Обнуление столбца');
for i:=1 to m do
 begin
  gotoXY((jmn-1)*4+1,i+1);
  write('   0');
  delay(1000);
 end;
readln;
textcolor(15);
end.

Файл

5 7
10 11 12 13 14 14 29
 9  8 11 25 16 21 30
18  5 10 33 20 12  9
20 12 15 20 25  8 45 
31 14 26 65 23 29 40

Leave a Comment

78 − = 72