Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 24.01.2014, 09:21   #1
христик
Пользователь
 
Регистрация: 03.12.2011
Сообщений: 16
Счастье ошибка

Добрый день.
Подскажите пожалуйста вот у меня программа : Найдите сумму цифр заданного натурального числа. Описать и использовать рекурсивную процедуру.



program Project1;
uses
SysUtils;
function summ(ch:integer):integer ;
begin
if ch<10 then summ:=ch
else summ:= summ(ch div 10) + (ch mod 10)
end;
var ch, sum :integer;
begin
writeln('VVedite naturalnoe chislo ');
readln(ch);
sum:=sum(ch);
writeln ('Summa cifr chisla ',ch,' ravna ',sum);
readln;
end.

когда задаешь большое числовое значение, допустим такое 65675748474,
компилятор выдает ошибку invalid numeric input
христик вне форума
Старый 24.01.2014, 09:26   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Такое значение и в делфи не влезет в integer, а в части паскалей тем более
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 24.01.2014, 09:28   #3
христик
Пользователь
 
Регистрация: 03.12.2011
Сообщений: 16
По умолчанию

А рекурсия значения не имеет??? может это переполнение стека?
христик вне форума
Старый 24.01.2014, 09:30   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Какой стек. Просто MaxInt=2147483647
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 24.01.2014, 09:35   #5
христик
Пользователь
 
Регистрация: 03.12.2011
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Какой стек. Просто MaxInt=2147483647
большое спасибо

можно еще вопрос. хотела строчку заменить if ch<10 then на if ch<10 or (-10)<ch then чтобы в программе считались и отриц значения, но выдает ошибку,
христик вне форума
Старый 24.01.2014, 09:43   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Просто после ввода ch ему Abs(ch) присвоить. А у вас скобок нет. И не забывайте, что div и mod от отрицательного тоже отрицательное вернет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 24.01.2014, 09:43   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

либо
Код:
if abs(ch)<10 then
либо используйте скобки
Код:
if ( ch<10 ) or ((-10)<ch) then
Serge_Bliznykov вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Nero - ошибка драйвера DMA. ошибка CRC NecRoMat Софт 5 09.05.2012 01:29
Где ошибка в этом исходном коде на языке Си? Или ошибка в Excel? ArchiCurtis Помощь студентам 2 07.04.2012 14:16
Ошибка run-time Error 1004 общая ошибка ODBC kaval88 Microsoft Office Excel 0 27.02.2011 20:20
Ошибка в коде, ошибка в css или это проблема с совместимостью с браузерами? ankris HTML и CSS 5 23.11.2010 16:58
Это ошибка Delphi или моя ошибка??? bloodeagle Общие вопросы Delphi 3 12.11.2009 15:26