Модераторы: volvo877, Snowy, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подчитать сумму цифр числа 
:(
    Опции темы
Albinos_x
Дата 3.10.2005, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: нет
Всего: 108



вот вариант:
Код

function sum(num:Integer):Integer    
begin    
while (num>0) do    
  begin
      {к результирующиму прибавляем остаток от целочисленного деления на 10}    
      Result:=Result+(num mod 10);
      {убираем крайнее правое число методом целочисленного деления на 10}    
      num:=num div 10;    
  end;        
end;


еще вариант:
Код

function sum(num:Integer):Integer    
var s:string[6];  {строка, т.к. само число типа Integer -32768..32767, то больше 6 символов занимать не может и больше нам не надо}
      inv:byte;        {для получения числа из собственно строки чисел}
      er:integer;    {если произойдёт ошибка превода, то сюда запишется номер ошибочного символа, но у нас он один и будет верным, но без неё нельзя}
begin    
s:=srt(num);        {переводим число в строку}
if s<>'' then          {проверяем не пустая ли строка}
   begin
   if s[1]='-' then     { если первый символ '-', то может возникнуть ошибка перевода}
      delete(s,1,1);   { если так, то удаляем его}
   {открываем цыкл по длине строки}
   for i:=1 to Length(S) do
      begin
     {преобразуем каждый символ в цифру и записываем в in}
      Val(s[i],inv,er);
      {всё суммируем для получения результата}
      Result:=Result+inv;
      end;
   end;        
end;

к сожалению команда ABS не знаю как работает в Паскале, если знаешь, то можно применять её вместо
Код

if s[1]='-' then     
      delete(s,1,1);

да и в первом варианте не помешало бы...

PS:
Код

number:=number/10

на это скорее всего будет ругаться, т.к. при делении может получиться не целочисленное число (делфи даже не откомпилится, в паскале не знаю... ) smile
Добавлено @ 19:21
упс....
предыдущих постов не видел....только первую страницу... smile просмотрел... smile

Это сообщение отредактировал(а) Albinos_x - 3.10.2005, 19:16


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0391 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.