BorislavBorisov

Task.05.Сума от цифри от ляво на дясно

Nov 3rd, 2015
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.28 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. class SumOfDigits
  4. {
  5.     static long[] numbers = new long[18];
  6.     static int startNum, endNum;
  7.     static long result = 0;
  8.     static List<long> list = new List<long>();
  9.     static void Main()
  10.     {
  11.         Console.WriteLine("Write a number >= 0  and <= 100000000000000000");
  12.         Console.Write("number = ");
  13.         long number;
  14.         bool isCorrect = long.TryParse(Console.ReadLine(), out number);
  15.  
  16.         if(!isCorrect || number > 100000000000000000
  17.             || number < 0 || (number / 100) == 0)
  18.         {
  19.             Console.WriteLine("Incorrect input! Try again");
  20.             Main();
  21.         }
  22.         CheckedCorrectDigits(number);
  23.        
  24.         long sum = 1;
  25.         for (int i = 0; i < 18; i++)//добавян числата с които деля
  26.         {
  27.                 numbers[i] = sum;
  28.                 sum *= 10;
  29.         }
  30.         Recursion(number);
  31.         Console.WriteLine("Sum of the numbers: " + result);
  32.     }
  33.  
  34.     private static void CheckedCorrectDigits(long number)
  35.     {
  36.         Console.Write("Start digit = ");
  37.         startNum = int.Parse(Console.ReadLine());
  38.         string lenghtStartNum = "" + number;
  39.         Console.Write("Last digit = ");
  40.         endNum = int.Parse(Console.ReadLine());
  41.         string lenghtEndNum = "" + number;
  42.  
  43.         if (lenghtEndNum.Length < endNum)
  44.         {
  45.             Console.WriteLine("Write smaller last digit!");
  46.             CheckedCorrectDigits(number);
  47.         }
  48.         if(lenghtStartNum.Length < startNum)
  49.         {
  50.             Console.WriteLine("Write smaller start digit!");
  51.             CheckedCorrectDigits(number);
  52.         }
  53.         if(startNum > endNum)
  54.         {
  55.             Console.WriteLine("Start digit must be smaller or equal to end digit!");
  56.             CheckedCorrectDigits(number);
  57.         }
  58.     }
  59.     private static void Recursion(long num)
  60.     {
  61.         list.Insert(0, num % 10);
  62.         if(num / numbers[startNum] == 0)//използвам индекса, ако е нула значи  сме на тази цифра
  63.         {
  64.             for (int i = 0; i <= endNum - startNum; i++)
  65.             {
  66.                 result += list[i];
  67.             }
  68.             return;
  69.         }
  70.         Recursion(num / 10);
  71.     }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment