Консультация № 138536
29.05.2008, 17:45
0.00 руб.
0 1 1
Уважаемые эксперты, помогите составить программу, формирующую целочисленную квадратную матрицу. Уплотнить заданную матрицу, удаляя из нее строки и столбцы, содержащие хотя бы один нулевой элемент. Спасибо за помощь.

Обсуждение

давно
Профессор
401888
1232
31.05.2008, 15:27
общий
это ответ
Здравствуйте, Верещагин Михаил!
Решение задачи с комментариями в приложении.

Приложение:
uses crt;var n,i,j,k,p,m,t,g:integer; a,b:array[1..50,1..50]of integer;beginclrscr;write(‘n=‘);readln(n);p:=n; {запоминаем размерность матрицы}randomize;Writeln(‘Ishodnaja matrica:‘);for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(10); write(a[i,j]:4); end; writeln; end;readln;b:=a; {Делаем клон матрицы}{Udalenie stroki s 0}i:=1;while i<=n do begin k:=0; for j:=1 to p do {считаем ноли в строках} if a[i,j]=0 then begin k:=k+1; end; if k>0 then {если есть} begin for t:=1 to p do for m:=i to n-1 do begin a[m,t]:=a[m+1,t]; {сдвигаем все строки до этой включительно на одну вверх} end; n:=n-1; {уменьшаем размерность массива} end else i:=i+1; {переходим к следующей строке} end;{Udalenie stolbca s 0}writeln(‘Rezultat:‘);g:=0; {делаем счетчик столбцов с нолями}for j:=1 to p do begin k:=0; for i:=1 to p do {считаем ноли в столбцах исходной матрицы} if b[i,j]=0 then begin k:=k+1; end; if k>0 then {если есть} begin for m:=1 to n do for t:=j-g to p-1 do begin a[m,t]:=a[m,t+1]; {сдвигаем в матрице уже без нулевых строк столбцы на один влево} end; g:=g+1; {считаем такие столбцы} end end;for i:=1 to n do {выводим матрицу по условию, n меньше первоначальной на количество нулевых строк, p-g это тоже n, уменьшенное на количечтво нулевых столбцов} begin for j:=1 to p-g do write(a[i,j]:4); writeln; end;readln;end.
Форма ответа