Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 17.09.2013
Сообщений: 130
1

Программа вычисления високосного года, сезона года по месяцу, количеству дней от начала года

23.09.2013, 00:22. Показов 2944. Ответов 1
Метки нет (Все метки)

добрый вечер, уважаемые программисты! помогите,пожалуйста,разобраться в программе.

в программе нужно:
1)вычислять является ли год высокосным или нет (года нужно начинать вводить с 2001).
2)определять время года (зима,весна, лето, осень) по номеру месяца (например, 1 - зима).
3)определить количество дней,которое прошло с начала года до определенной даты, которую нужно будет ввести.

логика нахождения высокосного года, сезона года и количества дней сколько прошло с нового года - правильная!!!

вот код программы:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
unit Unit3;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
 
type
  TForm3 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Edit4: TEdit;
    Button2: TButton;
    Edit5: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
tdate=class
    month,day,year:integer;
    procedure setvalue(m,d,y:integer);
    procedure prog(m:integer);
     procedure pr(m,d:integer);
    function leapyear:boolean;
    function poragoda: integer;
    function getdays: integer;
  end;
 
var
  Form3: TForm3;
  aday:tdate;
  mn,dn,yn,para,mes,dni,mo:integer;
 
 
implementation
 
{$R *.dfm}
 procedure tdate.setvalue(m,d,y:integer);
begin
 month:=m;
 day:=d;
 year:=y;
end;
function tdate.leapyear:boolean;
begin
 if  (year mod 4 <>0) then
      leapyear:=false
 else if (year mod 100<>0) then
      leapyear:=true
 else if (year mod 400<>0) then
      leapyear:=false
 else
      leapyear:=true;
end;
procedure tdate.prog(m:integer);
begin
month:=mo;
end;
 
 function tdate.poragoda: integer;
 begin
 if  (month =12) or (month =1) or (month =12) then poragoda:=1;
 end;
   procedure tdate.pr(m,d:integer);
   begin
   month:=m;
   day:=d;
   end;
 function tdate.getdays: integer;
  begin
   if mn=1 then  showmessage(inttostr (dn));
   if mn=3 then  showmessage(inttostr ((31)+dn));
   if mn=4 then  showmessage(inttostr (dn+31+28));
   if mn=5 then  showmessage(inttostr (dn+31+28+30));
   if mn=6 then  showmessage(inttostr (dn));
   if mn=7 then  showmessage(inttostr (dn));
   if mn=8 then  showmessage(inttostr (dn));
   if mn=9 then  showmessage(inttostr (dn));
   if mn=10 then  showmessage(inttostr (dn));
   if mn=11 then  showmessage(inttostr (dn));
   if mn=12 then  showmessage(inttostr (dn));
   end;
egin
   // ctvorenna obektu
   aday:=tdate.Create ;
   // vikorictanna ego
   mn:=strtoint(form3.edit1.text);dn:=strtoint(form3.edit2.text);yn:=strtoint(form3.edit3.text);
   mn:=12;
   aday.setvalue(mn,dn,yn);
   if aday. Poragoda=1  then
        showmessage('Zima');
        aday.Free;
   if aday.leapyear  then
    showmessage('Visokicniy rik:' + inttostr(aday.year)+' '+inttostr(yn))
      else
    showmessage('NEvisokicniy rik:' + inttostr(aday.year));
    //znichenna obekta
    form3.edit4.Text:='Vi vveli datu '+inttostr(dn)+'/'+inttostr(mn)+'/'+inttostr(yn);
    aday.Free;
end;
 begin
   // ctvorenna obektu
   aday:=tdate.Create ;
   // vikorictanna ego
   mn:=1;dn:=1;yn:=2001;
   aday.setvalue(mn,dn,yn);
   if aday.leapyear  then
    showmessage('Visokicniy rik:' + inttostr(aday.year))
    else
    showmessage('NEvisokicniy rik:' + inttostr(aday.year));
    //znichenna obekta
    aday.Free;
    aday:=tdate.Create;
 
 
end.
меня интересует, как запустить эту часть кода про определение сезона года по номеру месяца:
Delphi
1
2
3
4
5
6
7
8
9
function tdate.poragoda: integer;
 begin
 if  (month =12) or (month =1) or (month =12) then poragoda:=1;
 end;
   procedure tdate.pr(m,d:integer);
   begin
   month:=m;
   day:=d;
   end;
и как запустить эту часть кода про нахождение количества прошедших дней с начала года:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function tdate.getdays: integer;
  begin
   if mn=1 then  showmessage(inttostr (dn));
   if mn=3 then  showmessage(inttostr ((31)+dn));
   if mn=4 then  showmessage(inttostr (dn+31+28));
   if mn=5 then  showmessage(inttostr (dn+31+28+30));
   if mn=6 then  showmessage(inttostr (dn));
   if mn=7 then  showmessage(inttostr (dn));
   if mn=8 then  showmessage(inttostr (dn));
   if mn=9 then  showmessage(inttostr (dn));
   if mn=10 then  showmessage(inttostr (dn));
   if mn=11 then  showmessage(inttostr (dn));
   if mn=12 then  showmessage(inttostr (dn));
   end;
заранее огромное спасибо всем за помощь!!!

Добавлено через 1 час 17 минут
вот код программы нахождения высокосного года, времени года по месяцу, количества дней,которые прошли с начала года. только программа немного отличается от варианта,который написан мною выше.

помогите,пожалуйста,разобраться запустится ли эта программа и как её можно запустить через блокнот (а точнее, когда создаешь пустую папку на рабочем столе, в ней создаешь блокнот, в блокноте написан код программы. затем запускаешь Делфи 7, в нем File - Open (потом находишь нужную папку и файл, и открываешь его в Делфи 7. а как запустить потом эту программу - я не знаю).

вот код программы:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Edit4: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
  tmydate = class
    month, day, year: integer;
    procedure setvalue(m, d, y: integer);
    function leapyear: boolean;
    function getdays: integer;
    function getseason: string;
  end;
 
var
  Form1: TForm1;
  aday: tmydate;
  mn, dn, yn: integer;
 
implementation
 
{$R *.dfm}
 
procedure tmydate.setvalue(m, d, y: integer);
begin
  month := m;
  day := d;
  year := y;
end;
 
function tmydate.leapyear: boolean;
begin
  leapyear := (year mod 400 = 0) or ((year mod 4 = 0) and (year mod 100 <> 0))
end;
 
function tmydate.getdays: integer;
const
  days: array [1 .. 11] of integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31,
    30);
var
  i, c: integer;
begin
  c := day;
  for i := 1 to month - 1 do
    inc(c, days[i]);
  inc(c, ord((month > 2) and leapyear));
  result := c;
end;
 
function tmydate.getseason: string;
begin
  case month of
    12, 1, 2:
      result := 'Winter';
    3 .. 5:
      result := 'Spring';
    6 .. 8:
      result := 'Summer';
    9 .. 11:
      result := 'Autumn';
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  aday := tmydate.Create;
  mn := strtoint(Edit1.text);
  dn := strtoint(Edit2.text);
  yn := strtoint(Edit3.text);
  aday.setvalue(mn, dn, yn);
  showmessage(aday.getseason);
  if aday.leapyear then
    showmessage('Visokicniy rik:' + inttostr(aday.year) + ' ' + inttostr(yn))
  else
    showmessage('NEvisokicniy rik:' + inttostr(aday.year));
  showmessage(inttostr(aday.getdays));
  Edit4.text := 'Vi vveli datu ' + inttostr(dn) + '/' + inttostr(mn)
    + '/' + inttostr(yn);
  aday.Free;
end;
 
end.
заранее огромное спасибо всем за ответы!!!
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.09.2013, 00:22
Ответы с готовыми решениями:

По введенному с клавиатуры дню и месяцу выдать название соответствующего сезона года
Нужно предусмотреть защиту от неправильного ввода данных (По введенному с клавиатуры дню и месяцу...

По введенному с клавиатуры дню и месяцу выдать название соответствующего сезона года
1)По введенному с клавиатуры дню и месяцу выдать название соответствующего сезона года (лето,...

По месяцу года указать время года
По месяцу года указать время года.Например ,апрель-весна

1 января не високосного года-понедельник. Вводится число и месяц этого года. Вывести день недели этого дня
1 января не високосного года-понедельник. Вводится число и месяц этого года. Вывести день недели...

1
Пишу на Delphi...иногда
1419 / 1276 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
23.09.2013, 00:31 2
Цитата Сообщение от ada lavleis Посмотреть сообщение
и как её можно запустить через блокнот
1 создаешь новый проект
2 на форму кидаешь четыре эдита и одну кнопку
3 для кнопки создаешь обработчик OnClick (два раза кликнуть на кнопку)
4 открываешь в блокноте свой файл, выделяешь все и копируешь (Ctrl+А, Ctrl+C)
5 выделяешь все в открытом в IDE модуле Unit1 и вставляешь скопированое из блокнота (Ctrl+A, Ctrl+V)
6 нажимаешь F9
7 Profit
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2013, 00:31

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Множества.Месяц 1..30 Описать функцию число дней (m), определяющую количество дней в месяце (n) не високосного года.
Месяц 1..30 Описать функцию число дней (m), определяющую количество дней в месяце (n) не...

Программа для подсчета количества полных дней, прошедших с начала года
Подскажите, пожалуйста, как решается эта задача? Программа для подсчета количества полных дней,...

Копирование файлов из определённой папки в папку, названную по номерам года и недели с начала года
Доброго времени суток! Необходимо копировать файлы из конкретной папки в папку, путь к которой...

Вывести число дней в месяце для не високосного года
Помогите пожалуйста решить задачу в PascalABC Задание. Дан номер месяца (1 — январь, 2 — февраль,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.