Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2016, 23:17   #1
prog1995
 
Регистрация: 22.09.2013
Сообщений: 8
По умолчанию Delphi Определение високосного и не вискосного года

что не так в коде?
ошибки прилагаются
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
c,m,g,l:integer;
begin
c:=StrToInt(Data.text);
m:=StrToInt(mes.text);
g:=StrToInt(god.text);
f:=g mod 4;
if f=0 then
begin
edit4.Text:=god.Text+' год високосный,';
1:=1;
end
else
begin
edit1.Text:=god.Text+' год невисокосный,';
1:=o;
end:
if m>12 then MessageDlg(' В году 12 месяцев', mterror,[mbook],0);
case m of 1,3,5,7,8,10,12:
if m>31 then MessageDlg(' В данном месяце 31 день', mterror,[mbook],0);
2:
case 1 of 1;
if m>29 then MessageDlg(' В данном месяце 29 дней', mterror,[mbook],0);
0:
if m>28 then MessageDlg(' В данном месяце 28 дней', mterror,[mbook],0);
end;
4,6,9,11:
if m>30 then MessageDlg(' В данном месяце 30 дней', mterror,[mbook],0);
end;
case m of 1,2,3: edit1.Text:=edit1.Text+' 1 квартал,';
4,5,6:edit1.Text:=edit1.Text+' 2 квартал,';
7,8,9:edit1.Text:=edit1.Text+' 3 квартал,';
10,11,12:edit1.Text:=edit1.Text+' 4 квартал,';
end;
case m of 12,1,2:edit1.Text:=edit1.Text+' зима';
3,4,5:edit1.Text:=edit1.Text+' весна';
6,7,8:edit1.Text:=edit1.Text+' лето';
9,10,11:edit1.Text:=edit1.Text+' осень';
end;
end;

end.
Изображения
Тип файла: jpg 34234.JPG (34.8 Кб, 129 просмотров)
prog1995 вне форума Ответить с цитированием
Старый 06.06.2016, 23:24   #2
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 369
По умолчанию

Цитата:
что не так в коде?
Просто он к вашей программе не подходит. Совсем.
Программирую по необходимости
tsar_ вне форума Ответить с цитированием
Старый 07.06.2016, 00:45   #3
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Ну, кроме чисто программных ошибок, вы определитесь, какого календаря вы придерживаться будете - григорианского ( новый стиль ), или юлианского ( старый стиль) .
Судя по этому:
Код:
f:=g mod 4;
if f=0 then
- у вас - старый стиль.
А по новому - делиться на 4 недостаточно.
Например, 1900-й год - по старому стилю был високосный, а по новому - нет.
По новому високосный - не каждый 4-й год, а 97 из 400.
type_Oleg вне форума Ответить с цитированием
Старый 07.06.2016, 01:03   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

для диапазона лет от 1901 до 2099 для проверки високосности вполне достаточно использовать признак делимости на 4 (2000 год был високосный).
но, если нужно брать точную формулу, тогда я бы воспользовался такой:

Код:
{*                    OPDATE.PAS 1.21                    *}
{*     Copyright (c) TurboPower Software 1988, 1992.     *}

  function IsLeapYear(Year : Integer) : Boolean;
    {-Return True if Year is a leap year}
  begin
    IsLeapYear := (Year mod 4 = 0) 
          and (Year mod 4000 <> 0) and
            ((Year mod 100 <> 0) or (Year mod 400 = 0));
  end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.06.2016, 14:18   #5
prog1995
 
Регистрация: 22.09.2013
Сообщений: 8
По умолчанию

Как всё вывести в edit4: к примеру при вводе (число,месяц,год) - 6,6,2016 ; Выводилось 2016 год,високосный,2 квартал , лето
prog1995 вне форума Ответить с цитированием
Старый 07.06.2016, 14:49   #6
TaLadno
Форумчанин
 
Регистрация: 03.06.2015
Сообщений: 393
По умолчанию

http://www.delphibasics.ru/DecodeDateTime.php + код от Serge_Bliznykov + немного серого вещества для определения квартала и весна/лето/осень/зима
Вы там держитесь.
TaLadno вне форума Ответить с цитированием
Старый 07.06.2016, 15:27   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

квартал определять но номеру месяца
Код:
((mes-1) div 3)+1
весна/лето/осень/зима
проще всего через функцию либо с массивами
либо через банальный case Mesac of
Код:
result:='undefined';
case Mesac of
  12,1,2 : result := 'Зима';
  3..5 : result := 'Весна';
  6..8 : result := 'Лето';
  9..11 : result := 'Осень';
end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить k – порядковый номер того дня високосного года, который имеет дату d, mes povaki Паскаль, Turbo Pascal, PascalABC.NET 2 25.11.2015 11:41
Написать программу, которая запрашивает у пользователя номер месяца и выводит соответствующее название времени года (Delphi) Alina1807 Помощь студентам 11 01.04.2015 07:04
нахождение высокосного года, сезона года и к-ва дне с начала года Делфи 7 (есть код программы полностью) программирование Помощь студентам 22 22.09.2013 23:59
Паскаль. Перечислимый тип. Определение порядкового номера дня високосного года. katya36 Помощь студентам 9 02.05.2009 13:56