Module: Subroutines: procedures and functions - 2


Problem

1/10

subroutine-function

Theory Click to read/hide

A function is a subroutine that returns a result (number, character string, etc.)

Imagine that you have ordered a product from an online store. From a programming point of view, you have called a certain subroutine, and unlike a procedure, this subroutine must return a result - deliver the product you ordered. These subroutines are called functions.
A function is formatted in much the same way as a procedure:

function <function name> (list of parameters as <variable name>:<its type> separated by semicolons): <return value type>;
begin
    <function body>
end;

The difference between a function and a procedure is that a function must return a value. To do this, you need to use the function name as a variable or the special variable Result:
function Sum(a, b:integer): integer;
begin
    Sum := a + b;
end;
or
function Sum(a, b:integer): integer;
begin
    Result := a + b;
end;

A function that returns the arithmetic mean of two integers would look like this:
function average(a, b: integer): real;
begin
  average := (a + b) / 2;
end;
It remains to understand how to call this function in the main program:
You shouldn't call a function the same way you call a procedure:
average(10, 5); 
The value returned by the function will be lost. It is as if the goods from the online store were not given to anyone, but thrown away. It is unlikely that the customer will like it.

It's more correct to save the result in a variable (or print it to the screen):
a := average(10, 5);

or

writeln(average(10, 5));

Problem

Write a function that calculates the sum of the digits of a natural number.
Using this function, write a program that among 5 entered natural numbers, finds the number with the maximum sum of digits. If there are several such numbers, print the larger number
 
Examples
# Input Output
1 15
234
11
9
111112
234