Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2009, 17:16   #1
auhb
 
Регистрация: 06.12.2009
Сообщений: 4
По умолчанию Pascal, модули, наработки есть.

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.
auhb вне форума Ответить с цитированием
Старый 06.12.2009, 20:50   #2
auhb
 
Регистрация: 06.12.2009
Сообщений: 4
По умолчанию

10 символов.
auhb вне форума Ответить с цитированием
Старый 07.12.2009, 23:43   #3
auhb
 
Регистрация: 06.12.2009
Сообщений: 4
По умолчанию

пожалуйста помогите.
auhb вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pacsal, Модули, Наработки есть Otre4eHHbIu Помощь студентам 3 11.10.2009 18:27
Pascal; Задача с циклом (есть наработки...) -SG- Помощь студентам 5 09.10.2009 18:27
Паскаль, массивы, наработки есть. Otre4eHHbIu Помощь студентам 14 17.05.2009 01:16
Паскаль, массивы, наработки есть. Otre4eHHbIu Помощь студентам 3 12.05.2009 12:26
ПОСМОТРИТЕ, ПОЖАЛУЙСТА, ПРОГРАММЫ НА ЯЗЫКЕ ПАСКАЛЬ!! СРОЧНО!! ЕСТЬ НАРАБОТКИ) НАСТЯ 18:) Помощь студентам 33 10.05.2009 15:23