Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 13.11.2010, 17:02   #1 (permalink)
Tepp
Member
 
Регистрация: 13.11.2010
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Программка про календарь (множества, pascal)

Цитата:
В восточном календаре года носят названия животных: крысы, быка, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, петуха, собаки, свиньи. Кроме того, через каждые два года меняется цвет в следующем порядке: синий, красный, желтый, белый, черный. Таким образом, 1992-й год - это год черной обезьяны, 1993 - это год черного петуха, 1994-й - год синей собаки и т.д. Написать программу, которая переводит заданный год в его название по восточному календарю (используйте тип "перечисление").
Ребят помогите пожалуйста Очень срочно нужна.
Tepp вне форума   Ответить с цитированием

Старый 13.11.2010, 17:02
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Схожие по содержанию с вашим топики могут помочь

Новый календарь. Ох и ну и ну...
Календарь
Календарь на рабочий стол
Лунный календарь
Программка для Arduino Diecimila

Старый 13.11.2010, 19:28   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Tepp Посмотреть сообщение
Ребят помогите пожалуйста Очень срочно нужна.
Всё, чем могу помочь - это выложить свою программку, которую делал 100 лет назад (приблизительно) для себя. Правда, в ней не всё Вас, вероятно, устроит: я не использовал перечисляемые типы (ограничился строковыми массивами), кроме того, там предусмотрено преобразование годов в том числе до нашей эры (это легко убрать), помимо цветов приводятся также стихии, но - чем богаты. Два варианта - для Windows и для DOS кодировок кириллицы:
Вложения
Тип файла: zip Orient.ZIP (1.4 Кб, 45 просмотров)
Vladimir_S вне форума   Ответить с цитированием
Старый 14.11.2010, 00:18   #3 (permalink)
Tepp
Member
 
Регистрация: 13.11.2010
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Всё, чем могу помочь - это выложить свою программку, которую делал 100 лет назад (приблизительно) для себя. Правда, в ней не всё Вас, вероятно, устроит: я не использовал перечисляемые типы (ограничился строковыми массивами), кроме того, там предусмотрено преобразование годов в том числе до нашей эры (это легко убрать), помимо цветов приводятся также стихии, но - чем богаты. Два варианта - для Windows и для DOS кодировок кириллицы:
Вот в том то и проблема что перечисление нужно (((
Tepp вне форума   Ответить с цитированием
Старый 14.11.2010, 11:33   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Tepp Посмотреть сообщение
Вот в том то и проблема что перечисление нужно (((
Честно Вам признаюсь - я не знаю, как тут использовать перечисляемый тип. Ну, допустим, определю я типы
Код:
TYPE
 Mat=(Metal,Water,Wood,Fire,Earth);
 Col=(White,Black,Blue,Red,Yellow);
 Ani=(Monkey,Hen,Dog,Swine,Mouse,Cow,Tiger,Rabbit,Dragon,Snake,Horse,Sheep);
И введу переменные
Код:
VAR
 Colour:Col;
 Matter:Mat;
 Animal:Ani;
И что с ними дальше прикажете делать? Ведь в Паскале, сколь мне известно, не существует функции, позволяющей перевести названия идентификаторов переменной перечисляемого типа в строки, т.е. вывести на экран всех этих синих свиней да желтых обезьян. Так что я - пас.
Кто в курсе - поправьте, если я ошибаюсь и таковой способ всё же существует.
Vladimir_S вне форума   Ответить с цитированием
Старый 14.11.2010, 12:31   #5 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Цитата:
Перечислимые типы

Перечислимые типы определяют упорядоченные наборы значений, перечисляя идентификаторы, которые обозначают эти значения. Их порядок следует из последовательности, в которой они были перечислены.
Синтаксис:
type имя = (идентификатор, идентификатор, ..., идентификатор);
Замечания:
Идентификаторы в определении типа становятся константами перечислимого типа.
Первая константа имеет порядковый номер 0, вторая - 1, и так далее.
Перечислимые типы являются подклассом порядковых типов.
Пример:
type Suit = (Clubs, Diamonds, Hearts, Spades);
При таком объявлении Hearts является константой типа Suit.

Стандартная функция Ord возвращает порядковый номер перечислимой константы. В этом примере,
Ord(Clubs) = 0
Ord(Diamonds) = 1
Ord(Hearts) = 2
И так далее.
Это значит, что возможно использовать перечислимые типы, анализируя их порядковые номера. В текущем задании нужно вычислять остатки от деления и по ним, как по индексам, обращаться к соответствующим элементам перечисления.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 14.11.2010, 13:54   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от AlexZir Посмотреть сообщение
Это значит, что возможно использовать перечислимые типы, анализируя их порядковые номера. В текущем задании нужно вычислять остатки от деления и по ним, как по индексам, обращаться к соответствующим элементам перечисления.
Угу. Ну обратился к элементу swine по порядковому номеру, и дальше что? Как вывести на экран слово "swine"?
P.S. А насчет алгоритма решения - естественно, так и сделано (см. программу в начале темы). Только там не перечисляемые типы, а просто строковые массивы-константы с перечнем животных, цветов и стихий. И никаких проблем. Так ведь нет же, подай товарищу перечисляемые типы. Вот я и в недоумении.
Vladimir_S вне форума   Ответить с цитированием
Старый 14.11.2010, 16:36   #7 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Цитата:
Функции и процедуры для порядковых типов данных

Существует несколько полезных функций и процедур, без использования которых, порой, сложно оперировать порядковыми типами данных:
Pred() - функция возвращает предыдущее значение для выражения, указанного в качестве единственного аргумента.
Примеры: Pred(5) = 4, Pred('E') = 'D', Pred(True) = False.
Succ() - функция, обратная для Pred() - возвращает следующее значение.
Примеры: Succ(5) = 6, Succ('E') = 'F', Succ(False) = True.
Ord() - возвращает порядковый номер значения в списке значений типа данных. С этой функцией мы уже встречались при работе со строками - с её помощью мы узнавали код символа.
Примеры: Ord('A') = 65, Ord(True) = 1.
Low() - возвращает минимальное значение указанного типа данных.
Примеры: Low(Byte) = 0, Low(Boolean) = False, Low(Char) = #0 (символ с кодом 0).
High() - возвращает максимальное значение указанного типа данных.
Примеры: High(Byte) = 255, High(Boolean) = True, High(Char) = #255 (в русской локали это символ "я").
Ну и ещё две процедуры, с которыми мы уже знакомы:
Dec() - уменьшает значение на единицу.
Inc() - увеличивает значение на единицу.
Не забывайте о втором необязательном параметре этих процедур.
Похоже, задача при использовании перечислимого типа неразрешима.

Но есть более хитрый вариант с типом множество, ведь он тоже относится к перечислимым. К элементу множества можно обратиться по номеру и вывести множество также возможно как по-элементно, так и целиком. К сожалению, не владею соответствующим листингом, но думаю, что решение в этом случае вполне возможно.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 14.11.2010, 20:33   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от AlexZir Посмотреть сообщение
Но есть более хитрый вариант с типом множество, ведь он тоже относится к перечислимым. К элементу множества можно обратиться по номеру и вывести множество также возможно как по-элементно, так и целиком. К сожалению, не владею соответствующим листингом, но думаю, что решение в этом случае вполне возможно.
Может и так, хотя не очень вижу такой путь. В любом случае - пусть этот хитропопый препод, который ставит подобные идиотские условия, и показывает мастер-класс. Я не берусь.
Vladimir_S вне форума   Ответить с цитированием
Старый 15.11.2010, 00:35   #9 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

А по-моему, элементы множества тоже нельзя выводить на экран?
MrSTEP вне форума   Ответить с цитированием
Старый 15.11.2010, 09:46   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от MrSTEP Посмотреть сообщение
А по-моему, элементы множества тоже нельзя выводить на экран?
Мне так тоже казалось. Поэтому IMHO задача в поставленных рамках неразрешима.
Вообще уже не первый раз сталкиваюсь с манерой некоторых преподавателей при формулировке задания студентам думать чем угодно, кроме головы.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 04:22.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.