-2

整数に含まれる数値の数を確認する方法を知りたい

1000 200 30 4

どうすればいいですか?

4

7 に答える 7

4
int num = 1234;
var s = num.ToString();

var ints = s.Select((c,i) => (int)(Math.Pow(10,s.Length-i-1)*(c - '0'))).ToArray();
于 2013-05-16T19:33:25.373 に答える
2
int number = 1234;
int remainder = number;
int maxPow = (int)Math.Log(number, 10);
for (int factor = (int)Math.Pow(10, maxPow); factor >= 1; factor /= 10)
{
    int part = factor * (remainder / factor);
    remainder -= part;

    Console.WriteLine(part);
}

コレクションを構築するには:

private static IEnumerable<int> GetParts(int number)
{
    int remainder = number;
    int maxPow = (int)Math.Log(number, 10);
    for (int factor = (int)Math.Pow(10, maxPow); factor >= 1; factor /= 10)
    {
        int part = factor * (remainder / factor);
        remainder -= part;
        yield return part;
    }
}

Which can be used the following way:

List<int> parts = GetParts(1234).ToList();
// parts[1] --> 200

迅速で汚い解決策を提供する文字列を使用しないように苦労していることに注意してください...

于 2013-05-16T19:43:23.023 に答える
2

モジュロ 10 を使用して最も低い部分を取得し、それを数値から減算し、モジュロ 100 を使用して次の部分を取得することができます。

int number = 1234;

for (int div = 10; number != 0; div *= 10) {
  int n = number % div;
  Console.WriteLine(n);
  number -= n;
}

出力:

4
30
200
1000
于 2013-05-16T20:09:10.077 に答える
1

再帰関数を使用する

 public List<int> myNums = new List<int>();

 public void getList(int Num, int Multiplier)
 {
     if (Num != 0)
     {
         myNums.Add((Num % 10)*Multiplier);
         getList(Num / 10,Multiplier* 10);
     }
 }

//電話

int N = 1234;
getList(N, 1);
于 2013-05-16T19:33:35.160 に答える
1

まず、明確な問題文を書きます。次に、それを一連のより単純な問題に分解します。必要がある

  1. 整数をそのコンポーネントの 10 進数に分解します。
  2. それらのそれぞれを正しい順序で配列に蓄積します。

いくつかのヒント:

  • 任意の整数xについて、モジュロ 10演算を介して 1 の位置にある数字の値を取得できます。123 modulo 10は 3 に評価されます。

  • C プログラミング言語から派生したほとんどのコンピューター言語 (C# はその 1 つです) は、オペランドが整数型の場合、デフォルトとして整数除算を提供します。

  • 多くの問題 (このような) には、一般的なケースと、1 つまたは 2 つの特定または特殊なケースがあります。ここでの特別なケースは、開始値がゼロの場合です。

擬似コードでは、

  • X がゼロの場合、リスト [0] を返します。
  • それ以外は...
    • Digits と呼ばれる整数の空のリストを作成します。
    • X が非ゼロである間
    • D は X モジュロ 10 です
    • X は X を 10 で割った値
    • 数字に D を追加

これにより、整数のリストが得られます...逆順です。

ヒント: a と呼ばれる別のデータ構造がありstack、この問題を解決するのに役立つかもしれません。

于 2013-05-16T20:03:14.657 に答える
0
    public static List<int> DecomposeInPowerOf10(int number)
    {
        if (number < 0) return null;
        if (number < 10) return new List<int> {number};

        List<int> result = new List<int>();
        char[] digits = number.ToString(CultureInfo.InvariantCulture).ToArray();
        for (int i = 0; i < digits.Length; i++)
        {
            int digit = digits[i] - '0';
            int value = digit * (int)(Math.Pow(10, (digits.Length - i - 1)));
            result.Add(value);
        }

        return result;
    }
于 2013-05-16T19:51:41.730 に答える
0

完全な関数を書き出すことなく、次の事実を利用するのが簡単な方法です。

1234 % 10 = 4

数値を法 10 で計算して左端の桁を取得し、その数値を 10 で割り (剰余を破棄)、数値を右に「シフト」するループを作成します。10 で割った回数を追跡している限り、抽出した数字がどの位置にあったかがわかります。

または、たとえば Int32 クラスにある ToString() メソッドを使用して数値を文字列に変換することもできます。この時点で、文字列インデックスの数字に適切なべき乗を掛けることで、各桁の数値を見つけることができます。 10.

于 2013-05-16T19:32:31.567 に答える