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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2011, 07:49   #1
Рафиль
Пользователь
 
Регистрация: 13.10.2011
Сообщений: 11
По умолчанию Даны a1,b1,c1, и a2,b2,c2 которые обозначают две даты. Нужно вычислить кол-во дней между этими датами

нужно написать программу вычисления количества дней между введенными датами

Даны a1,b1,c1, и a2,b2,c2 которые обозначают две даты. Нужно вычислить кол-во дней между этими датами



_________
Название темы должно адекватно отражать суть решаемой задачи/проблемы.
На первый раз я исправил.
В дальнейшем темы с подобным названием будут закрываться/удаляться.

Модератор.

Последний раз редактировалось Рафиль; 13.10.2011 в 08:24.
Рафиль вне форума Ответить с цитированием
Старый 13.10.2011, 08:24   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Рафиль, ни "здрасте", ни "пожалуйста"...
ну, раз Вам надо - пишите.
От нас то что требуется? Разрешение?!


p.s. а ещё в поиск по форуму можете сходить, подобные задачи неоднократно решались!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.10.2011, 08:28   #3
Рафиль
Пользователь
 
Регистрация: 13.10.2011
Сообщений: 11
По умолчанию

Извините меня, Здравствуйте, прост седня уже после обеда сдавать надо, спешу... помогите пож-ста написать программу к этой задаче в паскаль, я в программировании не очень понимаю
Рафиль вне форума Ответить с цитированием
Старый 13.10.2011, 09:45   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

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

поискал по форуму. не нашёл полного решения.
ладно. не проблема. может быть ещё кому-то пригодится.

разбирайтесь.

расчёт количества дней между двумя датами
Код:
{*                    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;


function DaysInMonth(Month, Year: Integer): Integer;
    {-Return the number of days in the specified month of a given year}
begin
  case Month of
    1, 3, 5, 7, 8, 10, 12:
      DaysInMonth := 31;
    4, 6, 9, 11:
      DaysInMonth := 30;
    2:
      DaysInMonth := 28 + Ord(IsLeapYear(Year));
  else
    DaysInMonth := 0;
  end;
end;

function ValidDate(Day, Month, Year: Integer): Boolean;
    {-Verify that day, month, year is a valid date}
begin

  if (Day < 1) or (Year < 1600) or (Year > 3999) then
    ValidDate := False
  else case Month of
      1..12:
        ValidDate := Day <= DaysInMonth(Month, Year);
    else
      ValidDate := False;
    end
end;


function Date2julian(pDay, pMonth, pYear: integer): longint;
var
  month, day, year: longint;
  ta, tb, tc: longint;
begin
  month := pMonth;
  day := pDay;
  year := pYear;
  if month > 2 then
    month := month - 3
  else
  begin
    month := month + 9;
    year := year - 1;
  end;
  ta := 146097 * (year div 100) div 4;
  tb := 1461 * (year mod 100) div 4;
  tc := (153 * month + 2) div 5 + day + 1721119;
  Date2julian := ta + tb + tc
end;

function DaysBetween(Day1, Month1, Year1, Day2, Month2, Year2: integer): integer;
var D1, D2: longint;
begin
  D1 := Date2julian(Day1, Month1, Year1);
  D2 := Date2julian(Day2, Month2, Year2);
  if D1 > D2 then
    DaysBetween := D1 - D2
  else
    DaysBetween := D2 - D1;
end;


var
  a1, b1, c1, a2, b2, c2: integer;
begin
  WriteLn('Введите первую дату (три числа: день месяц год) : ');
  Readln(a1, b1, c1);
  if not ValidDate(a1, b1, c1) then begin
    WriteLn('Ошибка! Вы ввели несуществующую дату!');
    WriteLn('Bye!');
    Readln;
    Halt(1);
  end;
  WriteLn('Введите вторую дату (три числа: день месяц год) : ');
  Readln(a2, b2, c2);
  if not ValidDate(a2, b2, c2) then begin
    WriteLn('Ошибка! Вы ввели несуществующую дату!');
    WriteLn('Bye!');
    Readln;
    Halt(1);
  end;

  Writeln('Количество дней между датами равно ', DaysBetween(a1, b1, c1, a2, b2, c2));
  Readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.10.2011, 23:00   #5
Рафиль
Пользователь
 
Регистрация: 13.10.2011
Сообщений: 11
По умолчанию

спасибо большое, все работает)))) теперь пойду сдавать... защищать...
Рафиль вне форума Ответить с цитированием
Старый 20.10.2011, 22:04   #6
Рафиль
Пользователь
 
Регистрация: 13.10.2011
Сообщений: 11
По умолчанию

извините, а можно это написать по простому, с операторами if и case, без функций, мне сказали переделать
Рафиль вне форума Ответить с цитированием
Старый 21.10.2011, 10:34   #7
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Цитата:
извините, а можно это написать по простому, с операторами if и case, без функций
Извините, но нельзя ли начать учиться самостоятельно?

Там же все подробнейшим образом прокомментировано, абсолютно все.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбрать даты в StringGrid находящиеся между двумя другими датами Serebah Общие вопросы Delphi 7 03.02.2011 14:51
Вычислить разницу между датами без учета года k1r1ch Общие вопросы Delphi 10 20.08.2009 18:36
С++: найти число дней между 2 датами kissel Помощь студентам 2 15.03.2009 17:18
Подсчёт кол-ва дней ivp88 БД в Delphi 7 14.01.2008 09:16