我的程序应该允许用户从菜单中选择冰激凌,然后添加冰激凌的价格,以显示冰的总价cream.However我的输出总价是错误的。例如,如果我选择1和2,答案应该是1.5+1.7=3.2,但我得到3.4。另外,如果我选择2,我只会得到错误。请帮帮我。
program iceCream;
var
count,i: integer;
price:array[1..50]of real;
totalPrice: real;
choice: integer;
begin
count:= 0;
writeln ( ' ICE CREAM FLAVOUR');
write ( ' 1.Vanilla: RM 1.50 | 3.Chocolate: RM 2.00');
writeln;
write ( ' 2. Strawberry: RM 1.70 | 0. Exit ');
writeln;
repeat
write ( ' Enter your choice(number): ');
readln ( choice);
if choice <= 3 then
count:= count+1
else
writeln ( 'Invalid choice');
case choice of
1: begin
price[i]:= 1.50;
end;
2: begin
price[i]:= 1.70 ;
end;
3: begin
price[i]:= 2.00;
end;
end;
for i:= 1 to count do
begin
totalPrice:= totalPrice+price[i];
end;
until choice = 0;
writeln ( ' Total ice-cream: ', count);
readln;
writeln ( ' Total price: RM ', totalPrice:2:2);
readln;
end.发布于 2015-10-23 17:49:13
我不会在这里回答你的问题。更重要的是找出你做错了什么,并在你自己的上如何解决这个问题。
如何找出哪里出了问题?
编译器在编译代码时会显示两个警告:
警告: 2
项目1.lpr(29,17)警告:变量"i“似乎未初始化
项目1.lpr(44,25)警告:变量"totalPrice“似乎未初始化
当您读取一个没有赋值的变量时,就会出现这种警告。编译器会将您带到不安全代码的位置。第一个警告位于第17列的第29行:
1: begin
price[i]:= 1.50; // i has not been set before. So its value is undefined or 0
end;您打算在这里使用set Price[i]吗?那么为什么之前没有给它赋值呢?或者你有一个不同的变量来保存冰激凌的数量?你为什么不用它呢?
让我们看一下第25列中的第44行的第二个警告。就是这一行:
totalPrice:= totalPrice+price[i];
// ^ 您确定totalPrice已正确初始化吗?
即使你正确地初始化它,程序仍然可能不能正常工作。在这种情况下,对应用程序进行调试是很有帮助的。在Lazarus IDE中打开应用程序,然后按F8单步执行程序。在执行程序的过程中,您可以从一行转到另一行。到时候你就会知道问题出在哪里了。
https://stackoverflow.com/questions/33298483
复制相似问题