Не могу составить программу вариантов ни каких!!! Все что пробовала написать компилирует с кучей ошибок о несовместимости типов. Помогите составить программу, пожайлуста! Множества букв заполнены следующим образом: множество 1-цифрами; множество 2 – знаками препинания; множество D3 – буквами. Выполнить операции объединения, разности, пересечения.
TarasBer
8.02.2011 13:15
> Все что пробовала написать
А ты покажи сюда, мы скажем, как надо сделать, чтобы скомпилировалось.
Lapp
8.02.2011 13:17
Цитата(swe-4a @ 8.02.2011 13:04)
Все что пробовала написать кампилирует с кучей ошибок о несовместимости типов.
Показывай.
swe-4a
8.02.2011 14:14
Цитата(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
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 – буквами
Что "не то"? То, что ты пытаешься зачем--то СЧИТАТЬ dr после того, как его заполнила? Не то, не надо этого делать. Вывести? По одному элементу (от char(0) до char (255)) проверяй на вхождение, сразу множества не выводятся...
TarasBer
8.02.2011 16:25
Говори хотя бы, на какой строчке ошибка, а то угадывать тяжело.
for c := #0 to #255 do if c in dr then write('''', c, ''', ');
swe-4a
8.02.2011 16:29
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
8.02.2011 16:32
И что ты хочешь сказать это строкой? Зачем она вообще? Убери её вообще.
swe-4a
8.02.2011 16:36
Цитата(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
8.02.2011 16:37
Writeln ('obedinenie'); dr:=d1+d2; dr:=dr+d3; // Тут вывод. Как показал Тарас Writeln ('raznost'); dr:=dr-d2; // Опять вывод Writeln ('peresechenie'); dr:=dr*d1; // Снова вывод
, а то ты сначала все действия сделаешь, а потом одно и то же (результат последнего действия) три раза выведешь...
TarasBer
8.02.2011 16:43
> вот пример из лекций > dr:=[ ];
> d:=[ ];// первая ошибка здесь, пишет "ожидалась переменная"
Чувствуешь разницу?
swe-4a
8.02.2011 16:45
[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
8.02.2011 16:58
Да, переменную c тебе надо завести отдельно: c: char;
Она нужна в качестве счётчика цикла, для того, чтобы перебрать все элементы множества.
swe-4a
8.02.2011 16:59
ВОТ ТАК РАБОТАЕТ. Это правильно?
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
8.02.2011 17:02
Ну вроде да. Только смысла задания я не пойму, множества же не пересекаются никак.
swe-4a
8.02.2011 17:05
Цитата(TarasBer @ 8.02.2011 16:58)
Да, переменную c тебе надо завести отдельно: c: char;
Она нужна в качестве счётчика цикла, для того, чтобы перебрать все элементы множества.
да! уже до меня дошло! ОНА РАБОТАЕТ! НО откуда знать все эти тонкости простому смертному, начинающему, в двух учебниках которые есть на руках этого нет..или я просто не умею читать.....
Добавлено через 4 мин.
Цитата(TarasBer @ 8.02.2011 17:02)
Ну вроде да. Только смысла задания я не пойму, множества же не пересекаются никак.
Спасибо огромное всем кто мне помогает! Дистанционное образование не дается мне легко((. Я тоже не поняла зачем искать пересечения в том, где его не может быть. Дальше задания еще страшней....так что я тут не последний раз. Еще раз спасибо!)))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.