Распечатать список учеников, фамилии которых начинаются на букву В - 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 равен нулю, выводится сообщение
Нет таких учеников.. - В конце программы выводится символ новой строки для завершения текущего сообщения.