Программа


Program GroupList;
{ Группа студентов }
Const QuantityOfStudents=25;                     { Кол-во студентов в группе }
      QuantityOfTerm=12;                                  { Кол-во семестров }
Var List:array[1..QuantityOfStudents] of                     { Массив группы }
      record
        FamilyName:string[10];                                     { Фамилия }
        DateOfBirth:record                                   { Дата рождения }
                      day:1..31;
                      month:1..12;
                      year:integer;
                    end;
        YearOfEntrance:integer;                            { Год поступления }
        Course:1..6;                                                  { Курс }
        Group:string[6];                                            { Группа }
        Mark:array[1..QuantityOfTerm] of 3..5          { Оценки по семестрам }
      end;
Procedure InputData;                                { Процедура ввода данных }
  var i,j:integer;                                                { Счетчики }
  Begin
    for i:=1 to QuantityOfStudents do               { Цикл просмотра массива }
      with List[i] do                       { Присоединение заголовка записи }
        begin
          WriteLn('N° ',i);                            { Вывод номера записи }
          Write('Фамилия ');                               { Вывод подсказки }
          ReadLn(FamilyName);                              { и ввод фаимилии }
          while Length(FamilyName)<10 do FamilyName:=FamilyName+' ';
                                 { Выравнивание длины фамилии до 10 символов }
          with DateOfBirth do            { Присоединение подзаголовка записи }
            begin
              Write('Дата рождения - число ');          { Ввод даты рождения }
              ReadLn(Day);
              Write('              - месяц ');
              ReadLn(Month);
              Write('              - год   ');
              ReadLn(Year);
            end;
          Write('Год поступления ');                 { Ввод года поступления }
          ReadLn(YearOfEntrance);
          Write('Курс ');                                       { Ввод курса }
          ReadLn(Course);
          Write('Группа ');                                    { Ввод группы }
          ReadLn(Group);
          for j:=1 to QuantityOfTerm do                  { Цикл ввода оценок }
            begin
              Write('Оценка ',j,'-го семестра ');              { Ввод оценки }
              ReadLn(Mark[j])
            end
        end;
  End;
Procedure OutputData;                              { Процедура вывода данных }
  var i,j:integer;                                                { Счетчики }
  Begin
    WriteLn;
    { Вывод шапки таблицы: }
WriteLn('┌────┬────────────┬──────────┬───────┬────┬────────┬──────────────┐');
WriteLn('│ N° │   Фамилия  │Дата рожд.│г.пост.│курс│ группа │    Оценки    │');
WriteLn('├────┼────────────┼──────────┼───────┼────┼────────┼──────────────┤');
    for i:=1 to QuantityOfStudents do   { Цикл вывода информации о студентах }
      with List[i] do                       { Присоединение заголовка записи }
        begin
          Write('│ ',i:2,' │ ');       { Вывод номера записи и линий таблицы }
          { Вывод полей записи текущего студента и линий таблицы: }
          Write(FamilyName,' │ ');
          with DateOfBirth do Write(Day:2,'.',Month:2,'.',Year:2,' │ ');
          Write(YearOfEntrance:5,' │ ',Course:2,' │ ',Group:6,' │ ');
          for j:=1 to QuantityOfTerm do Write(Mark[j]); { Цикл вывода оценок }
          WriteLn(' │')
        end;
    { Вывод нижней линии таблицы: }
WriteLn('└────┴────────────┴──────────┴───────┴────┴────────┴──────────────┘');
  End;
Procedure OutputOriginalData;
        { Процедура вывода данных остудентах, получивших в первом семестре  5}
  var i,j:integer;                                                { Счетчики }
  Begin
    { Пропуск строки, вывод заголовка и шапки таблицы: }
    WriteLn;
    WriteLn('Отличники первого семестра');
WriteLn('┌────┬────────────┬──────────┬───────┬────┬────────┬──────────────┐');
WriteLn('│ N° │   Фамилия  │Дата рожд.│г.пост.│курс│ группа │    Оценки    │');
WriteLn('├────┼────────────┼──────────┼───────┼────┼────────┼──────────────┤');
    for i:=1 to QuantityOfStudents do                    { Просмотра массива }
      with List[i] do                       { Присоединение заголовка записи }
        if Mark[1]=5 then            { Если оценка первого семестра  - 5, то }
          begin                                      { вывод записи студента }
            Write('│ ',i:2,' │ ');
            Write(FamilyName,' │ ');
            with DateOfBirth do Write(Day:2,'.',Month:2,'.',Year:2,' │ ');
            Write(YearOfEntrance:5,' │ ',Course:2,' │ ',Group:6,' │ ');
            for j:=1 to QuantityOfTerm do Write(Mark[j]);
            WriteLn(' │')
          end;
    { Вывод нижней линии таблицы: }
WriteLn('└────┴────────────┴──────────┴───────┴────┴────────┴──────────────┘');
  End;
Procedure Stop;                              { Процедура остановки программы }
  Begin
    WriteLn;                                                { Пропуск строки }
    WriteLn('Нажмите [Enter]');           { Вывод приглашения нажать [Enter] }
    ReadLn                                               { Ввод конца строки }
  End;
BEGIN
  InputData;                                                   { Ввод данных }
  OutputData;                                                 { Вывод данных }
  Stop;                             { Остановка программы до нажатия [Enter] }
  OutputOriginalData;                           { Вывод данных об отличниках }
  Stop;                             { Остановка программы до нажатия [Enter] }
END.

Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию