![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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-а. Кто уже догадался?
![]() |
|
#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');
..... |
|
#22
|
|||
|
|||
|
это гениально!)))
спасибо огромное!)) пошел додумывать, чтобы она еще и число выводила)) еще раз, спасибо)))) |
|
#23
|
|||
|
|||
|
Цитата:
Это индусский код. Если препод хочет такого, то мне жаль новое поколение программистов. Это просто все тот же способ с массивами, но массивы переведены в код. Печально... |
|
#24
|
|||
|
|||
|
Цитата:
просто тема перечисляемый тип, значит нужно использовать только те средства, которые доступны и пользоваться перечисляемым типом... Хотя не всегда понятно, чего от тебя хотят... и иногда напрягает, что одну и ту же задачу нужно решать разными способами, причем зачастую не самыми рациональными... но все же от этого никуда не деться. |
|
#25
|
||||
|
||||
|
Препода, понять НЕЛЬЗЯ. Этот тормоз и сам ничего не умеет, так и другим не даёт думать.
|
|
#26
|
||||
|
||||
|
Цитата:
Ну ладно, желание заказчика есть желание заказчика ![]() P.S. Потихоньку в теме начинается флуд. Пора прекращать... |
|
#27
|
|||
|
|||
|
еще раз всем спасибо, особенно DJ PhoeniX
я еще немного упростил код(хотя куда уж проще, блин), сегодня показал, все приняли ![]() |