2012-03-17 172 views
0

我有號碼33,並且想要將其拆分爲10件以獲取列表30,20,10,0,我還需要我刪除的數字3特定尺寸件的拆分數量

當然所有的數字都是例子,它們可以改變。

我該怎麼做?我腦中的數學部分休息了一天。

+1

會很高興地知道誰投下來。這裏有什麼問題? – Marc 2012-09-26 02:35:19

回答

2

從模數中減去10的模數,再除以十。創建一個按10的值遞增並且長度爲n/10的列表。

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

這有點晚了,我喝了一杯啤酒,所以我的代碼可能有點偏離。

+1

是的,thx,工作。必須改變它一點,但得到它。乾杯! – Marc 2012-03-17 06:43:48

1
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舍入。

1

這將打破一個整數到任何尺寸(不只是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; 
    } 
}