Другие языки программирования и технологии
Программа в pascal abc
Разработать программу в pascal ABC с комментариями, которая в зависимости от введенный даты рождения с клавиатуры определяет возраст на текущий момент (количество дней, месяцев и лет). Предусмотреть правильное окончание.
begin
var ДатаКорректна: boolean;
var ДРстр: String;
var ДатаРождения: DateTime;
var Лет, Месяцев, Дней: integer;
var cu := System.Globalization.CultureInfo.GetCultureInfo('ru-RU');
repeat
try
ДРстр := ReadlnString('Введите дату вашего рождения в формате ДД. ММ. ГГГГ:');
ДРстр := ДРстр [1:3]+'.'+ДРстр [4:6]+'.'+ДРстр [7:11];
ДатаКорректна := true;
ДатаРождения := DateTime.ParseExact(ДРстр, 'd', cu); //извлекаем дату в RU-формате
except
ДатаКорректна := false;
Println('Дата введена не корректно');
end;
until ДатаКорректна;
var ДатаСегодня := DateTime.Now;
Println('Вы родились:',ДатаРождения. ToString('d', cu),'-',ДатаРождения. ToString('dddd', cu));
Println('Сегодня ', ДатаСегодня. ToString('d', cu),'-',ДатаСегодня. ToString('dddd', cu));
Лет := ДатаСегодня. Year - ДатаРождения. Year;
ДатаРождения := ДатаРождения. AddYears(+ Лет);
if (ДатаСегодня - ДатаРождения. AddDays(-1)).days < 1 then dec(Лет);
var ДнейПослеДР := (ДатаСегодня-ДатаРождения). days;
Месяцев := ДнейПослеДР >= 0? ДатаСегодня. Month - ДатаРождения. Month : 12 - ДатаРождения. Month + ДатаСегодня. Month;
Дней := ДатаСегодня. Day - ДатаРождения. Day;
if Дней < 0 then
begin dec(Месяцев);
Дней := ДатаСегодня. Day + (ДатаСегодня. AddDays(-ДатаСегодня. day)).Day - (ДатаРождения. AddMonths(Месяцев)) .Day;
end;
if Месяцев = -1 then Месяцев := 11;
var Вывод := 'Прошло '+Лет+' ';
case Лет mod 10 of
0: Вывод += 'лет,';
1: Вывод += 'год,';
2..4: Вывод += 'года,';
5..9: Вывод += 'лет,';
end;
Вывод += ' '+Месяцев+' ';
case Месяцев mod 10 of
0: Вывод += 'месяцев,';
1: Вывод += 'месяц,';
2..4: Вывод += 'месяца,';
5..12: Вывод += 'месяцев,';
end;
Вывод += ' '+Дней+' ';
case Дней mod 10 of
0: Вывод += 'дней';
1: Вывод += 'день';
2..4: Вывод += 'дня';
5..9: Вывод += 'дней';
end;
Вывод. Println;
end.
var ДатаКорректна: boolean;
var ДРстр: String;
var ДатаРождения: DateTime;
var Лет, Месяцев, Дней: integer;
var cu := System.Globalization.CultureInfo.GetCultureInfo('ru-RU');
repeat
try
ДРстр := ReadlnString('Введите дату вашего рождения в формате ДД. ММ. ГГГГ:');
ДРстр := ДРстр [1:3]+'.'+ДРстр [4:6]+'.'+ДРстр [7:11];
ДатаКорректна := true;
ДатаРождения := DateTime.ParseExact(ДРстр, 'd', cu); //извлекаем дату в RU-формате
except
ДатаКорректна := false;
Println('Дата введена не корректно');
end;
until ДатаКорректна;
var ДатаСегодня := DateTime.Now;
Println('Вы родились:',ДатаРождения. ToString('d', cu),'-',ДатаРождения. ToString('dddd', cu));
Println('Сегодня ', ДатаСегодня. ToString('d', cu),'-',ДатаСегодня. ToString('dddd', cu));
Лет := ДатаСегодня. Year - ДатаРождения. Year;
ДатаРождения := ДатаРождения. AddYears(+ Лет);
if (ДатаСегодня - ДатаРождения. AddDays(-1)).days < 1 then dec(Лет);
var ДнейПослеДР := (ДатаСегодня-ДатаРождения). days;
Месяцев := ДнейПослеДР >= 0? ДатаСегодня. Month - ДатаРождения. Month : 12 - ДатаРождения. Month + ДатаСегодня. Month;
Дней := ДатаСегодня. Day - ДатаРождения. Day;
if Дней < 0 then
begin dec(Месяцев);
Дней := ДатаСегодня. Day + (ДатаСегодня. AddDays(-ДатаСегодня. day)).Day - (ДатаРождения. AddMonths(Месяцев)) .Day;
end;
if Месяцев = -1 then Месяцев := 11;
var Вывод := 'Прошло '+Лет+' ';
case Лет mod 10 of
0: Вывод += 'лет,';
1: Вывод += 'год,';
2..4: Вывод += 'года,';
5..9: Вывод += 'лет,';
end;
Вывод += ' '+Месяцев+' ';
case Месяцев mod 10 of
0: Вывод += 'месяцев,';
1: Вывод += 'месяц,';
2..4: Вывод += 'месяца,';
5..12: Вывод += 'месяцев,';
end;
Вывод += ' '+Дней+' ';
case Дней mod 10 of
0: Вывод += 'дней';
1: Вывод += 'день';
2..4: Вывод += 'дня';
5..9: Вывод += 'дней';
end;
Вывод. Println;
end.
Похожие вопросы
- Проблема с программой в Pascal ABC,Встречено ';',а ожидалось ':'. Если менять, то вылетает ещё ошибка с if
- Подскажите пожалуйста, какая ошибка в программе на Pascal ABC.NET?
- При введении программы на Pascal ABC выдается ошибка "нельзя вводить данные типа "массив", массивы вводятся поэлементно
- Нужно создать программу в Pascal ABC.NET
- Помогите составить программу в Pascal ABC
- Напишите пожалуйста 2 программы в pascal ABC, программы в описании
- Помогите написать программу в Pascal abc net
- Помогите написать программы по Pascal ABC
- Напишите пожалуйста программы для Pascal ABC:
- Составте программу в pascal ABC
if Лет <> 0 then begin
Вывод += ' '+Лет+' ';
case Лет mod 10 of
0: Вывод += 'лет,';
1: Вывод += 'год,';
2..4: Вывод += 'года,';
5..9: Вывод += 'лет,';
end; end;
if Месяцев <> 0 then begin Вывод += ' '+Месяцев+' ';
case Месяцев of
1: Вывод += 'месяц,';
2..4: Вывод += 'месяца,';
5..12: Вывод += 'месяцев,';
end;end;
if Дней > 0 then begin Вывод += ' '+Дней+' ';
case Дней of
1,21: Вывод += 'день';
2..4,22..24: Вывод += 'дня';
5..9,10..20, 25..30: Вывод += 'дней';
end;end;
If Вывод = 'Прошло:' then Println('Дни совпадают') else Вывод. Println;