2016-06-16 11 views
0

In letzter Zeit habe ich gearbeitet, durch Euler-Projekt, speziellC# char-Konvertierung/Anhängen an/mit int, int64, string

https://projecteuler.net/problem=4

  • Ich schaffe sie auf Arrays
  • Multiplizieren zusammen
  • Konvertieren Sie die Nummer in einer CharArry
  • Vergleichen Sie die Zahlen
  • Wenn wahr, mein Problem entsteht

ich versuchen, die Zeichen wieder in einen int zu konvertieren, oder lang, oder Schnur, und habe ich versucht, die Zeichen in einen int oder lang, oder Schnur, oder was auch immer

void Main() 
{ 
    int[] arrOne = new int[900];       // Initializing Array One 
    int[] arrTwo = new int[900];       // Initializing Array Two 

    Console.WriteLine(PopulateAndConvert(arrOne, arrTwo)); // Sending info into class 

} 

int PopulateAndConvert(int[] a, int[] b) 
{ 
    char[] c = new char[1];         // char used to store tested number 
    //string[] m = new string[a.Length*b.Length]; 
    long l = 0;            // Used for testing code 

    for(int i = 0; i < a.Length; i++)      // Populating Arrays One and Two 
    { 
     a[i] = i + 100; 
     b[i] = i + 100; 
    } 

    for(int j = a.Length-1; j >= 0; j--)     // Beginning for-loops for multiplication and testing 
    {  
     //Console.WriteLine(j); 
     for(int k = b.Length-1; k >= 0; k--)    // Second part of for-loop previously mentioned 
     { 
      //Console.WriteLine(k); 
      c = (a[j] * b[k]).ToString().ToCharArray();  // Where the math and conversion happens 
      //Console.WriteLine(c); 

      if(c.Length > 5)        // Checking if digit of product is greater than 5 
      { 
       if((c[0] == c[c.Length-1]) &&    // Comparing first and second half of product 
        (c[1] == c[c.Length-2]) && 
        (c[2] == c[c.Length-3])) 
       { 
        /*for(int n = 0; n < c.Length; n++)  // Last tidbit of code that was being attempted 
         sb[l].Append(Convert.ToInt32(c[0])); 
        l++; 
        Console.WriteLine(sb); */ 
       } 
      } 
      else if (c.Length < 5)       // Product with less than 6 digits go here 
      {    
       if((Convert.ToInt32(c[0]) == Convert.ToInt32(c[4])) && 
        (Convert.ToInt32(c[1]) == Convert.ToInt32(c[3]))) 
       { 
        //m[l] = Convert.ToChar(c); l++; 
       } 
      } 
     } 
    } 
    // Everything below was used to check the code that I have been trying to work through 
    // And to place the given products in a ascending or descending order 
    //foreach (char x in m) 
    // Console.WriteLine(m); 


    //IEnumerable<char> sortDescendingQuery = 
    // from num in c 
    // orderby num descending 
    // select num; 

    return 0; 
} 
anhängen
+0

Was genau ist dein Problem? –

+0

Sie könnten die Klasse 'BitConverter' auschecken, die' int/double/etc' in 'byte []' konvertieren kann –

Antwort

1

nach einiger Zeit (Ruhe den Geist immer von Vorteil ist) ich eine Lösung gefunden:

if(c.Length > 5)        // Checking if digit of product is greater than 5 
     { 
      int[] n = new int[c.Length]; 
      StringBuilder sb = new StringBuilder(); 

      if((c[0] == c[c.Length-1]) &&    // Comparing first and second half of product 
       (c[1] == c[c.Length-2]) && 
       (c[2] == c[c.Length-3])) 
      { 
       for(int l = 0; l < c.Length; l++)  // Converting each value in the char array to a stringbuilder 
       { 
        sb.Append(Convert.ToInt32(new string(c[l], 1))); 
       } 
       m[q] = Int32.Parse(sb.ToString());  // Converting stringbuilder into string and then into a long 
       q++; 
      } 
     } 

ich hatte zu konvertieren jeden einzelnen Wert innerhalb des char-Array c [] in einen String, dann int, hängen sie dann zu t er Saitenbauer jdn.

Danach konvertiere ich dann sb zu einem String (via ToString()) und Parse es zu einem int.

Es scheint wie eine lange Arbeit herum, aber es funktioniert.

Jetzt muss ich es numerisch sortieren (eine andere Hürde).