How to check if the sum of two halves of a number is equal in Pascal

1 Answer

0 votes
program HalvesSumCheck;

function SumDigits(n: longint): integer;
var
  sum: integer;
begin
  sum := 0;
  while n <> 0 do
  begin
    sum := sum + (n mod 10);
    n := n div 10;
  end;
  SumDigits := sum;
end;

function CheckHalvesSumEqual(n: longint): boolean;
var
  s, firstHalf, secondHalf: string;
  lengthNum, halfLen: integer;
  num1, num2, code: integer;
begin
  str(abs(n), s);
  lengthNum := length(s);

  if (lengthNum mod 2) <> 0 then
  begin
    write('The number of digits is NOT even. It cannot be split into two halves: ');
    CheckHalvesSumEqual := false;
    exit;
  end;

  halfLen := lengthNum div 2;

  firstHalf := copy(s, 1, halfLen);
  secondHalf := copy(s, lengthNum - halfLen + 1, halfLen);

  val(firstHalf, num1, code);
  val(secondHalf, num2, code);

  CheckHalvesSumEqual := (SumDigits(num1) = SumDigits(num2));
end;

var
  num1, num2, num3, num4, num5, num6: longint;

begin
  num1 := 123456;
  num2 := 123321;
  num3 := 123123;
  num4 := 123411;
  num5 := 1234321;
  num6 := 12321;

  writeln(num1, ': ', CheckHalvesSumEqual(num1));
  writeln(num2, ': ', CheckHalvesSumEqual(num2));
  writeln(num3, ': ', CheckHalvesSumEqual(num3));
  writeln(num4, ': ', CheckHalvesSumEqual(num4));
  writeln(num5, ': ', CheckHalvesSumEqual(num5));
  writeln(num6, ': ', CheckHalvesSumEqual(num6));
end.




(*
run:

123456: FALSE
123321: TRUE
123123: TRUE
123411: TRUE
1234321: The number of digits is NOT even. It cannot be split into two halves: FALSE
12321: The number of digits is NOT even. It cannot be split into two halves: FALSE

*)


 



answered Dec 22, 2025 by avibootz
edited Dec 22, 2025 by avibootz
...