user1439564
user1439564

Reputation: 115

How to create jagged arrays in c#?

I'm familiar with C. Where I can write like this:

uint array[0xFFFF][20];

But I've no idea how to do this in Csharp. I tried all MS tutorials and other tutorials but no luck.

Can someone please help me out?

Upvotes: 4

Views: 17329

Answers (6)

Adiii
Adiii

Reputation: 59906

creating and displaying element of jagged array

 int[][] a = new int[2][];//its mean num of row is 2 which fixed
        int choice;//thats i left on user choice that how many number of column in each row he wanna to declare

        for (int row = 0; row < a.Length; row++)
        {
            Console.WriteLine("pls enter number of colo in row {0}", row);
            choice = int.Parse(Console.ReadLine());
            a[row] = new int[choice];
            for (int col = 0; col < a[row].Length; col++)
            {
                a[row][col] = int.Parse(Console.ReadLine());
            }
        }
        //loop for out put the values of jagged array
        for (int row = 0; row < a.Length; row++)
        {
            for (int col = 0; col < a[row].Length; col++)
                Console.Write(a[row][col]+"\t");
            Console.WriteLine("");
        }

here in inserting loop i used

a[row].length

instead of

a.length,

the reason behind is that every row have different number of columns so that way in second loop you have to mentioned the length of each row

Upvotes: 0

Aqib
Aqib

Reputation: 1

namespace jaggedarray
{
    class Program
    {
        static void Main(string[] args)
        {

            int[][] jagged = new int[5][];
            jagged[0] = new int[4] { 22, 33,44,55 };
            jagged[1] = new int[1] { 2 };
            jagged[2] = new int[4] { 1, 2, 3, 4 };
            jagged[3] = new int[2] { 12,13};
            jagged[4] = new int[1] {2};
            for (int i = 0; i < jagged.Length; i++ ) {
                for (int j = 0; j < jagged[i].Length; j++)
                {
                    Console.Write("\t{0}",jagged[i][j]);
                }
                Console.WriteLine();
                Console.WriteLine();
            }

            // input jagged array

            int [][] arrays=new int[5][];
            Console.WriteLine("Please Enter the ValueType to make a jagged array:");
            arrays[0] = new int[1];
            arrays[1] = new int[2];
            arrays[2]=new int [3];
            arrays[3]=new int [4];
            arrays[4] = new int[5];
            for (int i = 0; i < arrays.Length;i++ ) {

                for (int j = 0; j < arrays[i].Length; j++)
                {
                    arrays[i][j] = Convert.ToInt32(Console.ReadLine());
                }
            }

            Console.WriteLine("This is jagged array::");
            for (int i = 0; i < arrays.Length;i++ ) {

                for (int j = 0; j < arrays[i].Length;j++ ) {
                    Console.Write("\t{0}", arrays[i][j]);

                }
                Console.WriteLine();
            }
        }

    }
}

Upvotes: 0

piyush sharma
piyush sharma

Reputation: 1

I think this may help you

       static void Main(string[] args)
    {
        Console.WriteLine("enter the size of rows");

        int n = Convert.ToInt32(Console.ReadLine());

        int[][] a = new int[n][];
        for (int i = 0; i < a.Length; i++)
        {
            Console.WriteLine("enter the number of elements for row {0}", i + 1);
            int x = Convert.ToInt32(Console.ReadLine());
            a[i]=new int[x];
            for (int j = 0; j < a[i].Length; j++)
            {
                a[i][j] = Convert.ToInt32(Console.ReadLine());
            }
        }
        for (int i = 0; i < a.Length; i++)
        {
            for (int j = 0; j < a[i].Length; j++)
            {
                Console.Write(a[i][j]+"\t"); 
            }
            Console.WriteLine();
        }

            Console.ReadKey();
    }

Upvotes: 0

Matzi
Matzi

Reputation: 13925

Official tutorial. Basically you create the "outer" array first, and then loop trough it, and create each "inner"array individually.

Two examples:

int[][] a = new int[] { new int[]{ 1, 2 }, new int[]{ 3, 4, 5, 6, 7 }};

int[][] c = new int[100][];
for (int i = 0; i < c.length; i++) c[i] = new int[5];

If you need only a 2D rectangular array, you can use int[,] b = new int[10, 7];.

Upvotes: 11

Dr. Rajesh Rolen
Dr. Rajesh Rolen

Reputation: 14285

I don't know that in C but in c# you can use jagged arrays like:

// Declare local jagged array with 3 rows.
    int[][] jagged = new int[3][];

    // Create a new array in the jagged array, and assign it.
    jagged[0] = new int[2];
    jagged[0][0] = 1;
    jagged[0][1] = 2;

    // Set second row, initialized to zero.
    jagged[1] = new int[1];

    // Set third row, using array initializer.
    jagged[2] = new int[3] { 3, 4, 5 };

    // Print out all elements in the jagged array.
    for (int i = 0; i < jagged.Length; i++)
    {
        int[] innerArray = jagged[i];
        for (int a = 0; a < innerArray.Length; a++)
        {
        Console.Write(innerArray[a] + " ");
        }
        Console.WriteLine();
    }

http://www.dotnetperls.com/jagged-array

Upvotes: 1

Habib
Habib

Reputation: 223207

int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[5];
jaggedArray[1] = new int[4];
jaggedArray[2] = new int[2];

or

jaggedArray[0] = new int[] { 1, 3, 5, 7, 9 };
jaggedArray[1] = new int[] { 0, 2, 4, 6 };
jaggedArray[2] = new int[] { 11, 22 };

See Jagged Arrays (C# Programming Guide)

Upvotes: 2

Related Questions