Распечатать список учеников, фамилии которых начинаются на букву В - PascalABC.NET
Формулировка задачи:
Распечатать список учеников, фамилии которых начинаются на букву В, с указанием даты их рождения.
Решение задачи: «Распечатать список учеников, фамилии которых начинаются на букву В»
textual
Листинг программы
uses System, Crt; type tStudent = record F, I, O : String[20]; D : DateTime; end; var Ch : Char; begin Randomize; var L := New List<tStudent>; repeat var S : tStudent; S.F := ReadLnString('Фамилия ученика:'); S.I := ReadLnString(' имя:'); S.O := ReadLnString(' отчество:'); repeat Ch := '+'; try var sD := ReadLnString('Дата рождения вида ДД.ММ.ГГГГ ='); S.D := System.DateTime.Parse(sD); except WriteLn('Неверный ввод даты!'); Ch := '-'; end; until Ch = '+'; L.Add(S); Write(NewLine, 'Желаете продолжить ввод учеников (Д/Н) : '); repeat Ch := ReadKey; until Ch in ['Д', 'д', 'Н', 'н']; WriteLn(Ch, NewLine); until Ch in ['Н', 'н']; WriteLn(NewLine, 'Список учеников, фамилии которых начинаются на букву «В»:'); var count := 0; foreach var S in L do if (S.F.Length > 0) and (UpperCase(S.F[1]) = 'В') then begin count += 1; WriteLnFormat('{4}) {0} {1} {2} - {3}', S.F, S.I, S.O, S.D.ToLongDateString, count); end; if count = 0 then WriteLn('Нет таких учеников.'); WriteLn; end.
Объяснение кода листинга программы
Вот что происходит в коде:
- Объявляются переменные и типы данных:
- Ch - символ, используемый для обозначения текущего статуса ввода.
- L - список объектов типа tStudent, который будет содержать информацию об учениках.
- tStudent - запись, представляющая одного ученика. Содержит поля для фамилии, имени, отчества и даты рождения.
- В цикле repeat происходит ввод информации об ученике:
- В начале каждого ученика запрашивается фамилия.
- Если фамилия пустая, то цикл прерывается.
- Запрашиваются имя и отчество.
- В цикле repeat запрашивается дата рождения. Если ввод неверный, выводится сообщение об ошибке и цикл прерывается.
- Информация об ученике добавляется в список L.
- После ввода информации о каждом ученике запрашивается желание продолжить ввод (Д/Н). Если введено Н, то выводится сообщение и процесс ввода завершается.
- После окончания ввода информации о всех учениках выводится сообщение
Список учеников, фамилии которых начинаются на букву «В»:
. - Переменная count инициализируется нулем и используется для подсчета количества учеников с фамилией на букву
В
. - В цикле foreach перебираются все ученики в списке L.
- Если фамилия ученика не пустая и первая буква фамилии -
В
, то выводится информация об ученике в форматеФамилия Имя Отчество - Дата рождения
и увеличивается счетчик count. - Если после перебора всех учеников счетчик count равен нулю, выводится сообщение
Нет таких учеников.
. - В конце программы выводится символ новой строки для завершения текущего сообщения.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д