You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pascal期末成绩统计函数返回0,dtmhs.akhir记录无值问题排查

问题原因
  • 核心问题:期末成绩akhir字段的计算逻辑仅封装在output(查看数据列表)过程中,只有主动调用菜单的【2. Tampilan Data Mahasiswa】功能时,才会触发计算给dtmhs[i].akhir赋值。如果输入完数据直接调用最值、平均统计功能,所有记录的akhir字段都是未赋值的默认值0,因此统计结果全部为0.00。
  • 次要bug:minimum函数的输出文案全部错误写为“Nilai terbesar”(最大值),和功能实际逻辑不符。
修复方案
  1. 抽取期末成绩计算逻辑为独立公共过程,确保所有需要用到期末成绩的功能都能读取到最新计算结果:
// 新增公共过程:统一计算所有学生的期末成绩
procedure hitung_nilai_akhir;
begin
  for i:=1 to a do
  begin
    dtmhs[i].akhir := (0.1*dtmhs[i].tugas) + (0.3*dtmhs[i].uts) + (0.3*dtmhs[i].uas) + (0.3*dtmhs[i].prak);
  end;
end;
  1. 修改input过程,在所有学生数据输入完成的末尾调用一次hitung_nilai_akhir;,保证后续所有功能都能直接读取到已计算的期末成绩。
  2. 修改output过程,删除原来冗余的akhir计算逻辑,避免重复运算。
  3. 修复minimum函数的文案错误,修改后代码如下:
function minimum(): Integer;
var
  chose: Char;
begin
  clrscr;
  writeln('a. Nilai UTS      ');
  writeln('b. Nilai UAS      ');
  writeln('c. Nilai Tugas    ');
  writeln('d. Nilai Praktikum');
  writeln('e. Nilai Akhir    ');
  write  ('Masukkan Pilihan [a/b/c/d/e] ? : ');readln(chose);
  case chose of
    'a': writeln('Nilai terkecil UTS adalah ',utsmin());
    'b': writeln('Nilai terkecil UAS adalah ',uasmin());
    'c': writeln('Nilai terkecil Tugas  adalah ',tugasmin());
    'd': writeln('Nilai terkecil Praktikum adalah ',prakmin());
    'e': writeln('Nilai terkecil NA adalah ',namin():0:2);
  end;
end;

可选优化:如果后续有修改学生成绩的需求,可以在maksimum、minimum、rerata_semua三个统计函数的开头也调用一次hitung_nilai_akhir,确保每次统计结果都是最新值。

内容的提问来源于stack exchange,提问作者Dio Brando

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 14:36:00