2017-12-13 30 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는 2 진수로 101은 3 개를 저장하고 싶다.) 그런 식으로 나는 P가 % 배열에 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이지만 (예 : 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(); 
    } 

을보십시오. 배열을 사용하는 대신 List를 사용하고 마지막에는 반대로 올바른 바이너리가 표시되도록합니다.

+0

예, 전에는 목록을 사용하지 않았지만 지금은 더 잘 이해하는 방법을 이해합니다. –