Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में दो-आयामी सरणी पर लूप करना


C# में दो-आयामी सरणी (2D array) पर पुनरावृति (iterate) करने के लिए नेस्टेड for लूप्स का उपयोग किया जाता है। GetUpperBound() या GetLength() मेथड्स से आयामों की सीमाएं प्राप्त की जा सकती हैं।

उदाहरण

using System;

public class Demo
{
    public static void Main()
    {
        // 3x3 दो-आयामी सरणी घोषित करें
        string[,] array = new string[3, 3];
        
        // तत्व सेट करें
        array[0, 0] = "One";   array[0, 1] = "Two";   array[0, 2] = "Three";
        array[1, 0] = "Four";  array[1, 1] = "Five";  array[1, 2] = "Six";
        array[2, 0] = "Seven"; array[2, 1] = "Eight"; array[2, 2] = "Nine";
        
        // आयाम सीमाएं प्राप्त करें
        int rows = array.GetUpperBound(0) + 1;    // या array.GetLength(0)
        int cols = array.GetUpperBound(1) + 1;    // या array.GetLength(1)
        
        Console.WriteLine($"सरणी आयाम: {rows} पंक्तियाँ × {cols} स्तंभ");
        Console.WriteLine();
        
        // नेस्टेड लूप से पुनरावृति
        Console.WriteLine("पंक्ति-मुख्य क्रम (Row-major order):");
        for (int i = 0; i < rows; i++)
        {
            for (int j = 0; j < cols; j++)
            {
                Console.WriteLine($"  array[{i},{j}] = {array[i, j]}");
            }
        }
    }
}

आउटपुट

सरणी आयाम: 3 पंक्तियाँ × 3 स्तंभ

पंक्ति-मुख्य क्रम (Row-major order):
  array[0,0] = One
  array[0,1] = Two
  array[0,2] = Three
  array[1,0] = Four
  array[1,1] = Five
  array[1,2] = Six
  array[2,0] = Seven
  array[2,1] = Eight
  array[2,2] = Nine

विभिन्न पुनरावृति पैटर्न

using System;

public class Demo
{
    public static void Main()
    {
        int[,] matrix = 
        {
            { 1, 2, 3 },
            { 4, 5, 6 },
            { 7, 8, 9 }
        };
        
        int rows = matrix.GetLength(0);
        int cols = matrix.GetLength(1);
        
        // 1. पंक्ति-मुख्य (Row-major) - कैश-फ्रेंडली
        Console.WriteLine("पंक्ति-मुख्य:");
        for (int r = 0; r < rows; r++)
        {
            for (int c = 0; c < cols; c++)
                Console.Write($"{matrix[r,c]} ");
            Console.WriteLine();
        }
        
        // 2. स्तंभ-मुख्य (Column-major)
        Console.WriteLine("\nस्तंभ-मुख्य:");
        for (int c = 0; c < cols; c++)
        {
            for (int r = 0; r < rows; r++)
                Console.Write($"{matrix[r,c]} ");
            Console.WriteLine();
        }
        
        // 3. foreach (सभी तत्व, लेकिन इंडेक्स नहीं)
        Console.WriteLine("\nforeach (केवल मान):");
        foreach (int val in matrix)
            Console.Write($"{val} ");
        Console.WriteLine();
        
        // 4. विकर्ण तत्व (Diagonal)
        Console.WriteLine("\nमुख्य विकर्ण:");
        for (int i = 0; i < Math.Min(rows, cols); i++)
            Console.Write($"{matrix[i,i]} ");
        Console.WriteLine();
        
        // 5. सभी इंडेक्स और मान (C# 7.0+ टपल के साथ)
        Console.WriteLine("\nसभी इंडेक्स और मान:");
        for (int r = 0; r < rows; r++)
        {
            for (int c = 0; c < cols; c++)
            {
                Console.WriteLine($"  [{r},{c}] = {matrix[r,c]}");
            }
        }
    }
}

आउटपुट

पंक्ति-मुख्य:
1 2 3 
4 5 6 
7 8 9 

स्तंभ-मुख्य:
1 4 7 
2 5 8 
3 6 9 

foreach (केवल मान):
1 2 3 4 5 6 7 8 9 

मुख्य विकर्ण:
1 5 9 

सभी इंडेक्स और मान:
  [0,0] = 1
  [0,1] = 2
  [0,2] = 3
  [1,0] = 4
  1,1] = 5
  [1,2] = 6
  [2,0] = 7
  [2,1] = 8
  [2,2] = 9

GetUpperBound() बनाम GetLength()

मेथडलौटाता हैउपयोग
GetLength(dimension)आयाम का आकार (लंबाई)for (i = 0; i < GetLength(0); i++)
GetUpperBound(dimension)अंतिम वैध इंडेक्सfor (i = 0; i <= GetUpperBound(0); i++)

GetLength() अधिक सहज है और आमतौर पर पसंद किया जाता है।

जैग्ड सरणी (Jagged Array) पर पुनरावृति

// जैग्ड सरणी (सरणियों की सरणी)
int[][] jagged = new int[3][];
jagged[0] = new int[] { 1, 2 };
jagged[1] = new int[] { 3, 4, 5, 6 };
jagged[2] = new int[] { 7 };

foreach (var row in jagged)
{
    foreach (var val in row)
        Console.Write($"{val} ");
    Console.WriteLine();
}
// आउटपुट:
// 1 2 
// 3 4 5 6 
// 7 

महत्वपूर्ण बिंदु

  • दो-आयामी सरणी [,] सिंटैक्स का उपयोग करती है (आयताकार)
  • GetLength(0) = पंक्तियाँ, GetLength(1) = स्तंभ
  • पंक्ति-मुख्य क्रम (बाहरी लूप पंक्ति) कैश परफॉर्मेंस के लिए बेहतर
  • foreach सभी तत्वों पर पुनरावृति करता है लेकिन इंडेक्स नहीं देता
  • जैग्ड सरणी [][] में प्रत्येक पंक्ति की अलग लंबाई हो सकती है
  • बहु-आयामी सरणी के लिए Rank प्रॉपर्टी आयामों की संख्या देती है
  1. - C# प्रोग्राम दो मैट्रिक्स को गुणा करने के लिए

    मैट्रिक्स गुणा के लिए प्रोग्राम का उपयोग दो मैट्रिक्स को गुणा करने के लिए किया जाता है। यह प्रक्रिया केवल तभी संभव है जब पहले मैट्रिक्स में कॉलम की संख्या दूसरे मैट्रिक्स में पंक्तियों की संख्या के बराबर हो। C# में मैट्रिक्स गुणा को प्रदर्शित करने वाला एक प्रोग्राम निम्नलिखित है - उदाहरण using Syst

  1. C# में Dimensional Array क्या है? C# में Dimensional Array क्या है?

    C# Multidimensional Arrays Allow करता है। Int के 2-Dimensional Array को ऐसे Declare करें:int[,] a;Multidimensional Array का Simplest Form 2-Dimensional Array है। 2-Dimensional Array, One-Dimensional Arrays की List होती है।निम्न Two-Dimensional Array 3 Rows और 4 Columns के साथ है।आइए अब C# में Multi-

  1. पायथन प्रोग्राम: दो से अधिक (या ऐरे) नंबर्स का GCD पायथन प्रोग्राम: दो से अधिक (या ऐरे) नंबर्स का GCD

    इस लेख में, हम नीचे दिए गए प्रॉब्लम स्टेटमेंट के समाधान के बारे में सीखेंगे: प्रॉब्लम स्टेटमेंट हमें नंबर्स का एक ऐरे दिया जाएगा और हमें ग्रेटेस्ट कॉमन डिवाइजर ढूंढना होगा। यदि हमें दो से अधिक नंबर्स का gcd ढूंढना है, तो gcd उन सभी नंबर्स में कॉमन प्राइम फैक्टर्स के गुणनफल के बराबर होता है जो आर्ग