Помощь - Поиск - Пользователи - Календарь
Полная версия: Использование множеств
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
xekzzz

Ужасно не могу решить такую лёгкую задачу (((
Помогите пожалуйста.

Даны 3 множества. Первое множество А заполнить символами латинского алфавита в интервале от a до g, второе множество В заполнить в интервале от c до m. Третье множество заполнить применив операцию пересечения двух множеств, т. е. A*B. Необходимо проверить в какое из множеств входит введенный с клавиатуры символ, а также узнать порядковый номер символа в таблице ASCII.


Теоретически понятно а вот с кодом что то туплю (((
Заполняем А
Заполняем B
Пересечение A*B
Проверяем символ, номер символа ASC II

Вот только могу символ вывести:

uses crt;
var n:integer;
x:char;
begin
clrscr;
writeln('Введите символ ->');
readln(x);
write(x);n:=ord(x); writeln('->',n);
readln(n);x:=chr(n);writeln('->',x);
end.

.
compiler
у меня получилось так:
type
TL = set of 'a'..'z';

var
A, B, C : Tl;
i : integer;
ch : char;
begin
A := [];
B := [];
for i := ord('a') to ord('g') do
A := A + [chr(i)];

for i := ord('c') to ord('m') do
B := B+[chr(i)];

C := A*B;
{ print }
for i :=ord('a') to ord('z') do
if chr(i) in A then write(chr(i):3);
writeln;
for i := ord('a') to ord('z') do
if chr(i) in B then write(chr(i):3);
writeln;
for i := ord('a') to ord('z') do
if chr(i) in C then write(chr(i):3);
writeln;
{ /print }

readln(ch);
if ch in C then writeln('ch in A, B, C') else
if ch in A then writeln('ch in A') else
if ch in B then writeln('ch in B') else
writeln('ch doesn''t found');
end.
разбирайся..
ps
print добавлено для наглядности..
xekzzz
Спасибо огромное compiler!!! буду разбираться!!!
volvo
compiler,
не совсем корректно получается... Символ может присутствовать и в двух множествах одновременно, и даже во всех трех (скажем, символ 'd'), может не присутствовать ни в одном, а ты почему-то ограничиваешь его местонахождение каким-то множеством... Добавить бы "не присутствует нигде" надо...
compiler
Цитата(volvo @ 19.05.2008 14:13) *

compiler,
не совсем корректно получается... Символ может присутствовать и в двух множествах одновременно, и даже во всех трех (скажем, символ 'd'), может не присутствовать ни в одном, а ты почему-то ограничиваешь его местонахождение каким-то множеством... Добавить бы "не присутствует нигде" надо...

данное разветление для данной программы...
если символ есть в С, значит он есть и в А и В
если же его там нет значит он встречается только в А или только в В или же нигде не встречается
проверели А, если его там нет значит он либо в B либо его нет
проверели В, если же его и там нет то в множествах элемент не значится...
не нашел тестов для ДАННОЙ программы которые показали не корректность, хотя могу ошибаться... В общем случае метод, конечно же неприемлим..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.