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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2012, 17:14   #1
DianaDeetz
Новичок
Джуниор
 
Регистрация: 28.10.2012
Сообщений: 1
Восклицание проверти задачку

с помощью процедур решить задачу .
В заданной прямоугольной матрице поставить на первое место столбец с наименьшим количеством нулевых элементов, переставив все нули в конец этого столбца. (Изменённая матрица должна содержать все элементы исходной матрицы).
................................... ................................... ...........................
Получается 3 процедуры:
1 в каждом столбце найти кол-во нулей
2 найти с наименьшим кол-ом нулевых элементов
3 встречная сортировка
................................... ................................... ..................
Вот что я накалякала....Помогите разобраться с ошибками(
................................... ................................... ..................
Код:
Program z4_3_3_4;
 const M = 5; N = 4;
 type matr = array[1..N, 1..M] of real;
var
I,j:integer;
a:matr;


procedure  kolnul(a:matr; col: integer);
 var
 i:integer;
 k:integer;
 koln: integer;
 begin
 k := 0;
 for i:=1 to m do
 if a[i, col]=0 then
  k := k + 1;
  k := kolN;
end;


procedure minnul(var a:matr);
 var i,j,minN:integer;
 w:real;
 begin
 minN:=i;
 for i:=1 to n do
 begin
 w:=a[i,minN];
 a[i,minN]:=a[i,1];
 a[i,1]:=w;
 end;
 end;

 procedure sort(var a: matr);
  var i,j,minN,kolN:integer;
  begin
 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;


begin
 begin
  writeln(' Введите матрицу  ') ;
   for  i:=1 to n do
     for j:=1 to m do
     read(a[i,j]);
 end;
procedure kolnul(a:matr; col: integer);
if col then  procedure minnul(var a:matr);
end else begin procedure sort(var a: matr); write(a[i,j]:5:2);
 writeln;
      end;
   end;

end.

Последний раз редактировалось Stilet; 28.10.2012 в 17:53.
DianaDeetz вне форума Ответить с цитированием
Старый 28.10.2012, 17:46   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Рекомендую Вам выделить в матрице дополнительную строку, в которой будет хранится количество нулей в соответствующем столбце. А потом, просто в цикле пробегаясь по последней строке, вы найдете столбец, в котором больше всего нулевых элементов.

Для подсчета количества нулевых элементов в столбце, нужно заменить процедуру kolnul на функцию с этим же названием, чтобы можно было вернуть количество нулевых элементов. А если нужна именно процедура, то нужно будет использовать параметр-переменную с той же целью.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решить задачку... VintProg Свободное общение 4 23.08.2011 16:54
Проверти пожалуйста задачку на Си для моделирования обхода препяствия роботом $Anya$ Помощь студентам 0 13.01.2010 17:40
проверти,файлы,паскаль!! DjDeniels-61 Паскаль, Turbo Pascal, PascalABC.NET 4 01.07.2009 18:36
Решите задачку innaa639 Паскаль, Turbo Pascal, PascalABC.NET 14 30.11.2008 15:20
Проверти код! на паскале! Спасибо! Impulsive Паскаль, Turbo Pascal, PascalABC.NET 2 10.03.2008 21:54