比方說,我有一個數字,我需要在40的數組中分裂,並保留剩餘。 例如:C#如何將數字除以相等的常量?
int Num = 140;
Wanted: 40, 40, 40, 20
int Num = 75;
Wanted: 40, 35
什麼是最優雅的方式來實現這一目標?
謝謝!
比方說,我有一個數字,我需要在40的數組中分裂,並保留剩餘。 例如:C#如何將數字除以相等的常量?
int Num = 140;
Wanted: 40, 40, 40, 20
int Num = 75;
Wanted: 40, 35
什麼是最優雅的方式來實現這一目標?
謝謝!
嘗試使用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;
}
提示:使用模量和分裂。
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
使用% Operator
,它會找到你的 「剩女」。我會向你展示你的75個例子,但是因爲這看起來很像作業,所以我會給你找出140的版本。
int num = 75;
//numberOfEvens contains 1
int numberOfEvens = num/40;
//remainder contains 35;
int remainder = num % 40;
試試看看這個代碼。它應該做你想做的。 但嘗試瞭解它當然,否則它是沒有用的。
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();
}
}
}
我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();
}
}
聽起來有點像功課...你嘗試過這麼遠嗎?提示:你想看看在模量(%)算 – JaredPar
部屋賈裏德, 到目前爲止我想出for循環: 對(INT I = 0; I
user1307346
模數可以不帶小數地做到這一點。你可以很容易地計算出餘數。一旦知道餘數,就可以進行減法以得到除數完全可分的值。這兩個值爲您提供了一切所需的信息來回答這個問題 – JaredPar