2017-10-21 10 views
0

プログラミングには、特にC#については初めてですが、今年は勉強しています。本当にそれを理解したいと思っています。しかし、私たちの教師は、私たち自身でそれを学ぶことができます。さて、それでは問題なく、インターネットはそれほど素晴らしいものです。合計が0でない桁数と桁数... C#のスイッチ付き

だから私は宿題としてこの練習を持っている:。

====合計、0でない数字の積と整数の桁数を計算====

それは、私はそれだけでそれを作る方法を知っていると、それは完全に動作しますが、彼女は私たちがSWITCHでもそれをやりたいと思っています。そして、これは私がケースを構築する方法を知らないので(大文字小文字が0の場合は問題ありませんが、桁またはn!= 0の場合はどうすれば書けますか?)

私は本当にこの問題を解決する必要があります。また、説明を提供することもできますか?どうもありがとうございます! :D

int n, s = 0, p = 1, d = 0, digit; 
Console.Write("Number n : "); 
n = Convert.ToInt32(Console.ReadLine()); 

if (n == 0) 
    p = 0; 
do 
{ 
    digit = n % 10; 
    s += digit; 
    if (digit != 0) 
     p *= digit; 
    d++; 
    n /= 10; 
} while (n != 0); 
Console.WriteLine("The sum of the digits is: {0} ", s); 
Console.WriteLine("The product of the digits not equal to 0 is : {0} ", p); 
Console.WriteLine("The number of the digits is: {0}", d); 
Console.ReadKey(); 
+1

スイッチの構成... – Funk

+0

面白い事実は、これは少なくとも同じトピック(数字の製品...)を持つ2番目の質問です。私は今日読んだことがあります...スイッチはここで説明されています:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/switch – Michael

+0

先生にLinqを使いたいと言ってください:) 'string str =" 12345 "; var s = str.Sum(x => x - '0'); var p = str.Select(x => x - '0')集計((y、i)=> y * = i); ' –

答えて

0

あなたはスイッチ/ケース内のすべての可能な組み合わせを印刷することはできませんが、少なくとも「0」と「0でない」との間で異なることができます。

switch(n) 
{ 
    case 0: // n == 0 
     p = 0; 
     break; 
    default: // this runs in any case but zero 
     do 
     { 
      digit = n % 10; 
      s += digit; 
      if (digit != 0) 
       p *= digit; 
      d++; 
      n /= 10; 
     } while (n != 0); 
     break; 
} 

はたぶんその本、何をお使いの教師はあなたに言うことを望んでいた:defaultスイッチの場合は、基本的に "他のすべて"を意味します。

あなたの解析について...もちろん、あなたはintとそのdivison/moduloのものを解析することができますが、プログラミングに慣れていないので文字列を読むことができないかもしれませんチャー・バイ・文字インデックスを通じて:

string input = Console.ReadLine(); 
foreach (char c in input) 
{ 
    int digit = Convert.ToInt32(c); 
    s += digit; 
    p *= digit; 
} 

このforeachのは、あなたの文字列によって文字ごとに文字を実行し、cに次の文字を格納します。このコードは、div/modバージョンよりもはるかに読みやすいです。簡単でクリーンなコードは、理解に役立ちます。

このようにそれを変更する場合は、スイッチは次のようになります。私たちはにリストされていないケースをキャッチする方法を持っていた場合にのみ、これは歓声、助け

switch (input.Length) 
{ 
    case 0: 
     p = 0; 
     break; 
    default: 
     // the foreach loop from above 
     break; 
} 

希望、グリ

+0

ありがとう、グリス!うん、これは....啓発xD 私が期待していたよりもはるかに簡単な解決 – EfyB

+0

答えを受け入れることは、このサイトでありがとうと言う素晴らしい方法です。ありがとう。 – Grisgram

関連する問題