Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Исправление ошибок в алгоритмах обработки оценок на Pascal

Delphi , Синтаксис , Записи и Множества

В описании проблемы вы упомянули, что столкнулись с трудностями при выводе максимальных и минимальных значений оценок. В вашем коде есть несколько недочетов, которые не позволяют корректно инициализировать переменные для хранения этих значений. Давайте исправим их.

В функции maksimum вы не инициализируете переменные uts_max, uas_max, и так далее. Вместо этого вы присваиваете значения полям структуры dtmhs. Это неправильно, так как в вашей программе нет необходимости хранить индекс элемента массива с максимальным/минимальным значением — достаточно хранить само значение.

Вот пример исправленной функции utsmax:

function utsmax(): Integer;
var
    max:Integer;
begin
    max:=0;
    var tempMaxValue: Integer;
    tempMaxValue := dtmhs[1].uts; // Инициализация максимальным значением из первого элемента массива
    for i := 2 to a do
        if (dtmhs[i].uts > tempMaxValue) then begin
            tempMaxValue := dtmhs[i].uts;
            max := i; // Сохраняем индекс текущего максимального значения, но это не нужно для работы программы
        end;
    end;
    utsmax := tempMaxValue;
end;

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

Также, в функции minimum переменные uts_min, uas_min, akhir_min также должны быть инициализированы:

function utsmin(): Integer;
var
    min:Integer;
begin
    min := dtmhs[1].uts; // Инициализация минимальным значением из первого элемента массива
    for i := 2 to a do
        if (dtmhs[i].uts < min) then begin
            min := dtmhs[i].uts;
            // max := i; - эту строку можно удалить, так как она не используется
        end;
    end;
    utsmin := min;
end;

Не забудьте применить эти изменения ко всем функциям, которые обрабатывают максимальные и минимальные значения.

Теперь давайте исправим проблему с вычислением среднего значения akhir. В функции output после цикла инициализации значений для каждого студента необходимо вызвать функцию rerata_akhir:

procedure output;
begin
    clrscr;
    tabel;
    for i := 1 to a do begin
        with dtmhs[i] do begin
            akhir := (0.1 * tugas) + (0.3 * uts) + (0.3 * uas) + (0.3 * prak);
            if (akhir >= 0) and (akhir < 20) then grade:='E' else
            if (akhir >= 20) and (akhir < 40) then grade:='D' else
            if (akhir >= 40) and (akhir < 60) then grade:='C' else
            if (akhir >= 60) and (akhir < 80) then grade:='B' else
                grade := 'A';
        end;
    end;
    rerata_akhir; // Вызов функции для вычисления среднего значения `akhir`
end;

Не забудьте также обновить функцию rerata_akhir, чтобы она корректно вычисляла среднее значение:

function rerata_akhir(): real;
var
    temp: real;
begin
    temp := 0.0; // Инициализация переменной для суммирования значений
    for i := 1 to a do begin
        temp := temp + dtmhs[i].akhir;
    end;
    rerata_akhir := temp / a; // Вычисление среднего значения путем деления на количество элементов
end;

После внесения этих изменений ваша программа должна корректно вычислять максимальные, минимальные и средние значения оценок студентов.

Создано по материалам из источника по ссылке.

В описании проблемы обсуждается исправление ошибок в коде на Pascal для корректного вычисления максимальных, минимальных и средних значений оценок студентов.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Записи и Множества ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 01:23:51/0.0032718181610107/0