Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2014, 23:38   #1
Mixasnt
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 54
По умолчанию Поиск одинаковых элементов в 2-ух массивах

Есть задача: "Сформировать массив, из повторяющихся элементов 2-ух массивов"
Суть алгоритма поиска понимаю, но вот с исполнением что-то не то.

Код:
//заполним массивы
for i := 1 to 12 do
begin
 a[i]:=strtoint(smemo1.Lines[i-1]);
 b[i]:=strtoint(smemo2.Lines[i-1]);
end;
 
 
k:=1;
for i := 1 to 12 do
begin
  for j := 1 to 12 do
  begin
    if a[i]=b[j] then
    begin
      s[k]:=a[i];
      inc(k);
    end;
  end;
end;

Последний раз редактировалось Mixasnt; 13.01.2014 в 23:43.
Mixasnt вне форума Ответить с цитированием
Старый 14.01.2014, 04:01   #2
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

1) Вам нужно также проверять на принадлежность элементов массива A массиву S.
Ведь возможна такая ситуация, что мы уже сверяли подобное значение
Не будь подобного сравнения, мы просто будем заносить в массив S повторяющиеся элементы.
Что у Вас собственно сейчас и происходит.
2) После нахождения элемента массива A равному одному из элементов массива B - прекращайте дальнейший поиск, в этом нет никакого смысла.
Базиля вне форума Ответить с цитированием
Старый 14.01.2014, 08:56   #3
Mixasnt
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 54
По умолчанию

Да, Вы правы, нужно ввести дополнительное условие.
Суть задачи - сформировать массив из повторяющихся элементов, поэтому предотвращать поиск - не подходит под условие.
Проблема в том, что в массив s, при прохождении циклов заносится всего 1 переменная, а повторов гораздо больше, не могу понять в чем ошибка.
Самое интересное, что если вместо "команды записать в массив s" я пишу showmessage(inttostr(a[i]) - все повторяющиеся элементы выводятся корректно.
Почему так, я не знаю.
Код:
//массивы описаны так:
Var
A,s,b: array [1..12] of integer;

Последний раз редактировалось Mixasnt; 14.01.2014 в 08:57. Причина: Опечатка
Mixasnt вне форума Ответить с цитированием
Старый 14.01.2014, 17:58   #4
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Хорошо, если нужно именно ВСЕ повторяющиеся элементы записывать, тогда то, о чем я писал, попросту отпадает.

Тогда размерность массива s должна равняться размерности массивов a и b вместе взятых.
Цитата:
Самое интересное, что если вместо "команды записать в массив s" я пишу showmessage(inttostr(a[i]) - все повторяющиеся элементы выводятся корректно.
Почему так, я не знаю.
Очень интересно....
Можете приложить проект?
Думаю так быстрее справимся с проблемой.
Базиля вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Pascal] Нахождение одинаковых элементов в 2-х одномерных числовых массивах just4smth Помощь студентам 11 25.11.2012 19:21
Два разных файла. Поиск одинаковых элементов и запись значения ячейки. QwerG Microsoft Office Excel 7 10.10.2012 12:21
поиск серии одинаковых элементов строк матрицы Termit1995 Помощь студентам 1 20.05.2010 06:44
поиск одинаковых элементов одномерного массива и их количества MyQwErTy Помощь студентам 2 28.02.2009 17:17
Поиск одинаковых элементов Expected } Общие вопросы C/C++ 0 08.01.2009 15:54