Помощь - Поиск - Пользователи - Календарь
Полная версия: Матрица
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Печенько
Из целочисленной прямоугольной матрицы нужно удалить столбец с наибольшим количеством нулевых элементов,сохранив все остальные элементы в том же порядке.
Не понимаю ни 1й ни 2й части задачи(
Помогите пожалуйста unsure.gif
Lapp
Цитата(Печенько @ 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];



Печенько
Спасибо за помощь)
Lapp
М
Флуд удален

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.