Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 30.05.2011, 10:49
Janom Janom вне форума
Начинающий
 
Регистрация: 04.02.2011
Адрес: Москва
Сообщения: 148
Версия Delphi: 7
Репутация: 133
По умолчанию

ну если массив констант нельзя, то тогда можно опускаться до тупежа и простыни кода типа:
Код:
if (НомерДня>30) and (НомерМесяца=1) then .... 
Но это просто иди от изм...
Ответить с цитированием
  #17  
Старый 30.05.2011, 11:49
Row Row вне форума
Прохожий
 
Регистрация: 20.03.2011
Сообщения: 21
Репутация: 10
По умолчанию

к сожалению массив нельзя
Ответить с цитированием
  #18  
Старый 30.05.2011, 11:58
Row Row вне форума
Прохожий
 
Регистрация: 20.03.2011
Сообщения: 21
Репутация: 10
По умолчанию

до такого тупежа я опускался...
ну делал не условия, а 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  
Старый 30.05.2011, 12:58
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

на мой способ, как видно, даже не смотрели... а ведь написан он в горячо любимом преподами стиле.
Цитата:
Но это просто иди от изм...
а теперь попробуйте решить эту задачу вручную, в уме. Человеческая логика - идиотизм, говорите? Или тоже массивы будете представлять?
Тут задача не в том, чтобы написать эффективный код, а в том, чтобы он соответствовал логике препода. Такие преподы не осилят метод сложнее, чем самый очевидный. Если самый очевидный метод - полный перебор, то придется полностью перебирать, чтобы сдать лабу, и ничего с этим не поделать.
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت
Ответить с цитированием
  #20  
Старый 30.05.2011, 17:02
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Мне в голову пришла почти гениальная идея, но я пока не знаю, как конкретно её реализовать... Массивы не используем, один цикл и три IF-а. Кто уже догадался?
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #21  
Старый 30.05.2011, 17:15
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Так пойдёт?
Код:
  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  
Старый 30.05.2011, 20:56
Row Row вне форума
Прохожий
 
Регистрация: 20.03.2011
Сообщения: 21
Репутация: 10
По умолчанию

это гениально!)))
спасибо огромное!))
пошел додумывать, чтобы она еще и число выводила))
еще раз, спасибо))))
Ответить с цитированием
  #23  
Старый 30.05.2011, 21:50
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,026
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Row
это гениально!)))
спасибо огромное!))
пошел додумывать, чтобы она еще и число выводила))
еще раз, спасибо))))

Это индусский код.
Если препод хочет такого, то мне жаль новое поколение программистов.

Это просто все тот же способ с массивами, но массивы переведены в код.

Печально...
Ответить с цитированием
  #24  
Старый 30.05.2011, 22:19
Row Row вне форума
Прохожий
 
Регистрация: 20.03.2011
Сообщения: 21
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Это индусский код.
Если препод хочет такого, то мне жаль новое поколение программистов.

Это просто все тот же способ с массивами, но массивы переведены в код.

Печально...
ну препода понять можно, он не разрешает использовать то, что еще не пройдено, пусть мы даже это и умеем)
просто тема перечисляемый тип, значит нужно использовать только те средства, которые доступны и пользоваться перечисляемым типом... Хотя не всегда понятно, чего от тебя хотят... и иногда напрягает, что одну и ту же задачу нужно решать разными способами, причем зачастую не самыми рациональными... но все же от этого никуда не деться.
Ответить с цитированием
  #25  
Старый 30.05.2011, 23:28
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Препода, понять НЕЛЬЗЯ. Этот тормоз и сам ничего не умеет, так и другим не даёт думать.
Ответить с цитированием
  #26  
Старый 30.05.2011, 23:31
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Цитата:
Сообщение от lmikle
Это индусский код.
Бл***, а я думал, никогда до него не опущусь... Ну ладно, желание заказчика есть желание заказчика
P.S. Потихоньку в теме начинается флуд. Пора прекращать...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #27  
Старый 31.05.2011, 16:54
Row Row вне форума
Прохожий
 
Регистрация: 20.03.2011
Сообщения: 21
Репутация: 10
По умолчанию

еще раз всем спасибо, особенно DJ PhoeniX
я еще немного упростил код(хотя куда уж проще, блин), сегодня показал, все приняли
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:47.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter