Операции над записями - 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.