Пункт а:
Насколько я помню, в паскале невозможно реализовать бесконечный цикл, поэтому решение будет слегка притянуто за уши. Например если вы введете число из 9001 символа, программа будет работать неккоректно. Для выхода из цикла используется 'метка'.
a, counter, Summa : integer;
Label Transfer;
Begin
writeln('Введите число');
readln(a);
counter := 1;
counterTw0 := counterTwo + 1;
while counter < 9000 Do
begin
counter := counter +1;
if (a div counter) < 0 then Transfer
else counterTwo := counterTwo + 1;
else;
Goto Transfer;
//Узнали, что в числе counterTwo символов
while counter < counterTwo Do
Summa := Summa + ((a div counter) mod 10);
Summa := Summa + (a mod 10);
writeln(Summa);
end.