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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2013, 18:41   #1
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Вопрос

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

вот задание:
нужно написать программу, которая будет по месяцу определять время года (зима,весна, лето или осень).

заранее спасибо за ответы!!!

вот уже сделанные задания
1)в программу вводится число, месяц и год, а программа определяет является ли год высокосным или нет.
вот код
Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
    TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit4: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  tdate=class
    month,day,year:integer;
    procedure setvalue(m,d,y:integer);
    function leapyear:boolean;
  end;

var
  Form1: TForm1;
  aday:tdate;
  mn,dn,yn: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 TForm1.Button1Click(Sender: TObject);
begin
   // ctvorenna obektu
   aday:=tdate.Create ;
   // vikorictanna ego
   mn:=strtoint(form1.edit1.text);dn:=strtoint(form1.edit2.text);yn:=strtoint(form1.edit3.text);
   aday.setvalue(mn,dn,yn);
   if aday.leapyear  then
    showmessage('Visokicniy rik:' + inttostr(aday.year)+' '+inttostr(yn))
      else
    showmessage('NEvisokicniy rik:' + inttostr(aday.year));
    //znichenna obekta
    form1.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;
end.
во дописанный код определения сезона года по месяцу (например,вводишь месяц 1 - результат зима)
вот код
Код:
case month of
12,1,2:showmessage('Winter');
3..5:showmessage('Spring');
6..8:showmessage('Summer');
9..11:showmessage('Autumn');
end;
или вот другой вариант
Код:
mes:=strtoint(edit1.text);
case mes of
1,2,12: label1.caption:='Зима';
3,4,5: label1.caption:='Весна';
6,7,8: label1.caption:='Лето!!!!!!!!!!!!!!';
9..11: label1.caption:='Осень';
end;
только мне нужно помочь вставить этот код в мою основную программу.

заранее спасибо за ответы.

Последний раз редактировалось Stilet; 19.09.2013 в 22:42.
программирование вне форума Ответить с цитированием
Старый 19.09.2013, 21:43   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,341
По умолчанию

1) Кросспост запрещен.
2) Если Вы сами решали первое задание, то добавить пару строчек не должно вызывать никаких проблем.
Вставьте после aday.setvalue(mn,dn,yn); в процедуре TForm1.Button1Click код:
Код:
case mn of 
12,1,2:showmessage('Winter'); 
3..5:showmessage('Spring'); 
6..8:showmessage('Summer'); 
9..11:showmessage('Autumn'); 
end;
и удалите код, начинающийся с begin и заканчивающийся end в самом конце исходника (так никто не пишет, по-моему).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 19.09.2013, 22:32   #3
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
По умолчанию а как можно дописать мою программу

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

заранее огромное спасибо!!!
программирование вне форума Ответить с цитированием
Старый 19.09.2013, 22:46   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
  tdate=class
    month,day,year:integer;
    procedure setvalue(m,d,y:integer);
    function leapyear:boolean;
    Procedure TellQuarter;
  end;
...
Procedure tdate.TellQuarter;
begin

case mn of
12,1,2:showmessage('Winter');
3..5:showmessage('Spring');
6..8:showmessage('Summer');
9..11:showmessage('Autumn');
end;

end;
...
Подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.09.2013, 22:54   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,341
По умолчанию

1) Лучше назвать свой класс tmydate (tdate есть в Дельфи).
2) Код функции:
Код:
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;
Подумайте, что нужно дописать в коде (нужно объявить эту функцию в классе и добавить её вызов в процедуру нажатия кнопки).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 19.09.2013, 23:00   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
сколько дней прошло с нового года
Trunc(Date-EncodeDate(YearOf(Date),1,1))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
с++ Дан номер года,Определить соответствующий ему номер столетия rinoolik Помощь студентам 1 18.02.2013 22:21
Определить сколько дней до конца года С SimplyZero Помощь студентам 11 10.10.2012 20:50
БОТ для браузерной игры Смутные времена Aleksan Фриланс 10 01.05.2011 14:27
Времена глаголов в английском языке pro100-delphi Свободное общение 27 23.10.2009 20:17