Из целочисленной прямоугольной матрицы нужно удалить столбец с наибольшим количеством нулевых элементов,сохранив все остальные элементы в том же порядке. Не понимаю ни 1й ни 2й части задачи( Помогите пожалуйста
Lapp
8.12.2008 10: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 0:27
Спасибо за помощь)
Lapp
12.12.2008 19:33
М
Флуд удален
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.