Распечатать список учеников, фамилии которых начинаются на букву В - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Распечатать список учеников, фамилии которых начинаются на букву В, с указанием даты их рождения.

Решение задачи: «Распечатать список учеников, фамилии которых начинаются на букву В»

textual
Листинг программы
  1. uses
  2.   System, Crt;
  3.  
  4. type
  5.   tStudent = record
  6.     F, I, O : String[20];
  7.     D : DateTime;
  8.   end;
  9.  
  10. var
  11.   Ch : Char;  
  12. begin
  13.   Randomize;
  14.   var L := New List<tStudent>;
  15.   repeat
  16.     var S : tStudent;
  17.     S.F := ReadLnString('Фамилия ученика:');
  18.     S.I := ReadLnString('            имя:');
  19.     S.O := ReadLnString('       отчество:');
  20.     repeat
  21.       Ch := '+';
  22.       try
  23.         var sD := ReadLnString('Дата рождения вида ДД.ММ.ГГГГ =');
  24.         S.D := System.DateTime.Parse(sD);
  25.       except
  26.         WriteLn('Неверный ввод даты!');
  27.         Ch := '-';
  28.       end;
  29.     until Ch = '+';
  30.     L.Add(S);
  31.    
  32.     Write(NewLine, 'Желаете продолжить ввод учеников (Д/Н) : ');
  33.     repeat
  34.       Ch := ReadKey;
  35.     until Ch in ['Д', 'д', 'Н', 'н'];
  36.     WriteLn(Ch, NewLine);
  37.   until Ch in ['Н', 'н'];
  38.  
  39.   WriteLn(NewLine, 'Список учеников, фамилии которых начинаются на букву «В»:');
  40.   var count := 0;
  41.   foreach var S in L do
  42.     if (S.F.Length > 0) and (UpperCase(S.F[1]) = 'В') then
  43.       begin
  44.         count += 1;
  45.         WriteLnFormat('{4}) {0} {1} {2} - {3}', S.F, S.I, S.O, S.D.ToLongDateString, count);
  46.       end;
  47.   if count = 0 then WriteLn('Нет таких учеников.');
  48.   WriteLn;
  49. end.

Объяснение кода листинга программы

Вот что происходит в коде:

  1. Объявляются переменные и типы данных:
    • Ch - символ, используемый для обозначения текущего статуса ввода.
    • L - список объектов типа tStudent, который будет содержать информацию об учениках.
    • tStudent - запись, представляющая одного ученика. Содержит поля для фамилии, имени, отчества и даты рождения.
  2. В цикле repeat происходит ввод информации об ученике:
    • В начале каждого ученика запрашивается фамилия.
    • Если фамилия пустая, то цикл прерывается.
    • Запрашиваются имя и отчество.
    • В цикле repeat запрашивается дата рождения. Если ввод неверный, выводится сообщение об ошибке и цикл прерывается.
    • Информация об ученике добавляется в список L.
  3. После ввода информации о каждом ученике запрашивается желание продолжить ввод (Д/Н). Если введено Н, то выводится сообщение и процесс ввода завершается.
  4. После окончания ввода информации о всех учениках выводится сообщение Список учеников, фамилии которых начинаются на букву «В»:.
  5. Переменная count инициализируется нулем и используется для подсчета количества учеников с фамилией на букву В.
  6. В цикле foreach перебираются все ученики в списке L.
  7. Если фамилия ученика не пустая и первая буква фамилии - В, то выводится информация об ученике в формате Фамилия Имя Отчество - Дата рождения и увеличивается счетчик count.
  8. Если после перебора всех учеников счетчик count равен нулю, выводится сообщение Нет таких учеников..
  9. В конце программы выводится символ новой строки для завершения текущего сообщения.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы