Pascal, модули, наработки есть.

Ответить
MrDLS
Сообщения: 2
Зарегистрирован: 06 дек 2009, 17:21

1) В заданной прямоугольной матрице поставить на первое место столбец с наименьшим количеством нулевых элементов, переставив все нули в конец этого столбца. (Изменённая матрица должна содержать все элементы исходной матрицы).

собственно прошу проверить и добавить перестановку нулей в конец столбца..., не во всех столбцах, а именно в том в котором меньше всего нулевых элементов.

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.
Ответить