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