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

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

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

> Работа с множествами
rov4
сообщение 12.01.2005 12:31
Сообщение #1


Новичок
*

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

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


Привет всем!
Обращаюсь к вам за помощью, так как самой выполнить задания, видимо не дано... sad.gif
Необходимо написать программы к следующим заданиям:
1. Дана непустая последовательность символов. Требуется построить и напечатать множество, элементами которого являются встречающиеся в последовательности: цифры от ‘0’ до ‘9’.
2. Постановка задачи: Задан список объектов, включающий в зависимости от варианта названия ЭВМ или видов спорта. Известно, что в каждом институте имеется определенный набор вычислительных машин, а учащиеся каждой группы занимаются определенными видами спорта. Необходимо задать конкретные наборы ЭВМ (перечни видов спорта) для каждого института (каждой группы). Количество институтов(групп) указано в варианте.
Введя исходные данные, необходимо построить и распечатать множество, удовлетворяющее указанному в варианте условию.
Вариант задания: Задано множество вычислительных машин, которыми может быть обеспечен институт: IBM-386, IBM-486, Pentium, Macintosh, APPLE, ACER. Известен набор машин, имеющихся в каждом институте. Количество институтов (N) указано в варианте:
требуется построить и распечатать множество, включающее в себя вычислительные машины:
• которыми обеспечены все институты (N=10).
• которые имеют хотя бы один институт.
• которых нет ни водном институте.

Пожалуйста, помогите, чем сможете.
Заранее спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 21.02.2005 11:36
Сообщение #2


Гость






blink.gif Что это? Я про задание №2 ... А можно несколько вопросов? В скольки местах программы нужно производить изменения, если изменятся входные данные для программы?
Случай 1: изменилось количество институтов (увеличилось на N). Нужно добавить как минимум 2*N переменных, плюс к этому - изменить параметры, передаваемые в OutPut ... Вероятность ошибки - высокая (достаточно забыть изменить в одном месте и результат уже будет неверным)
Случай 2: изменилось количество типов компьютеров (например, добавился еще PentiumIV). Нужно не забыть изменить OutPut, иначе новый тип компьютеров просто не будет печататься ... Вероятность ошибки - довольно высокая, если добавляется несколько типов, можно что-то упустить ...

А если делать вот так:
Код

Uses Crt;
Type
 Comps = (i386, i486, Apple, Pentium, Acer, Macintosh);
 TComps = set of Comps;

Const
 names: array[Comps] of string =
   ('i386', 'i486', 'Apple', 'Pentium', 'Acer', 'Macintosh');
 All_comps : TComps = [i386, i486, Apple, Pentium, Acer, Macintosh];
 maxInst = 10;
 Inst: array[1 .. maxInst] of TComps =
   ( [i386,Acer, Pentium],
     [Acer, Pentium],
     [Apple, Pentium ],
     [Pentium, Acer, i486],
     [i386,Acer, Pentium],
     [Acer, Pentium],
     [Apple, Pentium ],
     [Pentium, Acer, i486],
     [Apple, Pentium ],
     [Pentium, Acer, i486] );

Var
 one, all: TComps;

Procedure OutPut(s : TComps);
 Var i: Comps;
 Begin
   For i := low(Comps) To High(Comps) Do
     If i in s then write(names[i] + ' ');
   Writeln
 End;

Var
 i: integer;

Begin
 ClrScr;
 one := []; all := all_comps;
 For i := 1 To maxInst Do
   begin
     one := one + Inst[i];
     all := all * inst[i];
   end;

 Write('машины, которыми обеспечены все институты:');
 output(all);

 Write('машины, которые имеет хотя бы один институт:');
 OutPut(one);

 Write('машины, которых нет ни в одном институте:');
 OutPut(All_Comps - one);

 While not KeyPressed Do
end.

Что изменилось? Случаи те же:
1. (изменилось количество институтов). Изменяем maxInst. Теперь, пока необходимое количество данных не будет добавлено в массив (единственный !!!), программа просто не скомпилируется... Двлее в программе ничего менять не нужно...
2. (изменилось количество типов компьютеров). Добавляем новый тип в Comps... Аналогично, пока все необходимые данные не будут откорректированы, программа не запустится.

Вероятность ошибочных результатов = 0 ... ;)
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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