IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Паскаль АВС множества., Выполнить операции объединения, разности, пересечения с разными типами
swe-4a
сообщение 8.02.2011 13:04
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Женский

Репутация: -  0  +


Не могу составить программу вариантов ни каких!!! Все что пробовала написать компилирует с кучей ошибок о несовместимости типов. Помогите составить программу, пожайлуста!
Множества букв заполнены следующим образом: множество 1-цифрами; множество 2 – знаками препинания; множество D3 – буквами. Выполнить операции объединения, разности, пересечения.

Сообщение отредактировано: swe-4a - 8.02.2011 17:18
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 8.02.2011 13:15
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> Все что пробовала написать

А ты покажи сюда, мы скажем, как надо сделать, чтобы скомпилировалось.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 8.02.2011 13:17
Сообщение #3


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


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

Показывай.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
swe-4a
сообщение 8.02.2011 14:14
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Женский

Репутация: -  0  +


Цитата(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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 8.02.2011 14:28
Сообщение #5


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> 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'];

А дальше так же делаешь.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
swe-4a
сообщение 8.02.2011 16:20
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Женский

Репутация: -  0  +


Цитата(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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 8.02.2011 16:22
Сообщение #7


Гость






Что "не то"? То, что ты пытаешься зачем--то СЧИТАТЬ dr после того, как его заполнила? Не то, не надо этого делать. Вывести? По одному элементу (от char(0) до char (255)) проверяй на вхождение, сразу множества не выводятся...
 К началу страницы 
+ Ответить 
TarasBer
сообщение 8.02.2011 16:25
Сообщение #8


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Говори хотя бы, на какой строчке ошибка, а то угадывать тяжело.

>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, ''', ');


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
swe-4a
сообщение 8.02.2011 16:29
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Женский

Репутация: -  0  +




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)) проверяй на вхождение, сразу множества не выводятся... А как выводятся? в единственном примере учебного материала вообще вывод не показан((( может есть где в инете рассмотренный подобный пример. Но я не нашла.


Сообщение отредактировано: swe-4a - 8.02.2011 16:32
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 8.02.2011 16:32
Сообщение #10


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


И что ты хочешь сказать это строкой? Зачем она вообще? Убери её вообще.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
swe-4a
сообщение 8.02.2011 16:36
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Женский

Репутация: -  0  +


Цитата(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.
и все! как выводить результат??? хорошо убираю эту злостную строку...но как получить ответ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 8.02.2011 16:37
Сообщение #12


Гость






Writeln ('obedinenie');
dr:=d1+d2;
dr:=dr+d3;
// Тут вывод. Как показал Тарас
Writeln ('raznost');
dr:=dr-d2;
// Опять вывод
Writeln ('peresechenie');
dr:=dr*d1;
// Снова вывод

, а то ты сначала все действия сделаешь, а потом одно и то же (результат последнего действия) три раза выведешь...
 К началу страницы 
+ Ответить 
TarasBer
сообщение 8.02.2011 16:43
Сообщение #13


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> вот пример из лекций
> dr:=[ ];

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

Чувствуешь разницу?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
swe-4a
сообщение 8.02.2011 16:45
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Женский

Репутация: -  0  +


[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 := ??? это дополнительная переменная? зачем? не пойму!!

Сообщение отредактировано: swe-4a - 8.02.2011 16:49
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 8.02.2011 16:58
Сообщение #15


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


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

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


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
swe-4a
сообщение 8.02.2011 16:59
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Женский

Репутация: -  0  +


ВОТ ТАК РАБОТАЕТ. Это правильно?
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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 8.02.2011 17:02
Сообщение #17


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


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


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
swe-4a
сообщение 8.02.2011 17:05
Сообщение #18


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Женский

Репутация: -  0  +


Цитата(TarasBer @ 8.02.2011 16:58) *

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

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

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

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

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

Спасибо огромное всем кто мне помогает! Дистанционное образование не дается мне легко((. Я тоже не поняла зачем искать пересечения в том, где его не может быть. Дальше задания еще страшней....так что я тут не последний раз. Еще раз спасибо!)))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 28.04.2024 13:29
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"