Операции над записями - Pascal

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

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

В данную программу сделать так: У кого средний бал больше 4.0 того выводит на экран.
Program KK;
const N=3;     //количество студентов 
type
    FIO = record
    family  : string[20];   // фамилия 
    name    : string[15];   // имя
    surname : string[20];   // отчество
end;
type mas=array[1..5] of byte;
type
    student=record
    studentFIO   : FIO;
    group        : byte;
    points       : mas;
end;
//*******************************************************
var BAZA : array[1..N] of student;
    m    : student;
    i,j,k  : integer;
begin
//******************заполнение данных**********************************
for i:=1 to N do
begin
    write('Фамилия: '); readln(BAZA[i].studentFIO.family);
    write('Имя: '); readln(BAZA[i].studentFIO.name);
    write('Отчество: '); readln(BAZA[i].studentFIO.surname);
    write('Группа: '); readln(BAZA[i].group);
    writeln('оценки:');
    for j:=1 to 5 do begin
        write(j,') ');
        readln(BAZA[i].points[j]);
    end;
end;
 
//******************Вывод данных**********************************
for i := 1 to N-1 do
    for j := 1 to N-i do
        if BAZA[j].studentFIO.family > BAZA[j+1].studentFIO.family then
        begin
             //SWAP(BAZA[j], BAZA[j+1]);
             m := BAZA[j];
             BAZA[j] := BAZA[j+1];
             BAZA[j+1] := m;
        end;
writeln('*********************************************************');
for i:=1 to N do
begin
    write('Фамилия: '); writeln(BAZA[i].studentFIO.family);
    write('Имя: '); writeln(BAZA[i].studentFIO.name);
    write('Отчество: '); writeln(BAZA[i].studentFIO.surname);
    write('группа: '); writeln(BAZA[i].group);
    writeln('оценки:');;
    for j:=1 to 5 do write(BAZA[i].points[j]:3);
    writeln;
writeln('*********************************************************');
end;
//*****************************************************************
k:=0;
for i:=1 to N do
begin
    for j:=1 to 5 do
        if BAZA[i].points[j] = 4 then begin
           k:=k+1;
           if k = 1 then writeln('Студенты, чей средний балл больше 4.0:');
           writeln(BAZA[i].studentFIO.family,'  ',BAZA[i].group);
           break;
        end;
end;
if k = 0 then writeln('студентов с двойками нет!');
end.

Решение задачи: «Операции над записями»

textual
Листинг программы
program KK;
 
const
  N = 3;//количество студентов 
 
type
  FIO = record
    family: string[20];   // фамилия 
    name: string[15];   // имя
    surname: string[20];   // отчество
  end;
 
type
  mas = array[1..5] of byte;
 
type
  student = record
    studentFIO: FIO;
    group: integer;
    points: mas;
  end;
//*******************************************************
var
  BAZA: array[1..N] of student;
  m: student;
  i, j, k: integer;
  sr: real;
 
begin
  //******************заполнение данных**********************************
  for i := 1 to N do
  begin
    write('Фамилия: ');readln(BAZA[i].studentFIO.family);
    write('Имя: ');readln(BAZA[i].studentFIO.name);
    write('Отчество: ');readln(BAZA[i].studentFIO.surname);
    write('Группа: ');readln(BAZA[i].group);
    writeln('оценки:');
    for j := 1 to 5 do 
    begin
      write(j, ') ');
      readln(BAZA[i].points[j]);
    end;
  end;
  
  //******************Вывод данных**********************************
  for i := 1 to N - 1 do
    for j := 1 to N - i do
      if BAZA[j].studentFIO.family > BAZA[j + 1].studentFIO.family then
      begin
        m := BAZA[j];
        BAZA[j] := BAZA[j + 1];
        BAZA[j + 1] := m;
      end;
  writeln('*********************************************************');
  for i := 1 to N do
  begin
    write('Фамилия: ');
    writeln(BAZA[i].studentFIO.family);
    write('Имя: ');
    writeln(BAZA[i].studentFIO.name);
    write('Отчество: ');
    writeln(BAZA[i].studentFIO.surname);
    write('группа: ');
    writeln(BAZA[i].group);
    writeln('оценки:');;
    for j := 1 to 5 do 
      write(BAZA[i].points[j]:3);
    writeln;
    writeln('*********************************************************');
  end;
  //*****************************************************************
  sr := 0;
  writeln('Студенты, чей средний балл больше 4.0:');
  for i := 1 to N do
  begin
    for j := 1 to 5 do
      sr := sr + BAZA[i].points[j];
    sr := sr / 5;
    if sr > 4 then 
      writeln(BAZA[i].studentFIO.family, '  ', BAZA[i].group);
  end;
end.

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

  1. Определение константы N и присвоение ей значения 3.
  2. Определение типа записи FIO со следующими полями: family (фамилия), name (имя), surname (отчество).
  3. Определение массива mas размером 5 элементов, каждый из которых имеет тип byte.
  4. Определение типа записи student с полями: studentFIO (типа FIO), group (целое число), points (массив типа mas).
  5. Объявление переменных: BAZA как массив из N элементов типа student, m как переменную типа student, i, j, k как целые числа, sr как вещественное число.
  6. Заполнение данных о студентах, включая их ФИО, группу и оценки.
  7. Сортировка студентов по фамилии в алфавитном порядке.
  8. Вывод всех данных о студентах: ФИО, группа, оценки.
  9. Вычисление и вывод студентов, чей средний балл выше 4.0.

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


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

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

10   голосов , оценка 4.2 из 5
Похожие ответы