大家帮我看下这个程序哪里出了问题(用free pascal编的)

来源:百度知道 编辑:UC知道 时间:2024/05/15 11:47:45
题目
假设四个商店一周内销售自行车的情况如下面表一所示,
自行车牌号 永久牌 飞达牌 五羊牌
第一商店 35 40 55
第二商店 20 50 64
第三商店 10 32 18
第四商店 38 36 28
表一
几种牌号自行车的单价如表二所示。求各店本周出售自行车的总营业额。
单价 元
永久牌 395
飞达牌 398
五羊牌 384
表二

程序
var
a,b,c,d,p:array[1..3]of integer;
i,m1,m2,m3,m4:integer;
begin
m1:=0;
m2:=0;
m3:=0;
m4:=0;
for i:=1 to 3 do
read(a[i],b[i],c[i],d[i],p[i])
i:=1;
repeat
m1:=m1+a[i]*p[i];
m2:=m2+b[i]*p[i];
m3:=m3+c[i]*p[i];
m4:=m4+d[i]*p[i];
i:=i+1;
until i>3;
write(a[i]:5,b[i]:5,c[i]:5,d[i]:5)
end.
为什么我得出的答案会有负数?帮我看下

前面都没有错,错在输出那里.因为程序运行到最后,i的值是4,也就是说你的程序要求输出a[4],b[4],c[4],d[4],你的数组定义是;
a,b,c,d,p:array[1..3]of integer;
可见最大是3,你要输出a[4]...d[4],当然是出错了.我读完程序后发现m1是商店1,m2是商店2...m4是商店4,所以要把'write(a[i]:5,b[i]:5,c[i]:5,d[i]:5)'改成'write(m1:5,m2:5,m3:5,m4:5)'才对

楼主,你既然能把前面的程序都做完,可见你的编程基本功还是可以的,最后的错误应该是没注意吧.所以以后作题要细心哦,不要犯一些不应该犯的错误,遇到错误最好自己解决,实在不行再向别人求助.
最后,祝你好运!