Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 24.03.2021
Сообщений: 56

С клавиатуры вводятся даты рождения

19.05.2021, 14:53. Показов 1055. Ответов 8

Студворк — интернет-сервис помощи студентам
Поомогите пожалуйста сделать на PascalABC.NET
С клавиатуры вводятся даты рождения N сотрудников. Записать в текстовый файл возраста всех сотрудников.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.05.2021, 14:53
Ответы с готовыми решениями:

С клавиатуры вводятся фамилии и даты рождения двух людей. Вывести фамилию старшего
С клавиатуры вводятся фамилии и даты рождения двух людей. Вывести фамилию старшего. Если даты совпадают, то вывести обе фамилии. Не...

Дан перечень дат. Рассортировать эти даты в порядке возрастания (данные - даты вводятся с клавиатуры)
Собственно сама задача: Дан перечень дат (формат - "21 сентября 1982 г."). Рассортировать эти даты в порядке возрастания (данные - даты...

Запрет ввода даты рождения и даты выдачи водительского удостоверения, меньше 18 лет
Доброй ночи, программисты! Помогите пожалуйста: с запретом ввода даты рождения и даты выдачи водительского удостоверения, меньше 18 лет. ...

8
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,434
19.05.2021, 17:52
Подглядывайте:
Ввод даты рождения и вывод возраста
0
58 / 42 / 21
Регистрация: 01.01.2018
Сообщений: 273
19.05.2021, 17:58
ZX Spectrum-128, а можно как-то через DateTime?

Подглядел в нескольких источниках, но перевод работает некорректно:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
uses System,
  System.Globalization;
 
function getAge(date: String): Integer;
begin
  var birthdate: DateTime;
  var provider := CultureInfo.InvariantCulture;
  var format := 'dd mm yyyy';
  if (not DateTime.TryParseExact(date, format, provider, DateTimeStyles.None, birthdate)) then
  begin
    println('Неверный формат даты:', date);
    Halt;
  end;
  var today := DateTime.Today;
  var age := today.Year - birthDate.Year;
  if (birthdate.Date > today.AddYears(-age)) then age -= 1;
  result := age;
  println(result);
end;
 
begin
  var t: Text;
  assign(t, 'output.txt');
  t.Rewrite;
  var n := readlnInteger('Введите количество сотрудников:');
  loop n do
    writeln(t, getAge(
        readlnString('Введите дату рождения сотрудника:')
      )
    );
  t.Close;
end.
Если точнее, некорректно переводится в дату введенный месяц.

Смотрел сюда и сюда
1
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,434
19.05.2021, 18:02
Ksardas_178, скорее всего для ТС это учебная задача.
И чем проще, тем лучше
0
58 / 42 / 21
Регистрация: 01.01.2018
Сообщений: 273
19.05.2021, 18:03
Цитата Сообщение от ZX Spectrum-128 Посмотреть сообщение
скорее всего для ТС это учебная задача.
И чем проще, тем лучше
Могу разве что создать еще ветку. Интересно же)
0
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,434
19.05.2021, 18:05
В том смысле, что нужен классический вариант языка Паскаль с минимальным привлечением библиотек 1970+.


Добавлено через 30 секунд
Ksardas_178, и мне тоже...
0
58 / 42 / 21
Регистрация: 01.01.2018
Сообщений: 273
19.05.2021, 18:43
Цитата Сообщение от ZX Spectrum-128 Посмотреть сообщение
и мне тоже...
Вот "сложный" вариант целиком. Рабочий.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
uses System,
  System.Globalization;
 
function getAge(date: String): Integer;
begin
  var birthdate: DateTime;
  var provider := CultureInfo.InvariantCulture;
  var format := 'dd MM yyyy';
  if (not DateTime.TryParseExact(date, format, provider, DateTimeStyles.None, birthdate)) then
    raise new Exception('Неверный формат введенной даты. Ожидалось "dd MM yyyy"');
  var today := DateTime.Today;
  var age := today.Year - birthDate.Year;
  if (birthdate.Date > today.AddYears(-age)) then age -= 1;
  result := age;
end;
 
begin
  var t: Text;
  assign(t, 'output.txt');
  t.Rewrite;
  var n := readlnInteger('Введите количество сотрудников:');
  loop n do
    writeln(t, getAge(
        readlnString('Введите дату рождения сотрудника:')
      )
    );
  t.Close;
end.
Кстати говоря, Ваша первая ссылка, скорее всего, мало относится к теме. Здесь скорее задача сравнить даты, а не вывести подпись к числу в требуемом виде.
0
0 / 0 / 0
Регистрация: 24.03.2021
Сообщений: 56
21.05.2021, 21:42  [ТС]
Цитата Сообщение от Ksardas_178 Посмотреть сообщение
Вот "сложный" вариант целиком. Рабочий.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
uses System,
  System.Globalization;
 
function getAge(date: String): Integer;
begin
  var birthdate: DateTime;
  var provider := CultureInfo.InvariantCulture;
  var format := 'dd MM yyyy';
  if (not DateTime.TryParseExact(date, format, provider, DateTimeStyles.None, birthdate)) then
    raise new Exception('Неверный формат введенной даты. Ожидалось "dd MM yyyy"');
  var today := DateTime.Today;
  var age := today.Year - birthDate.Year;
  if (birthdate.Date > today.AddYears(-age)) then age -= 1;
  result := age;
end;
 
begin
  var t: Text;
  assign(t, 'output.txt');
  t.Rewrite;
  var n := readlnInteger('Введите количество сотрудников:');
  loop n do
    writeln(t, getAge(
        readlnString('Введите дату рождения сотрудника:')
      )
    );
  t.Close;
end.
Кстати говоря, Ваша первая ссылка, скорее всего, мало относится к теме. Здесь скорее задача сравнить даты, а не вывести подпись к числу в требуемом виде.
а что означает getAge?
Цитата Сообщение от Ksardas_178 Посмотреть сообщение
writeln(t, getAge(
        readlnString('Введите дату рождения сотрудника:')
0
58 / 42 / 21
Регистрация: 01.01.2018
Сообщений: 273
22.05.2021, 13:56
Цитата Сообщение от Акакакий Посмотреть сообщение
а что означает getAge?
Это вызов функции с параметром (строчка, вводимая с клавиатуры)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.05.2021, 13:56
Помогаю со студенческими работами здесь

На основе введенной даты рождения и текущей даты сообщить пользователю, сколько он прожил дней
3. Написать программу, которая на основе введенной даты рождения и текущей даты сообщает пользователю, сколько он прожил дней. Принять во...

Расчитать возраст человека от даты рождения до текущей даты
Помогите!!! Нужно расчитать возраст человека от даты рождения до текущей даты. Например: 1996-2015 19 лет

С клавиатуры вводятся символы, записать в память последние три латинские буквы из буфера клавиатуры
Написать программу в учебной модели ЭВМ С клавиатуры вводятся 10 символов, записать в память, начиная с 60 адреса последние три...

С клавиатуры вводятся 10 символов, записать в память, начиная с 50 адреса все цифры из буфера клавиатуры
Помогите пожалуйста, кто соображает в ассемблере!! :scare: Курсовую дали с заданием: С клавиатуры вводятся 10 символов, записать в...

С клавиатуры вводятся 7 символов,записать в память,начиная с 60 адреса все строчные латинские буквы из буфера клавиатуры
Здравствуйте, помогите пожалуйста!!! С клавиатуры вводятся 7 символов,записать в память,начиная с 60 адреса все строчные латинские буквы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru