2014-01-05 32 views
-1

比方說,我有一個數字,我需要在40的數組中分裂,並保留剩餘。 例如:C#如何將數字除以相等的常量?

int Num = 140; 
Wanted: 40, 40, 40, 20 

int Num = 75; 
Wanted: 40, 35 

什麼是最優雅的方式來實現這一目標?

謝謝!

+5

聽起來有點像功課...你嘗試過這麼遠嗎?提示:你想看看在模量(%)算 – JaredPar

+0

部屋賈裏德, 到目前爲止我想出for循環: 對(INT I = 0; I user1307346

+0

模數可以不帶小數地做到這一點。你可以很容易地計算出餘數。一旦知道餘數,就可以進行減法以得到除數完全可分的值。這兩個值爲您提供了一切所需的信息來回答這個問題 – JaredPar

回答

1

嘗試使用LINQ此功能

List<int> split(int num, int splitBy) 
{ 
    List<int> r = new List<int>(); 
    int v = Convert.ToInt32(num/splitBy); 
    r.AddRange(Enumerable.Repeat(splitBy, v).ToArray()); 
    var remaining = num % splitBy; 
    if (remaining != 0) 
     r.Add(remaining); 
    return r; 
} 
2

提示:使用模量和分裂。

140/40 - >3
140 % 40 - >20

所以,你會採取通過40分的數量,並且有很多40是你的陣列英寸然後將數字模型40附加到您的數組。

僞代碼:

int[] result = new int[number/140] + 1 
fill up the array with (number/140) 40's with a for loop 
set the last element to number % 140 
0

使用% Operator,它會找到你的 「剩女」。我會向你展示你的75個例子,但是因爲這看起來很像作業,所以我會給你找出140的版本。

int num = 75; 

//numberOfEvens contains 1 
int numberOfEvens = num/40; 
//remainder contains 35; 
int remainder = num % 40; 
0

試試看看這個代碼。它應該做你想做的。 但嘗試瞭解它當然,否則它是沒有用的。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      int[] r1 = Split(140, 30); 
      Print(r1); 

      int[] r2 = Split(140, 40); 
      Print(r2); 

      int[] r3 = Split(75, 40); 
      Print(r3); 
     } 

     public static void Print(int[] arr) 
     { 
      for (int i = 0; i < arr.Length; i++) 
      { 
       Console.Write(arr[i] + " "); 
      } 
      Console.WriteLine(); 
     } 

     public static int[] Split(int N, int val) 
     { 
      List<int> lst = new List<int>(); 
      int M = N; 
      int v = 0; 
      while (M > 0) 
      { 
       v = M > val ? val : M; 
       lst.Add(v); 
       M -= v; 
      } 
      return lst.ToArray(); 
     } 
    } 
} 
0

extension-method

public static class NumSplit 
{ 
    public static int[] NumSplit(this int iNum, int div) 
    { 
     var CountInts = Enumerable.Repeat(div, iNum/div); 
     var leftover = iNum % div; 

     return leftover > 0 ? CountInts.Concat(new int[] { leftover }).ToArray() : CountInts.ToArray(); 
    } 
} 
相關問題