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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2014, 13:18   #1
Adelia
Пользователь
 
Регистрация: 24.08.2014
Сообщений: 15
По умолчанию Пересечение множеств

Всем,программистами любителям,добрый день.
Прошу помогите разобраться с задачей.
Вот условия:
Даны два неупорядоченных набора целых чисел (может быть, с повторениями). Выдать без повторений в порядке возрастания все те числа, которые встречаются в обоих наборах.
Пример
INPUT.TXT
11 6
2 4 6 8 10 12 10 8 6 4 2
3 6 9 12 15 18

OUTPUT.TXT
6 12
Я две этих набора загнала в один массив и нашла элементы входящие и в тот и в другой набор(один массив чтобы ускорить работу и сократить память),но вот незадача,он выводит их с повтором.
Прошу помогите.

вот попытка моего решения:
Код:
var a,N,M:integer;i,k,:byte;
    f:text;
    b:array [1..100] of integer;
begin
assign(f,'c:\Users\Аделя\Desktop\Input.txt');
reset(f);
read(f,N,M);
readln(f);

for i:=1 to N do
 begin
   read(f,a);
   b[i]:=a;
 end;
readln(f);{перехожу на другую строчку к 2 набору}
for i:=n+1 to N+M do
 begin
   read(f,a);
   b[i]:=a;
 end;

assign(f,'c:\Users\Аделя\Desktop\Output.txt');
rewrite(f);

for i:=1 to N do{здесь я как бы разграничила два набора}
  for k:=n+1 to m+n do
    if (b[i]=b[k]) then write(f,b[i],' ');

close(f); 
end.
Заранее всех благодарю за помощь))
Adelia вне форума Ответить с цитированием
Старый 13.11.2014, 16:28   #2
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,777
По умолчанию

Задача на множества и пересечение множеств, как полагаю из заголовка темы. Множество обозначается в Паскале конструкцией set of, а пересечение множеств, оператором * (звездочка). Дерзайте.
Vapaamies вне форума Ответить с цитированием
Старый 13.11.2014, 19:16   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Сообщение от Vapaamies Посмотреть сообщение
Задача на множества и пересечение множеств, как полагаю из заголовка темы. Множество обозначается в Паскале конструкцией set of, а пересечение множеств, оператором * (звездочка). Дерзайте.
а вывести на экран элементов множества можно с помощью оператора in.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 15.11.2014, 21:38   #4
Adelia
Пользователь
 
Регистрация: 24.08.2014
Сообщений: 15
По умолчанию

извините,а не подскажете ,как считать числа с файла и засунуть их в множество?
Adelia вне форума Ответить с цитированием
Старый 15.11.2014, 21:39   #5
Adelia
Пользователь
 
Регистрация: 24.08.2014
Сообщений: 15
По умолчанию

попыталась сделать как вы посоветовали ,я раньше с множествами не сталкивалась,поэтому коряво немного.
Код:
var a,N,M:integer;i,k:byte;
    f:text;
    c,b,z:set of byte;
begin
assign(f,'c:\Users\Аделя\Desktop\Input.txt');
reset(f);
read(f,N,M);
readln(f);

for i:=1 to N do
 begin
   read(f,a);
   b:=b+a;
 end;
readln(f);
for i:=1 to M do
 begin
   read(f,a);
   c:=c+a;
 end;

assign(f,'c:\Users\Аделя\Desktop\Output.txt');
rewrite(f);
z:=c*b;
for i:=1 to 255 do
if i in z then write(f,i,' ');
end.
Adelia вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пересечение множеств Mirazhana Общие вопросы C/C++ 8 07.01.2013 21:50
Пересечение множеств iNsomNia7 Паскаль, Turbo Pascal, PascalABC.NET 1 19.11.2012 14:38
Пересечение множеств, паскаль Bellatryx Паскаль, Turbo Pascal, PascalABC.NET 2 16.04.2012 09:44
Пересечение множеств. С++ Демик Помощь студентам 4 13.03.2011 18:04
пересечение двух множеств Олежек Фриланс 7 10.03.2010 18:46