Вывести все суммы цифр числа - C#

Узнай цену своей работы

Формулировка задачи:

Пытался делать переборами, но ничего не выходит. Мне необходимо найти суммы цифр определенного числа. К примеру: Есть число 135. Мне необходимо чтобы в результате отобразились все его суммы цифр. Такие как: 4, 6, 9, 8. Если число 1456, то суммы должны быть: 5, 6, 7, 9, 10, 11, 15, 16. В общем примерно так. Как это можно сделать? Или хотя бы при помощи какого алгоритма?
Нашёл код на С++, но он чуток неверно работает, а на шарп если переводить, то вообще ошибку выдаёт.
Листинг программы
  1. #define N 10
  2. int main()
  3. {
  4. int A[N] = { 3, 5, 1, 2, 8, 7, 9, 4, 6, 0 };
  5. int* B = new int[3 * N];
  6. for (int i = 1, k = 0; i <= N-2; i++)
  7. {
  8. B[k] = A[i-1] + A[i+1];
  9. B[k+1] = A[i+1] + A[i];
  10. B[k+2] = A[i-1] + A[i];
  11. B[k+3] = B[k+2] + A[i+1];
  12. k+=4;
  13. }
  14. for (int q = 0; q < 3 * N; q++)
  15. printf("%d ",B[q]);
  16. printf("\n");
  17. }

Решение задачи: «Вывести все суммы цифр числа»

textual
Листинг программы
  1. class Program
  2. {
  3.     static IEnumerable<int> Digits(int x, int b)
  4.     {
  5.         do yield return x % b;
  6.         while ((x /= b) > 0);
  7.     }
  8.  
  9.     static IEnumerable<int> Sums(int x)
  10.     {
  11.         var digits = Digits(x, 10).ToArray();
  12.         for (int k = 1; k < 1 << digits.Length; k++)
  13.         {
  14.             var pos = Digits(k, 2)
  15.                 .Select((b, i) => new { b, i })
  16.                 .Where(p => p.b == 1);
  17.  
  18.             if (pos.Count() > 1)
  19.                 yield return pos.Sum(p => digits[p.i] * p.b);
  20.         }
  21.     }
  22.  
  23.     static void Main(string[] args)
  24.     {
  25.         int x = 135;
  26.         Console.WriteLine(x + ": " + String.Join(", ", Sums(x).Distinct().OrderBy(_ => _)));
  27.         Console.ReadKey();
  28.     }
  29. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы