PASCAL 过程不会从外部变量读取值

PASCAL procedure won't read value from an external variable

给定 abc,计算:2^a + 2^b + 2^c

program power;
var a,b,c, r1,r2,r3 :integer;
    
procedure power2(pwr :integer; var result :integer);
var i :integer;
    
begin
    
i := 1;
result := 1;
    
while pwr <= i do
    begin

    result := result * 2;
    i := i + 1;
        
    end;
    
end;
   
   
begin {main}

write('a: ');
readln(a);
write('b: ');
readln(b);
write('c: ');
readln(c);

power2(a, r1);
power2(b, r2);
power2(c, r3);

writeln('power: ', r1 + r2 + r3);
  
end.

为什么程序无法执行 while 循环?

程序打印 3 而不是 r1r2r3 的总和,与输入 (a,b,c) 无关。我该如何解决这个问题?

您关于 while 循环比较的说法不正确,pwr <= i。 应该是反过来的。

procedure power2(pwr :integer; var result :integer);
var i :integer;
begin    
  i := 1;
  result := 1;    
  while i <= pwr do
    begin    
      result := result * 2;
      i := i + 1;        
    end;    
end;