Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
FREYfMI
2 / 2 / 2
Регистрация: 17.10.2014
Сообщений: 111
#1

Найти общие элементы n множеств - Turbo Pascal

14.04.2015, 19:47. Просмотров 468. Ответов 6
Метки нет (Все метки)

Нужно Дано n множеств. Которые созданы из элементов массива С. Найти их общие элементы.

Если числа что записаны в множестве есть в массиве С то что бы программа вывела мне общие элементы. Прошу помочь. Завтра надо сдавать.
С массивом, не работает правильно.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
type
  M = set of char;
 
var
  a: array[1..255] of M;
  buf: M;
  n, i, j: integer;
  c: String;
  {}
  t,z: integer;
  x: array [1..1000] of char;
 
begin
  writeln('Введите количество элеметов массива С: ');
  readln(t);
  for i := 1 to t do 
  begin
    write('c[', i, ']=');
    readln(x[i]);
  end;
writeln('Количество множеств: ');
  readln(n);
  for i := 1 to n do 
  begin
    writeln('Введите элементы множествa [', i, ']= ');
    readln(c);
 for j := 1 to length(c) do
      a[i] := a[i] + [c[j]];
  end;
 
    if x[i] in a[i] then begin
    for i:=1 to n do begin
    buf := a[1];
    for z:= 2 to n do
    
    buf := buf * a[i];
    end;
    
    writeln('Resultat: ', buf); end
    else
write('error');
 
end.



Работает без массива С
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
type
  M = set of char;
 
var
  a: array[1..255] of M;
  buf: M;
  n, i, j: integer;
  c: String;
 
begin
  writeln('Количество множеств: ');
  readln(n);
  for i := 1 to n do 
  begin
    writeln('Введите элементы множествa [', i, ']= ');
    readln(c);
    for j := 1 to length(c) do
      a[i] := a[i] + [c[j]];
  end;
  
  buf := a[1];
  for i := 2 to n do
    buf := buf * a[i];
  
  writeln('Resultat: ',buf);
  
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2015, 19:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти общие элементы n множеств (Turbo Pascal):

Найти общие элементы у n множеств
Дано n множеств. Набор элементов из которых можно создать множества записаны в...

Найти элементы, общие для всех множеств
Дано n множеств, набор элементов с которых можно создать множества записаные в...

Вывести на экран все общие и разные элементы двух множеств
написать программу на языке TP 7.0: Дано множества А и В, елементы которых...

Найти общие элементы массивов и вывести на экран в в порядке возрастания
В общем описание программки: даны два массива, нужно найти их общие элементы и...

Записать в 3-й файл общие элементы типизированных файлов
Даны 2 файла. Записать в 3-й файл их общие элементы.

Есть ли у множеств совместные элементы
Заданы множества элементов с базовым типом CHAR: A=,B=.Есть ли у них совместные...

6
FREYfMI
2 / 2 / 2
Регистрация: 17.10.2014
Сообщений: 111
21.04.2015, 19:37  [ТС] #2
Апаю тему.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
type
  M = set of char;
 
var
  a: array[1..255] of M;
  buf: M;
  n, i, j: integer;
  c: String;
  {}
  t,z: integer;
  x: array [1..1000] of char;
 
begin
  writeln('Введите количество элеметов массива С: ');
  readln(t);
  for i := 1 to t do 
  begin
    write('c[', i, ']=');
    readln(x[i]);
  end;
writeln('Количество множеств: ');
  readln(n);
  for i := 1 to n do 
  begin
    writeln('Введите элементы множествa [', i, ']= ');
    readln(c);
 for j := 1 to length(c) do
      a[i] := a[i] + [c[j]];
  end;
 
{    if x[i] in a[i] then begin 
    for i:=1 to n do begin} //тут нужно правильно все написать. Или другим способом
    buf := a[1];
    for z:= 2 to n do
    
    buf := buf * a[i];
    end;
    
    writeln('Resultat: ', buf); end
    else
write('error');
 
end.
Программа которая ищет общие элементы n множеств. Множества создаются из элементов из массива С.
Я не могу сделать проверку чисел множеств на наличии в массиве С. Кто знает помогите, завтра нужно сдать.
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
3755 / 2452 / 2034
Регистрация: 22.11.2013
Сообщений: 6,821
21.04.2015, 20:14 #3
Если хотите воспользоваться встроенными в язык множествами, то нужно учесть, что
1) в Turbo Pascal множество может состоять не более чем из 256 элементов, сделайте массив C не более чем из 256 элементов, со значениями от 0 до 255:
2) с учетом (1) легко вместо массива C использовать аналогичное множество C: type M=set of Byte;
3) промежуточные результаты хранить необязательно.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
type
  M = set of Byte;
procedure ReadSet(var s: M);
var e: Integer;
begin
  Write('Вводите элементы, окончание -1: ');
  s:=[];
  repeat
    Read(e);
    if e<0 then Break
    else if e <=255 then Include(s,e);
  until False;
  ReadLn;
end;
 
var
  c, t, r: M;
  n: Integer;
begin
  WriteLn('Введите массив C'); ReadSet(c);
  Write('Введите количество множеств: '); ReadLn(n);
  r:=c;
  for n:=1 to n do begin
    WriteLn('Введите множество ',n); ReadSet(t);
    r:=r*t;
  end;
  WriteLn('Общие элементы множеств, присутствующие в массиве C:');
  for n:=0 to 255 do if i in r then Write(' ',i); WriteLn;
end.
0
FREYfMI
2 / 2 / 2
Регистрация: 17.10.2014
Сообщений: 111
21.04.2015, 20:24  [ТС] #4
bormant,
Что-то с Вашим кодом не то!
Я еще не разобрался и сам исправить не могу. Почему нельзя переписать мой код? Он уже работает и нужно правильно написать проверку поэлементно и сравнивать
0
Миниатюры
Найти общие элементы n множеств  
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
3755 / 2452 / 2034
Регистрация: 22.11.2013
Сообщений: 6,821
22.04.2015, 13:04 #5
В 28 строке опечатка, должно быть:
Pascal
28
  for n:=0 to 255 do if n in r then Write(' ',n); WriteLn;
Прогон:
Код
Введите массив C
Вводите элементы, окончание -1: 1 2 3 4 5 6 7 8 9 -1
Введите количество множеств: 3
Введите множество 1
Вводите элементы, окончание -1: 8 2 4 5 6 1 -1
Введите множество 2
Вводите элементы, окончание -1: 3 2 1 6 7 -1
Введите множество 3
Вводите элементы, окончание -1: 3 4 2 1 -1
Общие элементы множеств, присутствующие в массиве C:
 1 2
0
FREYfMI
2 / 2 / 2
Регистрация: 17.10.2014
Сообщений: 111
27.04.2015, 12:36  [ТС] #6
bormant, почему именно -1? и как ?
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
3755 / 2452 / 2034
Регистрация: 22.11.2013
Сообщений: 6,821
27.04.2015, 13:20 #7
Цитата Сообщение от FREYfMI Посмотреть сообщение
почему именно -1?
не нравится -1, можно вводить до, скажем, конца строки:
Pascal
1
2
3
4
5
6
7
8
9
10
11
procedure ReadSet(var s: M);
var e: Integer;
begin
  Write('Введите элементы в одну строку: ');
  s:=[];
  while not SeekEOLn do begin
    Read(e);
    if (e>=0) and (e <=255) then Include(s,e);
  end;
  ReadLn;
end;
Цитата Сообщение от FREYfMI Посмотреть сообщение
и как ?
выше написано, как.
0
27.04.2015, 13:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2015, 13:20
Привет! Вот еще темы с решениями:

Пусть A={b, o}. Перечислите элементы множеств A3 и A4
Пусть A={b, o}. Перечислите элементы множеств A3 и A4.

Множества. Вывести на печать все элементы этих множеств
ЦЕЛЬ РАБОТЫ. Освоение приемов объявления и использование структуры данных...

Дано N множеств. Определить элементы, которые существуют во всех множествах
Дано N множеств. Определить элементы, которые существуют во всех множествах....

Найти все общие делители чисел
Дано два целие числа m,n.Найти все общие делители этих чисел.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru