2017-12-13 17 views
-1

私は非常に初心者で、C#の学習を始めました。私は10進数から2進数に変換する簡単なコンソールアプリケーションを作りたいと思っています。アクションが終了するたびに増加する変数を宣言するにはどうすればよいですか?

私はこれを行っている:

static void Main(string[] args) 
{ 
    Console.Write("Which decimal number do you want to convert into binary : "); 
    long nr_dec = long.Parse(Console.ReadLine()); 

    int p = 0; 
    long[] nrbin = new long[p]; 
    int i = 0; 

    while (nr_dec > 1) 
    { 
     nrbin[i] = nr_dec % 2; 
     i++; 
     nr_dec /= 2; 
     p++; 
    } 
    nrbin[i] = 1; 

    for (i = 0; i < nrbin.Length; i++) 
    { 
     Console.Write(nrbin[i]); 
    } 

    Console.ReadKey(); 
} 

これは途中で動作します。配列に何個の場所を格納する必要があるか分かりません(バイナリが5の場合は101、3つの場所を格納したい場合など)。そのようにして、配列はp要素を持っているはずですが(配列の宣言の後にpを増やしているため、最初はpが0なので0の場所を格納するため)、また私は知らない配列に最後から最初の要素を表示する方法 //リストを試しましたが、現在は取得しています インデックスが範囲外です。負でなく、コレクションのサイズより小さくなければなりません。パラメータ名:インデックス

static void Main(string[] args) 
      { 

     Console.Write("Which decimal number do you want to convert into binary : "); 
     long nr_dec = long.Parse(Console.ReadLine()); 


     List<long> nrbin=new List<long>() ; 
     int i=0; 


     while(nr_dec> 1) 
     { 
      nrbin[i] = nr_dec % 2; 
      i++; 
      nr_dec /= 2; 

     } 
     nrbin[i] = 1; 



     for (i =0;i<nrbin.Count;i++) 
     { 
      Console.Write(nrbin[i]); 
     } 




     Console.ReadKey(); 
    } 
} 

}

+2

なぜ配列の代わりに 'List <>'を使わないのですか?そうすれば、どれくらいの大きさがあるかを知る必要はありません。 – itsme86

+0

最後の段落を明確にしてください。おそらく、いくつかの別々の文章に分割されるべきです。私はあなたの意思を確信していないので、自分で "修正"しようとは思わなかった。 –

+0

私は配列(またはあなたが示唆するようにリスト)を意味します。例えば、6はバイナリで110ですが、それは011として表示されますので、逆にして表示します。110 –

答えて

0

このコード

static void Main(string[] args) 
    { 
     Console.Write("Which decimal number do you want to convert into binary : "); 
     long nr_dec = long.Parse(Console.ReadLine());    

     var nrbin = new List<long>();   

     while (nr_dec > 1) 
     { 
      var bin = nr_dec % 2; 
      nrbin.Add(bin);     
      nr_dec /= 2;    
     }   
     nrbin.Add(1); 
     nrbin.Reverse(); 
     foreach (var num in nrbin) 
     { 
      Console.Write(num); 
     }   

     Console.ReadKey(); 
    } 

を試してみてください私はあなたの既存のアルゴリズムの作品ように、単にいくつかの変更を加え、あなたのコードのロジックを変更していません。配列を使用するのではなく、リストを使用して、最後に逆にして正しいバイナリが表示されるようにしました。

+0

はい、私は前にリストを使用したことはありませんが、今は理解しています。 –

関連する問題