Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Уплотнение матрицы 
:(
    Опции темы
SpiLLeR
Дата 21.3.2007, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 21.3.2007

Репутация: нет
Всего: нет



Здраствуйте. 
Есть такая вот задача:
Дана матрица, нужно уплотнить ее убирая из нее все элементы =0.
Вопрос:
Как лучше решить данную задачу, через метод пузырька или используя 2ой массив?
Или я вообще не прав.
Заранее спасибо.

З.Ы. искал на форуме что то похожее так и не нашел.
PM MAIL   Вверх
Aliksir
Дата 21.3.2007, 04:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 13.3.2007

Репутация: нет
Всего: нет



Уплотнить, я так понимаю, таким образом, чтобы при нулевом элементе, все остальные элементы сдвигались на 1 позицию "влево"?
Если так, то изменится размер матрицы и тогда в конце могут появится недостающие элементы, то их что, заменять нулями?
Или заменить нули другим числом (числами)?
4х4

1 4 5 2
8 0 0 1
9 3 0 6

1 4 5 2
8 1 9 3
6 -  -  -

Можно наверно использовать второй массив.

Или я может неправильно понимаю суть.
А что за метод пузырька, я о нем слышал, но конкретно не знаю, что это.

PM MAIL   Вверх
SpiLLeR
Дата 21.3.2007, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 21.3.2007

Репутация: нет
Всего: нет



Все 0 надо удалить из матрицы, т.е. она изменит свой размер. Еще интересно как вычислить размер новой матрицы. Все это надо еще реализовать через процедуры и функции.

Пузырёк - это такой алгоритм, который просматривает весь массив сравнивания между собой два рядом стоящих элемента.
PM MAIL   Вверх
MBo
Дата 21.3.2007, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 10.6.2002

Репутация: нет
Всего: 18



Второй массив не нужен. Вот пример для одномерного массива A

Код

Last := 0;
for i := 0 to High(A) do
  if A[i] <> 0 then begin
    A[Last] := A[i];
    Inc(Last);
  end;

PM MAIL   Вверх
SpiLLeR
Дата 22.3.2007, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 21.3.2007

Репутация: нет
Всего: нет



Спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0409 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.