Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2010, 23:47   #1
Intersap
Пользователь
 
Регистрация: 25.03.2010
Сообщений: 23
По умолчанию вывести множество на экран

Дана задача:
В группе (Group) есть 25 студентов с фамилиями Name. Шесть дней на протяжении недели фиксируется, кто из студентов отсутсвовал (результат присваивается переменной Vidsutni[..]). Определить студентов, которые ни одного раза на этой недели не присутсвували.

Мой код:
Код:
Program Propuski;
uses crt;
type
  WorkDay = (Ponedilok,Vivtorok,Sereda,Chetver,Pyatnytsa,Sybota);
  Name = (Bogdanov,Borisenko,Voloshyn,Vasilenko,Danilov,
          Denisenko,Gdanov,Zelinskiy,Zaporojetc,Ivanov,
          Karpenko,Kovalenko,Kolomietc,Kravchenko,Kyrpa,
          Lebedyev,Lemeshko,Maslova,Makarov,Naumenko,
          Ostapenko,Pavlenko,Petrov,Stepanov,Tupolev);
  Group = set of Name;
var
  Vidsutni: array[WorkDay] of Group;
  Progul: set of Name;
Begin
  clrscr;
  Vidsutni[Ponedilok]:= [Denisenko,Kolomietc,Naumenko,Tupolev];
  Vidsutni[Vivtorok]:= [Karpenko,Kolomietc,Makarov,Naumenko,Stepanov];
  Vidsutni[Sereda]:= [Zelinskiy,Zaporojetc,Kolomietc,Kovalenko];
  Vidsutni[Chetver]:= [Borisenko,Voloshyn,Vasilenko,Kolomietc];
  Vidsutni[Pyatnytsa]:= [Kolomietc,Petrov,Stepanov,Kovalenko];
  Vidsutni[Sybota]:= [Lebedyev,Kolomietc,Lemeshko,Kovalenko];
  Progul:=Vidsutni[Ponedilok]*Vidsutni[Vivtorok]*Vidsutni[Sereda]*Vidsutni[Chetver]*Vidsutni[Pyatnytsa]*Vidsutni[Sybota];

  вывод - ?

  readln;
End.
Проблема в том, как вывести на экран множество Progul.
Intersap вне форума Ответить с цитированием
Старый 01.12.2010, 07:08   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

А очень просто. Надо чтобы progul был массивом. Исправляйте, тогда никаих проблем возникать не должно. Если это Дельфи, то можно заюзать динамический массив.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 01.12.2010, 09:25   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Utkin, Вы не правы. Это учебная задача именно на МНОЖЕСТВА.
так что, массив тут не подойдёт (именно из условий задачи, а не потому, что нельзя с его помощью решить задачу)...

Intersap, множество - очень удобная (иногда) штука. Но вот с вводом и выводом всегда большие проблемы...
Единственный способ в Паскале вывести содержимое переменной, типа множесто на экран, это перебирать в цикле все возможные элементы, которые могут составлять множество, проверять наличие этого элемента в печатаемом множестве, и, если оно там есть - вывод элемента на экран..
сейчас постараюсь проиллюстрировать ответ примером кода...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.12.2010, 09:30   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну у него все равно остаются другие множества .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 01.12.2010, 10:19   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

как и обещал, пример вывода содержимого множества:

Код:
Program Propuski;
uses crt;
type
  WorkDay = (Ponedilok,Vivtorok,Sereda,Chetver,Pyatnytsa,Sybota);
  Name = (Bogdanov,Borisenko,Voloshyn,Vasilenko,Danilov,
          Denisenko,Gdanov,Zelinskiy,Zaporojetc,Ivanov,
          Karpenko,Kovalenko,Kolomietc,Kravchenko,Kyrpa,
          Lebedyev,Lemeshko,Maslova,Makarov,Naumenko,
          Ostapenko,Pavlenko,Petrov,Stepanov,Tupolev);
  Group = set of Name;


const
  PrintName : array[low(Name)..high(name)] of
     string = ('Bogdanov','Borisenko','Voloshyn','Vasilenko','Danilov',
        'Denisenko','Gdanov','Zelinskiy','Zaporojetc','Ivanov',
          'Karpenko','Kovalenko','Kolomietc','Kravchenko','Kyrpa',
          'Lebedyev','Lemeshko','Maslova','Makarov','Naumenko',
          'Ostapenko','Pavlenko','Petrov','Stepanov','Tupolev');

var
  Vidsutni: array[WorkDay] of Group;
  Progul: set of Name;
  Nm : Name;
Begin
  clrscr;
  Vidsutni[Ponedilok]:= [Denisenko,Kolomietc,Naumenko,Tupolev];
  Vidsutni[Vivtorok]:= [Karpenko,Kolomietc,Makarov,Naumenko,Stepanov];
  Vidsutni[Sereda]:= [Zelinskiy,Zaporojetc,Kolomietc,Kovalenko];
  Vidsutni[Chetver]:= [Borisenko,Voloshyn,Vasilenko,Kolomietc];
  Vidsutni[Pyatnytsa]:= [Kolomietc,Petrov,Stepanov,Kovalenko];
  Vidsutni[Sybota]:= [Lebedyev,Kolomietc,Lemeshko,Kovalenko];
  Progul:=Vidsutni[Ponedilok]*Vidsutni[Vivtorok]*Vidsutni[Sereda]*Vidsutni[Chetver]*Vidsutni[Pyatnytsa]*Vidsutni[Sybota];

  {так можно напечтатать без дополнительных  структур
    но будут выведены только порядковые номера элементов множества}
  WriteLn('В множесте PROGUL содержатся записи: ');
  for Nm := Low(Name) to High(Name) do
    if Nm in Progul then WriteLn(ord(Nm));

  {а вот так можно вывести отображение имен элементов множества.
    но, разумеется, эти имена надо где-то задать.    }
  WriteLn('В множесте PROGUL содержатся записи: ');
  for Nm := Low(Name) to High(Name) do
    if Nm in Progul then WriteLn(PrintName[Nm]);


  readln;
End.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.12.2010, 11:09   #6
Intersap
Пользователь
 
Регистрация: 25.03.2010
Сообщений: 23
По умолчанию

большое спасибо
Intersap вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывести первые n слов на экран kaffein Помощь студентам 4 22.11.2010 18:55
Вывести на экран сообщение JeyKip Win Api 1 02.04.2010 21:10
Как вывести на экран \n в С++ nicklan Общие вопросы C/C++ 4 30.03.2010 17:02
Вывести строку на экран Dasharnb777 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 13.02.2010 18:59
Как вывести на экран... (Делфи)!!! DjVidan Помощь студентам 14 09.03.2009 16:31