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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2012, 16:37   #1
ask95
Новичок
Джуниор
 
Регистрация: 04.11.2012
Сообщений: 2
Восклицание Сумма цифр введенного натурального числа, рекурсия

Программисты помогите! Вот пишу собственно программу, я ее написал с оператором while и она работает, а вот если с рекурсией, то не могу.
Вот с while:
Код:
#include<stdio.h>
#include<conio.h>

int SummaN (long N);

void main()
{
  long x:
  clrscr();
  printf("Введите целое число (от 10 до 2 147 483 648): ");
  scanf("%ld", &X);
  printf("\nСумма цифр числа %ld равна %i", X, SummaN(X));
  getch();
}

int SummaN (long N)
{
  int Sum = 0;
  while (N != 0)
  {
    Sum = Sum + N % 10;
    N = N / 10;
  }
  return Sum;
}
А вот то что я уже сделал и постоянно говно выводится, совсем не то что надо
Код:
#include<stdio.h>
#include<conio.h>

int SummaN (long N);

void main()
{
  long x:
  clrscr();
  printf("Введите целое число (от 10 до 2 147 483 648): ");
  scanf("%ld", &X);
  printf("\nСумма цифр числа %ld равна %i", X, SummaN(X));
  getch();
}

int SummaN (long N)
{
  int Sum = 0;
  if (N > 0)
  {
    Sum = Sum + N % 10;
    N = N / 10;
    return Sum;
  }
  else
  return 0;
}
Я полюбому чето не так делаю, переделайте плиз что б работало с рекурсией нормально и ОБЯЗАТЕЛЬНО только на С, а не на С++.
ask95 вне форума Ответить с цитированием
Старый 04.11.2012, 17:46   #2
Nuklon
Форумчанин
 
Аватар для Nuklon
 
Регистрация: 05.04.2012
Сообщений: 134
По умолчанию

Код:
int dsum(int n) {
   int d = 0;
   if(! n)
       return 0;
   d += n % 10;
   d += dsum(n / 10);
   return d;
}
Nuklon вне форума Ответить с цитированием
Старый 04.11.2012, 18:03   #3
ask95
Новичок
Джуниор
 
Регистрация: 04.11.2012
Сообщений: 2
По умолчанию

спасибо, спасибо, СПАСИБО!!! Подделал под свои значения и все работает! Блин спасибо огромное, теперь мне автомат 5 поставят!!! Спасибо! Блин мучался капец...
Но вот понять не могу как это работает.....
Скажи плиз что означает в скобочках if(! n) ??? а то я не пойму, почему так писать надо было
И почему использовал int ? Я новичек в С, по этому такие глупые вопросы задаю
ask95 вне форума Ответить с цитированием
Старый 04.11.2012, 18:59   #4
Павел_95
Пользователь
 
Регистрация: 04.11.2012
Сообщений: 22
По умолчанию

Код:
if(! n)
Насколько я помню, это проверка на натуральное число, то есть почти то же самое, что ты писал
Код:
while (N != 0)
,
только тут еще проверяется не только на 0, а и на цельность числа n
Другими словами, остаток от деления. если число целое - то он равен 0.
Павел_95 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сумма цифр введенного числа Student1992 Паскаль, Turbo Pascal, PascalABC.NET 15 08.11.2011 18:58
Количетсво цифр натурального числа Джиган Помощь студентам 3 13.03.2011 08:52
Сумма цифр введенного трехзначного числа. Дельфи by -ORTODOX- Помощь студентам 20 02.02.2011 14:21
найти сумму цифр заданного натурального числа dima.m Microsoft Office Excel 6 06.12.2010 11:30