GAECHKA
Твоя помощница в решении задач

Найти проблему, из-за которой совершенно одинаковые программы в паскаль abc и turbo различаются

Есть код:
var
   bigSum, number,i:integer;
   function digitSum(var a:integer):integer;
            var
               sum, b:integer;
            begin
                 while (a > 10)do begin
                       b:=a mod 10;
                       a:=a div 10;
                       sum:=sum+b;
                 end;
                 b:=a mod 10;
                 sum:=sum+b;
                 digitSum:=sum;
            end;
 
begin
     for i:=1 to 5 do
         begin
              readln(number);
              bigSum:=bigSum+digitSum(number);
         end;
     write(bigSum);
end.
Он считает сумму цифр 5 чисел. При запуске в PascalABC она работает как надо. При попытке запуска в Turbo pascal при вводе чисел 3 3 3 3 3 выводит 89. При запуске в free pascal вообще вылетает после ввода второй цифры. У меня нет даже предположения, почему так происходит. Может, вы разберетесь?
0
вопрос задан

Источник


5 ответов
Решение
Просто нужно правильно писать код.
function digitSum(var a:integer):integer;
var  sum, b:integer;
begin
sum:=0;
repeat
b:=a mod 10;
sum:=sum+b;
a:=a div 10;
until a=0;
digitSum:=sum;
end;
var  bigSum, number,i:integer;
begin
bigSum:=0;
for i:=1 to 5 do
 begin
  readln(number);
  bigSum:=bigSum+digitSum(number);
 end;
write(bigSum);
end.
function SumDigits(n: Longint): Integer;
var r: Integer;
begin
  r:=0;
  while n>0 do begin
    Inc(r,n mod 10); n:=n div 10;
  end;
  SumDigits:=r;
end;
 
var n: Longint; i, s: Integer;
begin
  {s:=0;}
  for i:=1 to 5 do begin
    Read(n); Inc(s,SumDigits(n));
  end;
  WriteLn(s);
end.
Просто нужно правильно писать код.
function digitSum(var a:integer):integer;
var *sum, b:integer;
begin
sum:=0;
repeat
b:=a mod 10;
sum:=sum+b;
a:=a div 10;
until a=0;
digitSum:=sum;
end;
var *bigSum, number,i:integer;
begin
bigSum:=0;
for i:=1 to 5 do
*begin
* readln(number);
* bigSum:=bigSum+digitSum(number);
*end;
write(bigSum);
end.
Вы уверены?
PS: Я Ваш код скопировал, не переписывал, так что Ваш код также не работает.
Так бы и писали что у Вас ShoolPack, выкиньте его. Установите Free Pascal или Lazarus.
И Free pascal и Lazarus установлены, а с проблемой я разобрался, когда я Вашу программу запускал, она не компилировалась ==> запускалась старая. Спасибо.