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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2011, 09:16   #1
Аруми
Пользователь
 
Аватар для Аруми
 
Регистрация: 08.11.2011
Сообщений: 24
По умолчанию Сумма цифр

Помогите разобраться.

Составить программу вывода всех десятичных чисел из интервала от N1 до N2 (N1 и N2 - натуральные числа), сумма цифр которых равна заданному натуральному числу.

Вот этот код верный? Просто я его не сама составляла, но мне кажется, что он не правильный(
Пы Сы: объясните последовательность действий для верного решения задачи.

Код:
#include <stdio.h> 
int digit_sum(int number) 
 { 
  int sum=0; 
  while(number>0) 
  { 
    sum+=number; 
    number/=10; 
   } 
  return sum; 
 } 
 int main() 
 { 
   int i, N1, N2, R; 
   printf ("\n Введите начальную точку промежутка \n"); 
   scanf ("%d", &N1); 
   printf ("\n Введите конечную точку промежутка \n"); 
   scanf ("%d", &N2); 
   printf ("\n Задайте натуральное число \n"); 
   scanf ("%d", &R); 
   for(i=N1; i<=N2; i++) 
   { 
    if(digit_sum(i)==R) 
       printf("%d\n", i); 
   } 
   return 0; 
 }


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 09.11.2011 в 09:58.
Аруми вне форума Ответить с цитированием
Старый 09.11.2011, 09:59   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

программа, насколько я могу судить, правильная.
и решает именно заявленную задачу.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.11.2011, 10:52   #3
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Код:
int digit_sum(int number) 
 { 
  //Завести переменную под "сумму"
  int sum=0; 
  //Пока то, что осталось от числа, не ноль (отрицательные числа игнорируем)
  while(number>0) 
  { 
    //Прибавить к сумме то, что осталось от числа
    sum+=number; 
    //Поделить число на 10 (вычеркнуть последнюю цифру)
    number/=10; 
   } 
  //Вернуть набранную сумму
  return sum; 
 }
Хм. Наверное, всё-таки прибавлять к сумме надо не оставшееся число, а его последнюю цифру.

Небольшая хитрость по основной программе: можно найти первое такое число, а дальше прибавлять не по 1, а по 9.
Abstraction вне форума Ответить с цитированием
Старый 09.11.2011, 11:00   #4
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

Да, действительно. Основной код программы верный, кроме алгоритма расчета суммы цифр в числе. Как исправить Abstraction уже написал.
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Старый 09.11.2011, 13:52   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Abstraction
Хм. Наверное, всё-таки прибавлять к сумме надо не оставшееся число, а его последнюю цифру.
упс. Точно! Abstraction, молодца! а я проглядел...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дано натуральное число n. Определить, сколько парных цифр в числе n. Чему равна сумма нечетных его цифр? pahanzona Microsoft Office Excel 4 27.02.2011 15:46
сумма цифр в Delphi DeDoK Общие вопросы Delphi 3 19.05.2010 17:23
Сумма цифр числа... Dimak67 Microsoft Office Excel 5 09.04.2010 00:46
Сумма цифр из числа. AlterNatioN Фриланс 5 02.03.2010 21:18
Натуральное число, в записи которого п цифр, называется числом Армстронга, если сумма его цифр, возведенн OTLi4HO Общие вопросы C/C++ 6 14.01.2009 19:48