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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с массивом, упорядочить 
:(
    Опции темы
madjaheda
Дата 20.4.2010, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Дано 2 массива А(8) и В(8), которые упорядочены по возрастанию. Вычислить количество элементов, какие совпадают в этих двух массивах и их значение. Вывести выходящие массивы и элементы, которые совпадают. Заранее спасибо!!

PM MAIL ICQ   Вверх
Romtek
Дата 20.4.2010, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Устанавливаешь позиции индексов обоих массивов на 1-й элемент. Затем в цикле WHILE сверяешь равны ли ячейки. Если да - увеличиваешь счётчик и выводишь на экран число. Затем увеличиваешь индекс в том массиве, в котором число ячейки меньше другого, и так до конца одного из массивов.
Алгоритм навскидку, не проверял.
--------------------
Romiras HomeLab - материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и пр.
PM WWW   Вверх
madjaheda
Дата 20.4.2010, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



я не очень в паскале...из своего задания знаю как упорядочить. я так понял что сначала нужно упорядочить каждый массив отдельно, а затем используя вайл сравнивать, но каким образом сравнивать не очень представляю
PM MAIL ICQ   Вверх
Romtek
Дата 20.4.2010, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

type
     TArray = array [0..9] of integer;

function VectorIntersection (A, B: TArray; size: integer; var C: TArray): integer;
     var j, k, kc : integer;
begin
     kc := 0; j := 0; k := 0;
     while (k < size) and (j < size) do
     begin
          while (A[j] = B[k]) and (k < size ) and (j < size) do
          begin
               if ((kc > 0) and (C[kc - 1] <> A[k])) {отбрасываем повторные} or (kc = 0) then
               begin
                    C[kc] := A[j];
                    inc(kc)
               end;
               inc(j); inc(k)
          end;
          if A[j] > B[k] then
               inc(k)
          else
               inc(j)
     end;
     if kc > 0 then
          VectorIntersection := kc
     else
          VectorIntersection := 0
end;

procedure PrintArray (A: TArray; size: integer);
     var k : integer;
begin
     writeln (size, ' элемент(ов) совпадает:');
     for k := 0 to size -1 do
          write (A[k]: 4);
     writeln
end;

const
     X: TArray = (-4, -3, 2, 8, 13, 13, 13, 14, 22, 25);
     {X: TArray = (-4, -3, 0, 0, 0, 0, 0, 0, 0, 23);}
     Y: TArray = (-3, 1, 1, 2, 14, 14, 17, 18, 19, 22);
var
     Z: TArray;
     c: integer;
begin
     c := VectorIntersection (X, Y, 10, Z);
     PrintArray (Z, c)
end.


Добавлено через 2 минуты и 37 секунд
Если ДАНО что массивы упорядочены, то незачем их упорядочивать заново. Условие читать внимательнее надо.
--------------------
Romiras HomeLab - материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и пр.
PM WWW   Вверх
madjaheda
Дата 20.4.2010, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



если можно растолковать насчет функции...а то не очень понятен такой ввод

Это сообщение отредактировал(а) madjaheda - 20.4.2010, 23:56
PM MAIL ICQ   Вверх
Romtek
Дата 21.4.2010, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Массивы А и Б даются упорядоченными. Массив Ц должен содержать на выходе общие из обоих массивов элементы.

VectorIntersection - это функция получения множества при пересечении двух векторов (массивов).
Вход: А и Б
Выход: Ц и количество общих элементов

В PrintArray передаётся полученный массив Ц для вывода его на экран.
--------------------
Romiras HomeLab - материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и пр.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

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

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

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

3. Оффтопить

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

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

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


 




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


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

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