Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Переполнение стека

Автор: Zundell 4.02.2007 3:03

var
n,s:word;

Function koren(n:word):word;
var
s:word;
begin
if n<=0 then
koren:=n
else begin
s:=0;
repeat
s:=s+ n mod 10;
n:=n div 10;
until
n=0;
koren:=koren(s);
end
end;

begin
write('Vvedite n-');
readln(n);
koren(n);
write('vot-',s);
readln;
end.


Посмотрите пожалуйста..из-за чего выдает ошибку?спасибо заранее

Автор: klem4 4.02.2007 3:05

Что должна делать твоя функция ?

ps у теья s всегда > 0 скорее всего ...

Автор: volvo 4.02.2007 3:23

Ну, во первых, если ты находишь пресловутый "корень числа" (сумму его цифр, потом сумму цифр суммы, ... пока эта сумма не будет состоять из одной цифры), то условие должно быть

  if n < 10 then koren:=n
else ...

, а во-вторых, у тебя глобальная S перекрывается локальной...

Кстати, расскажи мне, КАК переменная типа Word может быть отрицательной?

Распечатывать значение корня надо бы так:
write('vot - ', koren(n));

Автор: Zundell 4.02.2007 3:49

Все разобралсо..спасиба большое.все работает