Помощь - Поиск - Пользователи - Календарь
Полная версия: Паскаль АВС множества.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
swe-4a
Не могу составить программу вариантов ни каких!!! Все что пробовала написать компилирует с кучей ошибок о несовместимости типов. Помогите составить программу, пожайлуста!
Множества букв заполнены следующим образом: множество 1-цифрами; множество 2 – знаками препинания; множество D3 – буквами. Выполнить операции объединения, разности, пересечения.
TarasBer
> Все что пробовала написать

А ты покажи сюда, мы скажем, как надо сделать, чтобы скомпилировалось.
Lapp
Цитата(swe-4a @ 8.02.2011 13:04) *
Все что пробовала написать кампилирует с кучей ошибок о несовместимости типов.

Показывай.
swe-4a
Цитата(Lapp @ 8.02.2011 13:17) *
Показывай.
вот этот позор...
program prim;
var
dr:d;
d1: Set of real;// chislo
d2: Set of char;//simvol
d3: Set of string;// bukva
Begin
dr:=[ ];
d1:=[2,4,6,8,1,2,0,9];
d2:=['#',')','(','@','%','!'];
d3:=['a','k','w','g','s'];
dr:=d1+d2;
dr:=dr+d3;
dr:=dr-d2;
dr:=dr*d1;
Writeln ('obedinenie');
readln(dr);
Writeln ('raznost');
readln(dr);
Writeln ('peresechenie');
readln(dr);
end.
TarasBer
> d1: Set of real;// chislo
> d2: Set of char;//simvol
> d3: Set of string;// bukva

Ошибка компиляции тут, да?

> Множества букв заполнены следующим образом

Значит надо работать только с множествами букв.

d1, d2, d3: set of char;

Одного типа, иначе объединять и пересекать нельзя.

> множество 1-цифрами; множество 2 – знаками препинания; множество D3 – буквами

d1 := ['0' .. '9'];
d2 := ['.', ',', '''', '"', ';'];
d3 := ['A' .. 'Z', 'a' .. 'z'];

А дальше так же делаешь.
swe-4a
Цитата(TarasBer @ 8.02.2011 14:28) *

> d1: Set of real;// chislo
> d2: Set of char;//simvol
> d3: Set of string;// bukva

Ошибка компиляции тут, да?

> Множества букв заполнены следующим образом

Значит надо работать только с множествами букв.

d1, d2, d3: set of char;

Одного типа, иначе объединять и пересекать нельзя.

> множество 1-цифрами; множество 2 – знаками препинания; множество D3 – буквами

d1 := ['0' .. '9'];
d2 := ['.', ',', '''', '"', ';'];
d3 := ['A' .. 'Z', 'a' .. 'z'];

А дальше так же делаешь.
все равно не то(((

program prim;

type d=set of char;
var
dr,d1, d2, d3:d;
Begin
d:=[ ];
d1 := ['0' .. '9'];
d2 := ['.', ',', '''', '"', ';'];
d3 := ['A' .. 'Z', 'a' .. 'z'];
dr:=d1+d2;
dr:=dr+d3;
dr:=dr-d2;
dr:=dr*d1;
Writeln ('obedinenie');
readln(dr);
Writeln ('raznost');
readln(dr);
Writeln ('peresechenie');
readln(dr);
end.
volvo
Что "не то"? То, что ты пытаешься зачем--то СЧИТАТЬ dr после того, как его заполнила? Не то, не надо этого делать. Вывести? По одному элементу (от char(0) до char (255)) проверяй на вхождение, сразу множества не выводятся...
TarasBer
Говори хотя бы, на какой строчке ошибка, а то угадывать тяжело.

>Writeln ('obedinenie');
>readln(dr);
>Writeln ('raznost');
>readln(dr);
>Writeln ('peresechenie');
>readln(dr);

Ошибка тут?
Ну хотя бы так сделай:

for c := #0 to #255 do if c in dr then write('''', c, ''', ');
swe-4a


program prim;

type d=set of char;
var
dr,d1, d2, d3:d;
Begin
d:=[ ];
// первая ошибка здесь, пишет "ожидалась переменная"
d1 := ['0' .. '9'];
d2 := ['.', ',', '''', '"', ';'];
d3 := ['A' .. 'Z', 'a' .. 'z'];
dr:=d1+d2;
dr:=dr+d3;
dr:=dr-d2;
dr:=dr*d1;
Writeln ('obedinenie');
readln(dr);
Writeln ('raznost');
readln(dr);
Writeln ('peresechenie');
readln(dr);
end.



Вывести? По одному элементу (от char(0) до char (255)) проверяй на вхождение, сразу множества не выводятся... А как выводятся? в единственном примере учебного материала вообще вывод не показан((( может есть где в инете рассмотренный подобный пример. Но я не нашла.
TarasBer
И что ты хочешь сказать это строкой? Зачем она вообще? Убери её вообще.
swe-4a
Цитата(TarasBer @ 8.02.2011 16:32) *
И что ты хочешь сказать это строкой? Зачем она вообще? Убери её вообще.
Я ничего не хочу сказать вот пример из лекций на основании которого я должна научиться понимать как писать программы подобного содержания.

2.Операции над множествами.
Множества чисел заполнены следующим образом: множество D1- четными числами 2, 4, 6, 8; множество D2 – числами 0,1,2,3,5; множество D3 – нечетными числами 1, 3, 5, 7, 9. Выполнить операции объединения, разности, пересечения.
Программа выглядит так:
program prim;
type d=set of 0..20;
var dr,d1,d2,d3:d;
Begin
dr:=[ ];
d1:=[2,4,6,8,10,12,14,16];
d2:=[0,1,2,3,5,7];
d3:=[9,11,13,15,17,19];
dr:=d1+d2; (*объединение d1, d2,*)
dr:=dr+d3; (*объединение dr, d3,*)
dr:=dr-d2; (*разность множеств *)
dr:=dr*d1; (*пересечение множеств *)
end.
и все! как выводить результат??? хорошо убираю эту злостную строку...но как получить ответ?
volvo
Writeln ('obedinenie');
dr:=d1+d2;
dr:=dr+d3;
// Тут вывод. Как показал Тарас
Writeln ('raznost');
dr:=dr-d2;
// Опять вывод
Writeln ('peresechenie');
dr:=dr*d1;
// Снова вывод

, а то ты сначала все действия сделаешь, а потом одно и то же (результат последнего действия) три раза выведешь...
TarasBer
> вот пример из лекций
> dr:=[ ];

> d:=[ ];// первая ошибка здесь, пишет "ожидалась переменная"

Чувствуешь разницу?
swe-4a
[quote name='TarasBer' post='152812' date='8.02.2011 16:43']
> вот пример из лекций
> dr:=[ ];

> d:=[ ];// первая ошибка здесь, пишет "ожидалась переменная"

Чувствуешь разницу?
[/quote]
да..

Добавлено через 2 мин.
Ошибка тут?
Ну хотя бы так сделай:

for c := #0 to #255 do if c in dr then write('''', c, ''', ');
[/quote]

откуда берется for c := ??? это дополнительная переменная? зачем? не пойму!!
TarasBer
Да, переменную c тебе надо завести отдельно:
c: char;

Она нужна в качестве счётчика цикла, для того, чтобы перебрать все элементы множества.
swe-4a
ВОТ ТАК РАБОТАЕТ. Это правильно?
program prim;
type d=set of char;
var dr,d1,d2,d3:d;
c: char;
Begin
dr:=[ ];
d1 := ['0' .. '9'];
d2 := ['.', ',', '''', '"', ';'];
d3 := ['A' .. 'Z', 'a' .. 'z'];
Writeln ('obedinenie');
dr:=d1+d2;
dr:=dr+d3;
for c := #0 to #255 do if c in dr then write('''', c, ''', ');
Writeln ('raznost');
dr:=dr-d2;
for c := #0 to #255 do if c in dr then write('''', c, ''', ');
Writeln ('peresechenie');
dr:=dr*d1;
for c := #0 to #255 do if c in dr then write('''', c, ''', ');
end.
TarasBer
Ну вроде да. Только смысла задания я не пойму, множества же не пересекаются никак.
swe-4a
Цитата(TarasBer @ 8.02.2011 16:58) *

Да, переменную c тебе надо завести отдельно:
c: char;

Она нужна в качестве счётчика цикла, для того, чтобы перебрать все элементы множества.

да! уже до меня дошло! ОНА РАБОТАЕТ! НО откуда знать все эти тонкости простому смертному, начинающему, в двух учебниках которые есть на руках этого нет..или я просто не умею читать.....

Добавлено через 4 мин.
Цитата(TarasBer @ 8.02.2011 17:02) *

Ну вроде да. Только смысла задания я не пойму, множества же не пересекаются никак.

Спасибо огромное всем кто мне помогает! Дистанционное образование не дается мне легко((. Я тоже не поняла зачем искать пересечения в том, где его не может быть. Дальше задания еще страшней....так что я тут не последний раз. Еще раз спасибо!)))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.