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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2011, 10:03   #1
Licwin
Пользователь
 
Регистрация: 11.06.2011
Сообщений: 35
По умолчанию Cумма цифр целого числа К

помогите найти сумму цифр целого числа К, не используя оператор цикла
Licwin вне форума Ответить с цитированием
Старый 01.07.2011, 10:27   #2
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

ну а если не цикл, а goto, например?

Код:
label 1;
var
  s: string;
  i, n, e, sm: integer;

begin
  readln(n);
  str(n, s);
  i := length(s);
  sm := 0;
  1: val(s[i], n, e);
  sm := sm + n; 
  i := i - 1;
  if (i < length(s)) and (i <> 0) then goto 1;
  writeln(sm);
end.
вот так как-нить

Последний раз редактировалось unbanned; 01.07.2011 в 10:44.
unbanned вне форума Ответить с цитированием
Старый 01.07.2011, 10:32   #3
Licwin
Пользователь
 
Регистрация: 11.06.2011
Сообщений: 35
По умолчанию

и так сойдет))))
Licwin вне форума Ответить с цитированием
Старый 01.07.2011, 10:37   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

расписать цикл в строку
Код:
s:=(k div   1000000000000000)
  + (k mod 1000000000000000) div 100000000000000
  + (k mod 100000000000000)  div 10000000000000
......................
  + (k mod 100)              div 10
  + (k mod 10)               div 1 ;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 01.07.2011, 10:46   #5
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
расписать цикл в строку
Код:
s:=(k div   1000000000000000)
  + (k mod 1000000000000000) div 100000000000000
  + (k mod 100000000000000)  div 10000000000000
......................
  + (k mod 100)              div 10
  + (k mod 10)               div 1 ;
дак а количество цифр не оговаривается... с какого делителя начинать? или наугад с триллиона?
тогда уже с 10000 начинать... ну или 1000000000

Последний раз редактировалось unbanned; 01.07.2011 в 11:00.
unbanned вне форума Ответить с цитированием
Старый 01.07.2011, 11:10   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
дак а количество цифр не оговаривается... с какого делителя начинать? или наугад с триллиона?
т.к. тема в разделе Паскаль,
то вполне можно ограничится тем типом данных, который есть в Паскале.
либо скромный word (65535 - поэтому хватит делителя 10000)

либо, это longint. максимальное значение: 2147483647
следовательно делитель начинать с 1000000000


p.s. а если вдруг допустить, что программа нужна под Win32 (FreePascal, Delphi),
тогда тип данных Int64, максимальное число 9223372036854775807
и прийдётся брать в качестве начального делитель 1000000000000000000

вот и всё...


p.s. я тоже уверен, что в этой задаче подразумевался вариант ответа, предложенный evg_m
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.07.2011, 11:16   #7
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
p.s. я тоже уверен, что в этой задаче подразумевался вариант ответа, предложенный evg_m
ну да решение рациональное... только смущает количество текста которое необходимо написать
unbanned вне форума Ответить с цитированием
Старый 01.07.2011, 11:19   #8
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

А рекурсию можно?
Код:
function sum(x: longint): integer;
begin
  if x < 10 then 
    sum := x
  else 
    sum := x mod 10 + sum(x div 10)
end;

begin
  write(sum(15762));
  readln
end.
P.S. Для отрицательных чисел просто взять модуль...

Последний раз редактировалось eoln; 01.07.2011 в 11:22.
eoln вне форума Ответить с цитированием
Старый 01.07.2011, 11:38   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от eoln
А рекурсию можно?
eoln, ага. Точно!
я лично упустил этот вариант из виду.
поэтому моя уверенность насчёт того, что преподаватель ожидает ответ с mod и div, сильно пошатнулась...

p.s. раньше видел подобные задачи в трактовке: найти ....<что-то про цифры> для трёхзначного (или двухзначного, или четырёх.., не суть важно, главное, указано количество цифр) целого числа...
тогда MOD и DIV без всяких разговоров... может TC неверно процитировал задание?...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбор целого числа на отдельные символы Crystallon Общие вопросы Delphi 4 12.09.2010 20:20
Вывести числа целого неотр. числа Gonzo Помощь студентам 11 04.05.2010 16:55
Поиск целого числа в строке sven117 Общие вопросы C/C++ 9 01.07.2009 14:01
сумма цифр целого числа mihsel Microsoft Office Excel 8 13.04.2009 13:57
разработать функцию, которая определяет сумму цифр целого числа IceAgainstIce Общие вопросы Delphi 5 20.11.2008 00:52