Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Матрица

Автор: Печенько 8.12.2008 1:36

Из целочисленной прямоугольной матрицы нужно удалить столбец с наибольшим количеством нулевых элементов,сохранив все остальные элементы в том же порядке.
Не понимаю ни 1й ни 2й части задачи(
Помогите пожалуйста unsure.gif

Автор: Lapp 8.12.2008 14:47

Цитата(Печенько @ 7.12.2008 21:36) *
Не понимаю ни 1й ни 2й части задачи(
Сдается мне, что вторая часть несколько излишняя.. С одной оговоркой (см. конец поста).

Сначала находишь нужный столбец:
k:=1;
z:=0;
for j:=1 to m do begin
x:=0;
for i:=1 to n do if a[i,j]=0 then Inc(x);
if x>z then begin
k:=j;
z:=x
end
end;

Потом удаляешь его:
for i:=1 to n do for j:=k to m-1 do a[i,j]:=a[i,j+1];

Вот, теперь оговорка. У нас получилось, что матрица n*(m-1) хранится в массиве n*m, при этом некоторые его элементы не используются. Это нормально, если я правильно понимаю задачу (массив вообще может быть гораздо больше изначально, как бы с запасом). Но если идея в том, чтобы организовать новый массив точно по размеру новой матрицы, то надо "удаление" делать так:
for i:=1 to n do for j:=1 to m do if j<k then b[i,j]:=a[i,j] else b[i,j]:=a[i,j+1];




Автор: Печенько 9.12.2008 4:27

Спасибо за помощь)

Автор: Lapp 12.12.2008 23:33

М
Флуд удален