Другие языки программирования и технологии

Помогите с задачей по PascalABC.

Необходимо реализовать процедуру Sum(K,C,S), находящую количество C цифр целого положительного числа K, а также их сумму S. С помощью этой процедуры найти количество и сумму цифр для каждого из пяти данных целых чисел.

входные данные выходные данные
31 1 294 0 1241
2 4
1 1
3 15
1 0
4 8
Azik. Bezdelnik
Azik. Bezdelnik
508
если код то вот (я не знаю что вам положенно знать)
procedure Sum(k: string; var c, s: integer);
var i : integer;
begin
c := k.Length;
s := 0;
for i:=1 to c do
s := s + StrToInt(k[i]);
end;

var
_c, _s : integer;
_in : string;
begin
readln(_in);
foreach _k: string in _in.Split(' ') do
begin
Sum(_k, _c, _s);
writeln(_c.ToString() + ' ' + _s.ToString());
end;
end.

если на словах
- считать ввод числа в строковую переменную
- пройтись for-ом по строке, внутри for извлекать символ по текущему индексу, конвертить в int и прибавлять ко временной переменной которую на старте не забыть обнулить
- на выходе получаем сумму во временной переменной, длинна числа это длинна строки (мы же ведь не с Real работаем)
Nurkeldi Erkashov
Nurkeldi Erkashov
5 038
Лучший ответ
вариант 1 (по условию)

const a : array [1..5] of integer = (31, 1, 294, 0, 1241);
var i, c, s: integer;
procedure Sum (k: integer; var c1, s1: integer);
var stroka: string;
begin
Str (k, stroka);
c1:=Length (stroka);
s1:=0;
while k>0 do
begin
s1:=s1 + k mod 10;
k:=k div 10;
end;
end;
begin
for i:= 1 to High(a) do
begin
sum(a[i], c, s);
Writeln (c:5, s:5);
end;
end.

вариант 2 (по простому)

const a : array [1..5] of integer = (31, 1, 294, 0, 1241);
var i: integer;
procedure Sum (k: integer);
var c, s: integer;
stroka: string;
begin
Str (k, stroka);
c:=Length (stroka);
s:=0;
while k>0 do
begin
s:=s + k mod 10;
k:=k div 10;
end;
Writeln (c:5, s:5);
end;
begin
for i:= 1 to High(a) do sum(a[i]);
end.
Рустам Батыров
Рустам Батыров
20 124