Фильтрация записей по значению поля

Задача

Вывести на экран фамилии студентов, чей балл выше среднего по группе.

Решение

 

Описание переменных: 

arr_studs – группа студентов;
average – средний балл в группе.

Программа на языке Паскаль: 

 

type
    studs = record
        sname: string[25];
        eval: integer;
    end;
var
    arr_studs: array[1..15] of studs;
    sum: integer;
    average: real;
    i,n: byte;
begin
    write('Количество студентов: ');
    readln(n);
    sum := 0;
    for i:=1 to n do
        with arr_studs[i] do begin
            write(i,'-й студент: ');
            readln(sname);
            write('   Оценка: ');
            readln(eval);
            sum := sum + eval;
        end;
    average := sum / n;
writeln;
    writeln('Студенты с оценкой выше средней:');
    for i:=1 to n do
        if arr_studs[i].eval > average then
            writeln(arr_studs[i].sname);
readln
end.

 

Тема

Записи

Уровень

Простые задачи

Комментарии

Структура записи:

  • фамилия студента;
  • название дисциплины;
  • количество выполненных работ;
  • количество защищенных отчетов.

Определить общее количество выполненных, но не сданных работ, для заданного студента по всем дисциплинам.

const Q = 100;
type
    stud = record
        sname: string[30];
        subj: string[40];
        jobs: byte;
        reps: byte;
    end;
var
    studs: array[1..Q] of stud;
    i,n: byte;
    name: string[30];
    j,r: integer;
begin
    write('Количество записей: ');
    readln(n);
    for i:=1 to n do
        with studs[i] do begin
            write(i,'. Фамилия: ');
            readln(sname);
            write('   Дисциплина: ');
            readln(subj);
            write('   Количество выполненных и защищенных работ: ');
            readln(jobs,reps);
        end;
    writeln;
    write('Искомый студент: ');
    readln(name);
    j := 0;
    r := 0;
    for i:=1 to n do
        if studs[i].sname = name then begin
            j := j + studs[i].jobs;
            r := r + studs[i].reps;
        end;
    writeln('Работ выполнил: ', j);
    writeln('Работ сдал: ', r);
    writeln('Количество несданных: ', j - r);
end.

Пример выполнения программы:

Количество записей: 5
1. Фамилия: Иванов А.
   Дисциплина: алгебра
   Количество выполненных и защищенных работ: 10 5
2. Фамилия: Петров Н.
   Дисциплина: геометрия
   Количество выполненных и защищенных работ: 7 7
3. Фамилия: Иванов А.
   Дисциплина: черчение
   Количество выполненных и защищенных работ: 3 2
4. Фамилия: Котов Д.
   Дисциплина: алгебра
   Количество выполненных и защищенных работ: 8 6
5. Фамилия: Котов Д.
   Дисциплина: физика
   Количество выполненных и защищенных работ: 9 8
 
Искомый студент: Иванов А.
Работ выполнил: 13
Работ сдал: 7
Количество несданных: 6

Добавить комментарий