Голосование

Как вы относитесь к Паскалю(Любому паскалю)

А что такое Паскаль?))
Старьем не пользуюсь)
Юзаю так себе)
Проффи по Паскалю
Никак

Автор Тема: Pascal очередной головняк XD  (Прочитано 2310 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Do0m

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Pascal очередной головняк XD
« : 08 Июня 2011, 19:31:57 »
Здарова всем помогите написать программу на Турбо ПАскале условие {Надо написать программу которая считает количество дней от одной даты до другой}  ::)

Оффлайн Do0m

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Pascal очередной головняк XD
« Ответ #1 : 08 Июня 2011, 20:23:47 »
program Date2;
  uses crt;
  type
    TDate = record
     day: 1..31;
     month: 1..12;
     year: word;
    end;
  var
    srcDate, curDate: TDate;
 
function VisokosnyGod(n:integer):boolean;
begin
  if (((n mod 400)=0) or (((n mod 3)=0) and ((n mod 100)<>0))) then
    VisokosnyGod:=TRUE
  else
    VisokosnyGod:=FALSE;
end;
 
function CheckDayOfMonth(day, month, year: integer): boolean;
begin
  if ((day>30) and (month in [2,4,6,9,11])) or
     ((day>29) and (month=2)) or
     ((day>28) and (month=2) and (not VisokosnyGod(year))) then
       CheckDayOfMonth:=false
  else
    CheckDayOfMonth:=true;
end;
 
procedure EnterDate(var d: TDate);
  var
    n: integer;
    dayOk: boolean;
begin
  write('Год: ');
  readln(d.year);
  repeat
    write('Месяц (1..12): ');
    readln(n);
    if (n<1) or (n>12) then
      writeln('Ошибка! Номер месяца должен находиться в диапазоне 1..12');
  until (n>0) and (n<13);
  d.month:=n;
  repeat
    dayOk:=true;
    write('День (1..31):');
    readln(n);
    if (n<1) or (n>31) or (not CheckDayOfMonth(n,d.month, d.year)) then begin
      writeln('Ошибка! День не может иметь такое значение для выбранных '+ ' года и месяца. Выберите другой день');
      dayOk:=false;
    end;
  until dayOk;
  d.day:=n;
end;
 
function DaysFromZero(d,m,y:integer):longint;
begin
  if m>2 then
    m:=m+1
  else begin
    m:=m+13;
    y:=y-1;
  end;
  DaysFromZero:=trunc(36525*y/100+306*m/10+d);
end;
 
begin
  clrscr;
  writeln('Программа возвращает количество дней между заданной'+'датой и текущей');
  writeln;
  write  ('Введите сегодняшнее число: ');
  EnterDate(curDate);
  write  ('Введите интересующую Вас дату: ');
  EnterDate(srcDate);
  writeln('Заданная дата: ',srcDate.day,'.',srcDate.month,'.',srcDate.year);
  writeln('Сегодняшняя дата: ',curDate.day,'.',curDate.month,'.',curDate.year);
  writeln('Количество дней между этими датами = ',
    abs(DaysFromZero(curDate.day,curDate.month,curDate.year)-
    DaysFromZero(srcDate.day,srcDate.month,srcDate.year)));
  writeln('Нажмите [Enter] для завершения программы');
  readln;
end.

КТО нибудь может упростить её?

Оффлайн Do0m

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Pascal очередной головняк XD
« Ответ #2 : 08 Июня 2011, 20:41:51 »
Все упростил её сам Можно закрывать тему XD а на задачу у меня есть авторские права XD :D :D :D 8) 8) 8) 8)

 

Помогите в составлении программы на Turbo Pascal,плиз!срочно!

Автор Ymni4ka

Ответов: 1
Просмотров: 5979
Последний ответ 03 Ноября 2010, 09:27:22
от testtest
Помогите составить блок-схему и программы на языке Pascal

Автор tasha1991

Ответов: 0
Просмотров: 6591
Последний ответ 09 Января 2011, 16:33:00
от tasha1991
Pascal. Вычислить значения  du/dx, пользуясь конечно-разностным соотношением

Автор Shurara

Ответов: 0
Просмотров: 6434
Последний ответ 09 Февраля 2011, 17:54:21
от Shurara
Pascal. Решить задачу Коши для ОДУ модифицированным методом Эйлера

Автор Shurara

Ответов: 1
Просмотров: 7861
Последний ответ 10 Марта 2011, 16:39:51
от lyamec
Pascal FAQ. Напишите примеры использования процедур и функций

Автор privatnebank

Ответов: 3
Просмотров: 6023
Последний ответ 19 Февраля 2010, 16:29:25
от InfStudent