написать программу для Pascal, которая будет удалять номера учеников из массива, средний балл которых меньше 5. нужно использовать команду del_mas
Ответы
Ответ:
Объяснение:
program RemoveStudents;
var
Students: array of record
Name: string;
AverageGrade: real;
end;
NumStudents, i, NewNumStudents: integer;
begin
writeln('Введите количество учеников:');
readln(NumStudents);
SetLength(Students, NumStudents); // Выделяем память под массив
// Заполняем массив данными
for i := 0 to NumStudents - 1 do
begin
writeln('Введите имя ученика ', i + 1, ':');
readln(Students[i].Name);
writeln('Введите средний балл ученика ', i + 1, ':');
readln(Students[i].AverageGrade);
end;
// Создаем новый массив без учеников, средний балл которых меньше 5
NewNumStudents := 0;
for i := 0 to NumStudents - 1 do
begin
if Students[i].AverageGrade >= 5 then
begin
Students[NewNumStudents] := Students[i];
Inc(NewNumStudents);
end;
end;
SetLength(Students, NewNumStudents); // Устанавливаем новую длину массива
// Выводим оставшихся учеников
writeln('Оставшиеся ученики с средним баллом >= 5:');
for i := 0 to NewNumStudents - 1 do
begin
writeln('Имя: ', Students[i].Name, ', Средний балл: ', Students[i].AverageGrade);
end;
end.
type
Student = record
fio: string; // Фамилия, инициалы
avg: real // средний балл
end;
procedure del_mas(var x: array of Student) := x := x.Where(r -> r.Avg = 5).ToArray;
begin
var n := ReadlnInteger; // Размер массива
var Stud := new Student[n]; // создаем массив
for var i := 0 to n - 1 do Ф // заполняем массив
begin
Stud[i].fio := ReadlnString; // ввод фамилии, инициалов
Stud[i].avg := ReadlnReal; // ввод среднего балла
end;
del_mas(Stud);
Stud.Printlines(st -> $'{st.fio.PadRight(20)} {st.avg}')
end.