Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.16.47.14] |
|
Сообщ.
#1
,
|
|
|
Люди, подскажите идею. Лаба по Pascal на тему множества. Надо по порядковому номеру дня в году определить его месяц.
|
Сообщ.
#2
,
|
|
|
эт тебе ф раздел Дельфи нада идти:)
а вообще по сабжу наверное так <br>januar set of integer=(1,2..31);<br>februar set of integer=(32..59);<br>....<br><br>if(DayNum in januar) then println("januar")<br>else if (DayNum in februar) then print("februar)<br>else<br>....<br> только ИМХО за ущи притянутая задача к множествам. так эту задачу никтоне решает:) |
Сообщ.
#3
,
|
|
|
Задача решается в несколько строк. Не знаю только как к этому множества приделать.
|
Сообщ.
#4
,
|
|
|
Цитата ter, 11.04.03, 10:24:04 Задача решается в несколько строк. Не знаю только как к этому множества приделать. int a[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int i=0; while (iNumDay>a[i] && i<12) { iNumDay-=a[i]; i++; } if (i<12) printf("месяц \%d",i+1); else printf("Ошибка в дне"); ну вот и все.... |
Сообщ.
#5
,
|
|
|
Кстати надо бы еще учеть и код какой високосный или нет???
|
Сообщ.
#6
,
|
|
|
2 Demo_s: Тип множество имеет не более 255 значений, верхний и нижний пределы множества должны быть в диапазоне 0..255.Если делать, как ты предлагаеш то в сентябре будет переполнение множества (242..273).
Да, решать эту задачу через множества, все равно, что второй раз изобретать колесо , я знаю как минимум 3 способа решить ее не через множества, но задача поставлена сделать именно через них. Так что, если у кого нибудь есть идеи с удовольствием выслушаю. P.S. Тип года надо учитывать(високосный или нет) |
Сообщ.
#7
,
|
|
|
Цитата Flame, 11.04.03, 18:17:34 верхний и нижний пределы множества должны быть в диапазоне 0..255.Если делать, как ты предлагаеш то в сентябре будет переполнение множества (242..273). а ты пробовал??? у меня к сожалению паскаля счас установленного нет, но я почти на 100\% уверен, что a set of integer=(300,400,500) проканает... ЗЫ если год високосный, нужно или другой набор множеств, или резко проинклюить в некоторые первый элемент следующего, и из каждого мн-ва, начиная со второго убрать первый элемент. ЗЗЫ 2GrAnd Цитата Лаба по паскалю |
Сообщ.
#8
,
|
|
|
Проверял. Как я и говорил-ошибка, выход за пределы допустимого диапазона. Не так все просто, как кажеться на первый взгляд
|
Сообщ.
#9
,
|
|
|
Цитата Flame, 11.04.03, 18:17:34 2 Demo_s: Тип множество имеет не более 255 значений, верхний и нижний пределы множества должны быть в диапазоне 0..255.Если делать, как ты предлагаеш то в сентябре будет переполнение множества (242..273). Да, решать эту задачу через множества, все равно, что второй раз изобретать колесо , я знаю как минимум 3 способа решить ее не через множества, но задача поставлена сделать именно через них. Так что, если у кого нибудь есть идеи с удовольствием выслушаю. P.S. Тип года надо учитывать(високосный или нет) Раздели по полугодиям: Что то типа этого januar set of integer=(1,2..31); februar set of integer=(32..59); .... julie set of integer = (182..213); //или сколько там ??? august set of integer = (1..31); ... if (DayNum<213) then begin //проверка на первого полугодие if(DayNum in januar) then println("januar") else if (DayNum in februar) then print("februar) else .... end; else begin DayNum = DayNum-213; if(DayNum in aygust) then println("august") else if (DayNum in sepember) then print("september) else .... end; |