2015-04-13 1 views
-1

Я работаю над массивом автоматического приращения, но эта логика не работает должным образом для неровных массивов:Что касается C# массива Jagged массива динамических авто инкрементации массив не печатают значения правильно

namespace TESETER 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      int q, moj = 0; 
      int[][] arr = new int[1][]; 
      int[][] b; 
      b = arr; 
      arr[0] = new int[1]; 
      b[0] = arr[0]; 
      while (moj < 3) 
      { 
       Console.WriteLine("interger"); 
       int.TryParse(Console.ReadLine(), out q); 
       if (moj < 1) 
       { arr[0][0] = q; moj++; } 
       else 
       { 
        moj++; arr[0] = new int[moj]; 
        for (int i = 0; i < moj - 1; i++) 
        { 
         arr[0][i] = b[0][i]; 
        } 
        arr[0][moj - 1] = q; 
        b = arr; 
        b[0] = arr[0]; 
       } 
      } 
      Console.WriteLine(arr[0][0]); 
      Console.WriteLine(arr[0][1]); 
      Console.WriteLine(arr[0][2]); 
      Console.ReadLine(); 
     } 
    } 
} 

Ouput: целого 7 числа 8 число 9 009

, пожалуйста, помогите я хочу выхода 789, если вход 789

+0

Не могли бы вы подробнее рассказать о том, чего вы пытаетесь достичь в своем алгоритме? – codingadventures

+0

эй, я хочу, чтобы время нарастания пробега в зацикленном массиве – user3906267

+0

выше кода ограничивает его до трех, но если я изменяю while (moj <3) до while (true), тогда он должен принять, но проблема в том, что он не печатает ожидаемые результаты – user3906267

ответ

0

Я предлагаю использовать List<int> вместо рваного массива. Он автоматически изменяется при добавлении к нему новых элементов.

Если вам нужно использовать неровный массив здесь, не используйте назначение для сохранения предыдущих значений. вместо этого используйте Array.Copy.

using System; 
namespace TESETER 
{ 
    class Program 
    { 
     static void Main(string[] args) 
    { 
     int q, moj = 0; 
     int[][] arr = new int[1][]; 
     int[][] b = new int[1][]; 
     // b = arr; 
     // arr[0] = new int[1]; 
     // Array.Copy(arr[0], b[0]); 
     while (moj < 3) 
     { 
      Console.WriteLine("interger"); 
      int.TryParse(Console.ReadLine(), out q); 
      if (moj < 1) 
      { arr[0][0] = q; moj++; } 
      else 
      { 
       moj++; arr[0] = new int[moj]; 
       for (int i = 0; i < moj - 1; i++) 
       { 
        arr[0][i] = b[0][i]; 
       } 
       arr[0][moj - 1] = q; 
       Array.Copy(arr, b); 
       //b[0] = arr[0]; 
      } 
     } 
     Console.WriteLine(arr[0][0]); 
     Console.WriteLine(arr[0][1]); 
     Console.WriteLine(arr[0][2]); 
     Console.ReadLine(); 
    } 
} 
} 
+0

Спасибо, много вы спасли! вот что я хотел сейчас, он хорошо работает – user3906267

+0

извините за плохой английский – user3906267