Другие языки программирования и технологии

Не могу разобраться с Паскалем) Помогите

Задали решить задачу. Я, вроде, понял, но оформить не могу. Прошу помощи. Вот задание :

Даны массивы :
Т1...Т10 - телефоны задолжников
F1...F10 - фамилии задолжников
D1..D10 - даты разговоров задолжников
DT - текущая дата
Напечатать список должников, у которых истек срок платежа ( срок платежа - 15 дней ).

По идеи, просто ввести 3 массива, в конце использовать формулу D-DT>15, наверное, я не уверен. И еще, пожалуйста, как сделать ввод данных в массивы табоицей? Спасибо заранее
Тут основная заковырка: какой Паскаль используется?
Т. к. в ТурбоПаскале нет работы с датой.
Её нужно настроить:
{ функция преобразует дату в число дней от 1.01.2000 }
function DatToLong(D, M : Byte; Y : Word):Longint;
var L : Longint;
begin
L := D;
while (M > 0) and (Y > 2000) do
begin
Dec(M); if M = 0 then begin Dec(Y); M := 12; end;
case M of
1, 3, 5, 7, 8, 10, 12 : D := 31;
4, 6, 9, 11 : D := 30;
else { февраль }
if Y mod 4 = 0 then D := 29 else D := 28;
end;
L := L + D;
end;
DatToLong := L;
end;
Теперь в программе можно вычислять разность между двумя датами:
const Size = 10;
Srok = 15;
type DType = record D, M : Byte; Y : Word; end;
var T : array [1..Size] of String[13]; F : array [1..Size] of String; D : array [1..Size] of DType;
N : Byte; Now : DType;
begin
for N := 1 to Size do
begin
Write('Введите N телефона ', N, ' абонента: '); ReadLn(T[N]);
Write('Введите фамилию ', N, ' абонента: '); ReadLn(F[N]);
Write('Введите дату разговоров ', N, ' абонента через пробел День (от 1 до 31), Месяц (от 1 до 12), Год (от 2000): '); ReadLn(D[N].D, D[N].M, D[N].Y);
end;
Write('Введите текущую дату через пробел День (от 1 до 31), Месяц (от 1 до 12), Год (от 2000): '); ReadLn(Now.D, Now.M, Now.Y);
WriteLn;
WriteLn('Срок платежа истёк: ');
for N := 1 to Size do
if DatToLong(Now.D, Now.M, Now.Y) - Srok > DataToLong(D[N].D, D[N].M, D[N].Y) then
WriteLn(T[N]:15, F[N]);
end.
В программе не реализована проверка правильности вводимой даты - это на самостоятельную работу.. . если преподу не понравится ;-)
Коля Головин
Коля Головин
52 442
Лучший ответ
чтобы заполнить массивы нужно циклом пройтись по всем задолжникам
write("введите телефон ", i, " задолжника"); T[ i ] := readln();
write("как его фамилия? "); F[ i ] := readln();
write("дата разговора"); D[ i ] := readln();

в другом цикле сравниваются даты и выводится на экран задолжник если условие выполняется DT-D[ i ]>15

| 2 Jurii чтобы не мучиться с классами можно попросить записывать дату в формате ГГГГММДД и будет все прекрасно вычитаться
например 3 февраля 2011 - 1 января 2011 = 20110203 - 20110101 = 102 тоесть прошло 1 месяц и 2 дня