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

0 голосов
36 просмотров

Подскажите пожалуйста что я делаю не так если можете помогите.
Сформировать три множества X1, X2, X3, содержащие целые числа из диапазона 1 … 100 . Мощность каждого множества равна 5. Значения элементов исходных множеств ввести с клавиатуры.
Сформировать новое множество Y=(X2∩X3)/((X1∩X2) U(X1∩X3)), проверить принадлежность множеству чисел 20, 30. Определить мощность полученного множества и вывести его на экран.

Program ex1;
var x1,x2,x3,y,p: set of 1..100;
s,a,i:integer;
begin
x1:=[ ]; x2:=[ ]; x3:=[ ];
writeln('Вв. 5 элементов множества x1 через Enter:');
For i:=1 to 5 do
begin
readln(a);
x1:=x1+[a];
end;
Writeln('Вв. 5 элементов множества x2 через Enter:');
For i:=1 to 5 do
begin
readln(a);
x2:=x2+[a];
end;
Writeln('Вв. 5 элементов множества x3 через Enter:');
For i:=1 to 5 do
begin
readln(a);
x3:=x3+[a];
end;
Writeln;
y:=(x2*x3)-((x1*x2)+(x1*x3));
P:=[ ]; S:=0;
For i:=1 to 100 do
if (i in y) and (20 and 30 in y) then
begin
S:=s+1;
P:=P+[i];
end;
for i:=1 to 100 do
if (i in P) then Write(i);
Writeln('Мощность P:',S);
Readln;
end.


Информатика (53 баллов) | 36 просмотров
0

В общем, программа вполне работоспособна, только нужно заменить две строки: строку if (i in y) and (20 and 30 in y) then убрать, вместо нее после строки P:=P+[i]; добавить строку if (i=20) or (i=30) then writeln('элемент ',i,' входит в множество'); в конце программы в строке if (i in P) then write(i); write(i); заменить на write(i,' '); а то вывод у Вас сольется. На тестовой задаче x1={20,26,34,45,58} , x2={20,26,45,30,92} , x3={20,45,15,30,92} должны получить P: 30, 92 и мощность Р =2

Дан 1 ответ
0 голосов

Решение в прикрепленном файле.

(9.7k баллов)
0

Мощность все равно равняется 0 ((

0

Решение в прикрепленном файле - программа проверена на тестовой задаче, приведенной в предыдущем комментарии. А строку Вы поменяли? Строку if (i in y) and (20 and 30 in y) then .. на строку if (i in y), иначе, вы ставите условие, что оба элемента 20 и 30 должны принадлежать множеству, что не правильно, по условию задачи. В условии сказано, что необходимо проверить, входят ли 20 и 30 в множество.

0

У Вас какой транслятор? Турбо паскаль или Паскаль АВС? В прикрепленном файле под Паскаль АВС. Я могу Вам переслать Вашу подправленную программу под Турбо паскаль. Но так как в Вашем вопросе поле для ответа уже не корректируется, а в поле для комментариев текст программы не поместится, то задайте вопрос снова и я Вам файл прикреплю в ответе.

0

нет abc

0

мощность вывод 100

0

Проверьте операторы в конце программы y:=(x2*x3)-((x1*x2)+(x1*x3));
P:=[ ]; S:=0;
For i:=1 to 100 do
if (i in y) then
begin
S:=s+1;
P:=P+[i];
if (i=20) or (i=30) then
writeln('элемент ',i,' содержится в Р');
end;
for i:=1 to 100 do
if (i in P) then Write(i,' ');
Writeln('Мощность P:',S);
Readln;
end.