|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
|||
|
|||
ну если массив констант нельзя, то тогда можно опускаться до тупежа и простыни кода типа:
Код:
if (НомерДня>30) and (НомерМесяца=1) then .... |
#17
|
|||
|
|||
к сожалению массив нельзя
|
#18
|
|||
|
|||
до такого тупежа я опускался...
ну делал не условия, а case: Код:
type месяц = (янв, фев, мар, апр, май, июн, июл, авг, сен, окт, ноя, дек); var k:1..366; d:1..31; m:месяц; begin writeln('vvedite nomer dnya ne visokosnogo goda'); readln(k); if (k>=1) and (k<=365) then begin case k of 1..31:begin m:=янв; d:=(k-1)+1 end; 32..59:begin m:=фев; d:=(k-32)+1 end; 60..90:begin m:=мар; d:=(k-60)+1 end; 91..120:begin m:=апр; d:=(k-91)+1 end; 121..151:begin m:=май; d:=(k-121)+1 end; 152..181:begin m:=июн; d:=(k-152)+1; end; 182..212:begin m:=июл; d:=(k-182)+1 end; 213..243:begin m:=авг; d:=(k-213)+1 end; 244..273:begin m:=сен; d:=(k-244)+1 end; 274..304:begin m:=окт; d:=(k-274)+1 end; 305..334:begin m:=ноя; d:=(k-305)+1 end; 335..365:begin m:=дек; d:=(k-335)+1 end; end; case m of янв:writeln('January'); фев:writeln('February'); мар:writeln('March'); апр:writeln('April'); май:writeln('May'); июн:writeln('June'); июл:writeln('July'); авг:writeln('August'); сен:writeln('September'); окт:writeln('October'); ноя:writeln('November'); дек:writeln('December'); end; writeln(d,' day'); end else writeln('eRRor'); readln; end. получается примитивно, зато работает... но преподу не понравилось. Получается, что я должен сделать что-то более продуманное чем условия или кейс, но примитивнее чем масивы. В голову приходит только деление, но его по понятным причинам использовать не получится) |
#19
|
||||
|
||||
на мой способ, как видно, даже не смотрели... а ведь написан он в горячо любимом преподами стиле.
Цитата:
Тут задача не в том, чтобы написать эффективный код, а в том, чтобы он соответствовал логике препода. Такие преподы не осилят метод сложнее, чем самый очевидный. Если самый очевидный метод - полный перебор, то придется полностью перебирать, чтобы сдать лабу, и ничего с этим не поделать. РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت |
#20
|
||||
|
||||
Мне в голову пришла почти гениальная идея, но я пока не знаю, как конкретно её реализовать... Массивы не используем, один цикл и три IF-а. Кто уже догадался?
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#21
|
||||
|
||||
Так пойдёт?
Код:
writeln('vvedite nomer dnya ne visokosnogo goda'); readln(k); if (k>=1) and (k<=365) then begin m:=jan; d:=1; while k>0 do begin if m=feb then d:=28 else if m in [jan, mar, may, jul, aug, oct, dec] then d:=31 else d:=30; if k>d then begin inc(m); k:=k-d; end else begin d:=k; break; end; end; case m of jan:writeln('January'); feb:writeln('February'); ..... Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#22
|
|||
|
|||
это гениально!)))
спасибо огромное!)) пошел додумывать, чтобы она еще и число выводила)) еще раз, спасибо)))) |
#23
|
|||
|
|||
Цитата:
Это индусский код. Если препод хочет такого, то мне жаль новое поколение программистов. Это просто все тот же способ с массивами, но массивы переведены в код. Печально... |
#24
|
|||
|
|||
Цитата:
просто тема перечисляемый тип, значит нужно использовать только те средства, которые доступны и пользоваться перечисляемым типом... Хотя не всегда понятно, чего от тебя хотят... и иногда напрягает, что одну и ту же задачу нужно решать разными способами, причем зачастую не самыми рациональными... но все же от этого никуда не деться. |
#25
|
||||
|
||||
Препода, понять НЕЛЬЗЯ. Этот тормоз и сам ничего не умеет, так и другим не даёт думать.
|
#26
|
||||
|
||||
Цитата:
P.S. Потихоньку в теме начинается флуд. Пора прекращать... Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#27
|
|||
|
|||
еще раз всем спасибо, особенно DJ PhoeniX
я еще немного упростил код(хотя куда уж проще, блин), сегодня показал, все приняли |