Pascal, модули, наработки есть.
Добавлено: 11 дек 2009, 08:00
1) В заданной прямоугольной матрице поставить на первое место столбец с наименьшим количеством нулевых элементов, переставив все нули в конец этого столбца. (Изменённая матрица должна содержать все элементы исходной матрицы).
собственно прошу проверить и добавить перестановку нулей в конец столбца..., не во всех столбцах, а именно в том в котором меньше всего нулевых элементов.
2) А второй вариант этой программы, надо - разместить все процедуры и функции в отдельных модулях.
собственно прошу проверить и добавить перестановку нулей в конец столбца..., не во всех столбцах, а именно в том в котором меньше всего нулевых элементов.
2) А второй вариант этой программы, надо - разместить все процедуры и функции в отдельных модулях.
Код: Выделить всё
unit modul1;
interface
const M = 5; N = 4;
type matr = array[1..N, 1..M] of real;
procedure vvod(var a: matr);
procedure vivod(a: matr);
function kolnul(a: matr; col: integer):integer;
procedure minnul(var a: matr);
implementation
procedure vvod(var a: matr);
var i,j:integer;
begin
writeln('Input matr: ');
for i:=1 to N do
for j:=1 to M do
read(a[i,j]);
end;
procedure vivod(a:matr);
var i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j]:5:2);
writeln;
end;
end;
function kolnul(a:matr; col: integer): integer;
var
i:integer;
k: integer;
begin
k := 0;
for i:=1 to m do
if a[i, col]=0 then
k := k + 1;
kolnul := k;
end;
procedure minnul(var a:matr);
var i,j,minN,kolN:integer;
buf:real;
begin
minN:=1;
kolN:=kolnul(a,minN);
for i:=2 to m do
if kolnul(a,i)<kolN then
begin
kolN:=kolnul(a,i);
minN:=i;
end;
for i:=1 to n do
begin
buf:=a[i,minN];
a[i,minN]:=a[i,1];
a[i,1]:=buf;
end;
for i:=1 to N do
begin
writeln(i);
if a[i, 1] = 0 then
begin
j := i;
while (a[j,1] <> 0) or (j = n) do begin
writeln(j);
inc(j);
end;
a[i, 1] := a[j, 1]
end;
for i:=n downto n - kolN + 1 do
a[i, n] := 0;
end;
end;
end.
Код: Выделить всё
program super_proga;
uses modul1;
var
mat: matr;
begin
vvod(mat);
minnul(mat);
vivod(mat);
readln;
end.