Помощь - Поиск - Пользователи - Календарь
Полная версия: Работа с датами
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
nSk
Можете помочь .
Как написать программу которой вводишь дату ,
и она проверяет её правельность,
тоесть если ей ввел 32 декабря она скажет что такого не бывает или там 30 февраля . формат дату такой ДЕНЬ.Месяц.Год например [ 02.12.2005 ]
volvo
nSk, вот программа, которая принимает 3 числа (через пробел, DD MM YYYY) и выдает корректность введенной даты...
const
days: array[1 .. 12] of byte =
(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var
D, M, Y: Integer;

begin
write('DD/MM/YYYY'); readln(D, M, Y);
if ((Y mod 4) = 0) and
not (((Y mod 100) = 0) and ((Y mod 400) <> 0)) then inc(days[2]);

if
(M >= 1) and (M <= 12) and
(D >= 1) and (D <= days[ M ])
then
writeln('correct') else writeln('not correct');
end.
nSk
спасибо smile.gif
nSk
а можешь объеснить строчки
Код

if ((Y mod 4) = 0) and
not (((Y mod 100) = 0) and ((Y mod 400) <> 0)) then inc(days[2]);




и еще хотел спросить, где можно найти статьи о Array чтоб написано доступним и понятным языком (всмысле для начинающих).
volvo
В тех строчках проверяется високосный ли введенный год, или нет... И если високосный, то число дней в феврале (второй месяц) увеличивается на 1...

Цитата
где можно найти статьи о Array

У нас в FAQ-е: FAQ: Массивы
kamnev
Вот типо того:

const masiv=100;
BM:array[1..13] of integer =(0,31,59,90,120,151,181,212,243,273,304,334,365);
var
P,I1,I2 :integer;
begin
repeat
repeat
writeln('Введите дату :');
readln (Dt[i]);
val(copy(Dt[i],1,2),I1,l);
val(copy(Dt[i],4,2),I2,l);
If copy(Dt[i],3,1)<>'.' then writeln('Дата должна бать в формате дд.мм');
if I2>12 then writeln('Месяц не может быть больше 12');
until I2<=12;
If BM[I2+1]-I1<BM[I2] then writeln('День не соответствут числу дней в заданном месяце');
until (copy(Dt[i],3,1)='.') and (BM[I2+1]-I1>=BM[I2]);
P=I1+BM[I2];
klem4
kamnev В следующий раз смотри пожалуйста на дату создания темы ...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.