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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2017, 11:35   #1
ziker99
Новичок
Джуниор
 
Регистрация: 02.03.2017
Сообщений: 1
По умолчанию Образование массива из 2х заданных

Дана задача:
Даны 2 набора чисел М1 и М2. Вывести М3 набор, имеющий только общие элементы М1 и М2.
Пример
М1 - 3 1 3 4 2 4 12 11 9 3
М2 - 4 15 3 1 15 1 12 8 8 9

Пример набора М3
4 3 1 12 9


Как я понял, надо, чтобы программа каждый элемент 1-го массива проверяла со всеми элементами 2-го массива при этом записывая их куда-нибудь, думаю, что должно что-то вроде такого:

procedure TForm1.Button1Click(Sender: TObject);
var
m1,m2: string;
i,k,g: integer;
begin
k:=1;
m1:= edit1.text;
m2:= edit2.text;
if length(m1)>length(m2) then g:=length(m1) else g:=length(m2);
for i:=1 to g do
if m1[k]=m2[i] then begin
edit3.Text:=edit3.text+m1[k];
inc(k);
end;
end;

Последний раз редактировалось ziker99; 02.03.2017 в 11:37.
ziker99 вне форума Ответить с цитированием
Старый 02.03.2017, 12:03   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
const
 a:array[1..10] of integer = (3,1,3,4,2,4,12,11,9,3);
 b:array[1..10] of integer = (4,15,3,1,15,1,12,8,8,9);
var
 c,d:array [1..11] of integer;
 i,j,k,m:byte;
 f:boolean;
begin
 m:=0;
 for i:=1 to 10 do
 begin
     for j:=1 to 10 do
     begin
          f:=true;
          if(a[i]=b[j]) then
          begin
           for k:=1 to m do
            if c[k]=a[i] then f:=false;
          if f=true then
           begin
             inc(m); c[m]:=a[i];
           end;
          end;
     end;
 end;
 for i:=1 to m do write(c[i]:4);
readln;
end.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 02.03.2017, 12:08   #3
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Попробуй сделать "цикл в цикле":
Код:
for k:=1 to length(m1) do
      for i:=1 to length(m2) do
          if m1[k]=m2[i]
тогда для каждого элемента "m1[k]" будет сверять с элементами массива "m2"... Но возникнет проблема с повторениями (для твоего примера "4")... Хотя, чтобы обойти эту сложность, нужно (перед записью очередного элемента в М3) нужно проверить не присутствует ли уже 4-ка в "М3"... Что-то вроде такого:
Код:
for k:=1 to length(m1) do
      for i:=1 to length(m2) do
          if m1[k]=m2[i] 
                | bool flag=false
                | for t:=1 to N_M3 do
                |        if m1[k]=m2[i]=m3[t]
                |             bool flag=true
                |  if flag==true
                |        N_M3=N_M3+1
                |        m3[N_M3]=m1[k]
пробуй... там посмотрим.
ura_111 вне форума Ответить с цитированием
Старый 02.03.2017, 12:10   #4
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Пока писал,
Aleksandr H. ответил.
ura_111 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделить из заданных точек вершины квадрата, содержащего максимальное число заданных точек Kef1r C# (си шарп) 8 12.01.2017 16:00
[Delphi]: Сортировка массива, состоящего из максимальных элементов заданных матриц hozer Помощь студентам 2 05.12.2016 23:32
Дистанционное образование ds.Dante Свободное общение 36 04.03.2014 22:00
Образование [iT]aNYBis Свободное общение 19 21.10.2010 20:33
Заочное образование хим Свободное общение 5 16.04.2010 04:20