Разбить число на кусочки определенного размера - PullRequest
1 голос
/ 17 марта 2012

У меня есть номер 33, и я хочу разделить его на части 10, чтобы получить список 30,20,10,0, а также мне нужно, чтобы номер 3 я удалил.

Конечно, все числа являются примерами, они могут меняться.

Как мне это сделать? Математическая часть моего мозга заняла выходной.

Ответы [ 3 ]

2 голосов
/ 17 марта 2012

Вычтите модуль 10 в число из числа, затем разделите на десять.Создайте список, который увеличивается на десять и имеет длину n / 10.

Num = num - (num % 10);
list<int> stuff;
for (int i = 0; i == (num /10); i++)
     stuff.add((i*10));

Уже немного поздно, и я выпил пива, поэтому мой код может быть немного не в порядке.

1 голос
/ 17 марта 2012

Это разделит целое число на куски любого размера (не только 10):

static public IEnumerable<int> BreakUpInteger(int input, int chunkSize)
{
    if(chunkSize <= 0)
    {
        throw new ArgumentException("Chunk size must be greater than zero.", "chunkSize");
    }

    if(input <= 0)
    {
        throw new ArgumentException("Input must be greater than zero.", "input");
    }

    for (var i = 1; i <= input / chunkSize; i++)
    {
        yield return i * chunkSize;
    }
}
1 голос
/ 17 марта 2012
List<int> Splitter(int num, int mult)
{
   if(mult<=0)
       return null;

   int sign = 1;
   if(num < 0)
   {
       num = - num;
       sign = -1;
   }
   var result = new List<int>(num / mult);

   num = num - num % mult;
   while(num >= 0)
   {
       result.Add(num);
       num -= mult;
   }
   return result;
}

Но в этом нет веселья.Давайте попробуем LINQ это.Я предполагаю, что все положительно.

Enumerable.Range((num + mult - 1) /mult).Select(x=>x*mult).Reverse();

Параметр Range округляется до num / mult.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...