Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Delphi_Ч2.doc
Скачиваний:
15
Добавлен:
02.11.2018
Размер:
1.7 Mб
Скачать
      1. Сортировка записей по количеству неудовлетворительных оценок и среднему баллу

Для этой сортировки можно также предварительно написать соответствующую функцию сравнения. Ниже приведена такая функция.

// Допоміжна функція для cортування за результатами атестації

function compareResult(const r1, r2:TAttRec): boolean;

begin

if r1.neud <> r2.neud

then result := r1.neud < r2.neud

else result := r1.srBall > r2.srBall;

end;

Наличие этой функции позволяет нам написать процедуру сортировки, которая будет отличаться от рассмотренной выше только именем функции, вызываемой для сравнения. Вместо вызова compareGrFio(ar[j], ar[j+1]), в процедуре сортировки нужно будет написать compareResult(ar[j], ar[j+1]). Кроме того, у процедуры должно быть другое имя, например, sortAttArrayResult.

      1. Выборка студентов какой-нибудь группы, имеющих средний балл выше 4

Для решения этой задачи вначале напишем процедуру формирования соответствующего массива записей путем выборки нужных записей из исходного массива. Ниже приведена эта процедура.

// Допоміжна процедура відбору студентів заданої групи,

// що мають середній бал більше ніж 4

procedure createRecordArrayMoreThen4(const ar: TAttArray; count: integer;

gr:TGroup; var ar4: TAttArray; var count4:integer);

var i: integer;

begin

count4 := 0;

for i:=1 to count do

if (ar[i].group = gr) and (ar[i].srBall >=4) and (ar[i].neud = 0)

then begin

count4 := count4 + 1;

ar4[count4] := ar[i];

end;

end;

Наличие этой процедуры позволяет нам написать процедуру обработки события нажатия на кнопку «Выбрать ударников какой-то группы». Код процедуры приведен ниже.

// Процедура вибору хорошистів групи

procedure TfrmRecord.btn4Click(Sender: TObject);

var ar, ar4: TAttArray; count, count4: integer; gr: TGroup;

begin

//Беремо масив із StringGrid1

getArrayFromGrid(ar, count, StringGrid1);

// Запит на введення назви групи

gr := inputBox('Поиск "хорошистов"', 'Введите группу', 'КС051');

// Створюємо масив хорошистів групи

createRecordArrayMoreThen4(ar, count, gr, ar4, count4);

// Сортуємо масив за правилом, що задає функція compareResult

sortAttArrayResult (ar4, count4);

//Передаємо впорядкований масив у StringGrid2

showArrayInGrid(StringGrid2,ar4, count4);

end;

      1. Подсчет числа студентов, имеющих более 2-х неудовлетворительных оценок и вывод упорядоченного списка этих студентов

Для решения этой задачи вначале напишем процедуру формирования соответствующего массива записей путем выборки нужных записей из исходного массива. Ниже приведена эта процедура.

// Допоміжна процедура відбору студентів ,

// що мають кількість заборгованностей більше ніж 2

procedure createRecordArrayMoreThen2(const ar: TAttArray;

count: integer; gr:TGroup; var ar2: TAttArray; var count2:integer);

var i: integer;

begin

count3 := 0;;

for i:=1 to count do

if ar[i].neud > 2

then begin

count2 := count2 + 1;

ar2[count2] := ar[i];

end;

end;

Наличие этой процедуры позволяет нам написать процедуру обработки события нажатия на кнопку «Подсчитать количество имеющих более 3-х хвостов». Код процедуры приведен ниже.

// Процедура вибору хвостистів

procedure TfrmRecord.btn2Click(Sender: TObject);

var ar, ar2: TAttArray; count, count2: integer; gr: TGroup;

begin

//Беремо масив із StringGrid1

getArrayFromGrid(ar, count, StringGrid1);

// Створюємо масив хвостистів групи

createRecordArrayMoreThen2(ar, count, gr, ar2, count2);

// Сортуємо масив за правилом, що задає функція compareResult

sortAttArrayResult (ar2, count2);

//Передаємо впорядкований масив у StringGrid2

showArrayInGrid(StringGrid2, ar2, count2);

//Виводимо кількість хвостистів у ShowMessage

ShowMessage(intToStr(count2)+' cтудентов имеют более 2-х неуд.')

end;