روز مانده تا شروع دوره ‌
دوره آموزش طراحی سایت
جهت آموزش استفاده از پنل کاربری این فیلم را مشاهده کنید
ورود
021-88146330
021-88146323
تقویم آموزشی

آموزشگاه تحلیل‌داده

مشخصات مقاله
  • 0.0
  • 41
  • 0
  • 0

آرایه ها در زبان++ C

آرایه ها در زبان C++

آرایه ها برای ذخیره چندین مقدار در یک متغیر به جای تعیین متغیرهای جداگانه استفاده می شوند. توجه به این نکته ضروری است که داده های ذخیره شده از یک نوع هستند. برای مثال شماره دانشجویی 200 نفر را می توانیم در یک آرایه ذخیره و نام دانشجویان را در یک آرایه دیگر ذخیره و نگهداری نماییم. برای اعلان یک آرایه، در ابتدا نوع متغیر را تعریف و تعداد عناصری را که باید ذخیره کند، مشخص می نماییم:


string cars[4];


متغیری را تعریف کرده ایم که آرایه ای از چهار رشته را در خود جای داده است. برای درج مقادیر در آن نیز، می‌توانیم از یک آرایه به معنای واقعی کلمه استفاده کنیم، مقادیر را در یک لیست جدا شده با کاما، داخل پرانتز قرار می دهیم:

string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"};

برای ایجاد یک آرایه از سه عدد صحیح، کد زیر را می توان نوشت:

int myNum[3] = {10, 20, 30};

دسترسی به عناصر یک آرایه

شما با مراجعه به عدد شاخص داخل براکت [] به یک عنصر آرایه دسترسی پیدا می کنید. کدی که در ادامه آورده شده است، به مقدار عنصر اول در آرایه ای از خودروها دسترسی دارد:

  #include 
  #include 
  using namespace std;
  int main() {
    string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"};
    cout << cars[0];
    return 0;
  }
  

خروجی :

Volvo


توجه نمایید شاخص های آرایه با 0 شروع می شوند، [0] اولین عنصر، [1] عنصر دوم و باقی آرایه نیز به همین شکل تعریف می شود.

تغییر یک عنصر آرایه

برای تغییر مقدار یک عنصر خاص، به شماره شاخص آن در آرایه مراجعه می نماییم؛ به کد زیر توجه نمایید:

cars[0] = "Opel";

  #include 
  #include 
  using namespace std;
  int main(){
    string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"};
    cars[0] = "Opel";
    cout << cars[0];
    return 0;
  }
  

خروجی :

Opel

ایجاد حلقه در آرایه ها

با استفاده از for می توانید در یک آرایه دور و یا همان حلقه ایجاد نماییم و خروجی دریافت نماییم. به مثال زیر توجه نمایید که با استفاده از حلقه ایجاد شده از عناصر آرایه خروجی نام خودرو را گرفته ایم:

  #include 
  #include 
  using namespace std;
  int main(){
    string cars[5] = {"Volvo", "BMW", "Ford", "Mazda", "Tesla"};
    for (int i = 0; i < 5; i++){
      cout << cars[i] << "\n";
   }
    return 0;
  }
  

خروجی :

    BMW Ford Mazda Tesla

این مثال نمایه هر عنصر را همراه با مقدار آن در خروجی نمایش می دهد:

      #include 
      #include 
      using namespace std;
      int main(){
        string cars[5] = {"Volvo", "BMW", "Ford", "Mazda", "Tesla"};
        for (int i = 0; i < 5; i++) {
          cout << i << " = " << cars[i] << "\n";
        }
        return 0;
      }
      

خروجی :

    1 = BMW
  • 2 = Ford
  • 3 = Mazda
  • 4 = Tesla

در مثال زیر بررسی می کنیم که چگونه از آرایه ای که شامل اعداد است از طریق ایجاد حلقه خروجی دریافت نماییم:

  #include 
  using namespace std;
  int main(){ 
    int myNumbers[5] {10, 20, 30, 40, 50{
    for (int i = 0; i < 5; i++)}
      cout << myNumbers[i] << "\n";
  }
    return 0;
}
  

حلقه foreach

همچنین از طریق foreach نیز می توان منحصراً برای عناصر یک آرایه حلقه ایجاد نمود. نحوه ایجاد این حالت در کد برنامه به شکل زیر می باشد.

for (type variableName : arrayName) {
    // code block to be executed
  } 
  

در مثال زیر از تمام عناصر یک آرایه را با استفاده از حلقه "for-each" خروجی می گیریم:

    #include 
    using namespace std;
    int main() {
      int myNumbers[5] = {10, 20, 30, 40, 50};
      for (int i : myNumbers) {
        cout << i << "\n";
      }
      return 0;
    } 
    

خروجی:

    10 20 30 40 50

بدست آوردن اندازه یک آرایه

برای بدست آوردن اندازه یک آرایه، می توانید از عملگر()sizeof استفاده کنید:

  #include 
  using namespace std;
  
  int main() {
    int myNumbers[5] = {10, 20, 30, 40, 50};
    cout << sizeof(myNumbers);
    return 0;
  }
  

خروجی : 20

چرا در حالی که آرایه شامل 5 عنصر است، نتیجه به جای 5، 20 را نشان می دهد؟ به این دلیل که عملگر() sizeof اندازه یک نوع را بر حسب بایت برمی گرداند. نوع int معمولاً 4 بایت است، بنابراین از مثال بالا نتیجه می گیریم، (4 بایت ضرب در 5 عنصر) = 20 بایت است. برای اینکه بفهمید یک آرایه چند عنصر دارد، باید اندازه آرایه را بر اندازه نوع داده ای که دارد تقسیم کنید:

int myNumbers[5] = {10, 20, 30, 40, 50};
  int getArrayLength = sizeof(myNumbers) / sizeof(int);
  cout << getArrayLength;
  

خروجی : 5

ایجاد حلقه در آرایه با استفاده از sizeof()

با استفاده از رویکرد ()sizeof از مثال بالا، اکنون می‌توانیم حلقه‌هایی ایجاد کنیم که برای آرایه‌هایی با هر اندازه‌ای کار کنند.

به جای نوشتن:

int myNumbers[5] = {10, 20, 30, 40, 50};
  for (int i = 0; i < 5; i++) {
    cout << myNumbers[i] << "\n";
  }
  

بهتر است از کد زیر استفاده نماییم:

    #include 
    using namespace std;
    
    int main() {
      int myNumbers[5] = {10, 20, 30, 40, 50};
      for (int i = 0; i < sizeof(myNumbers) / sizeof(int); i++) {
        cout << myNumbers[i] << "\n";
      }
      return 0;
    }
    

خروجی :

    10 20 30 40 50

توجه داشته باشید که در C++ نسخه 11 (2011)، می توانید از حلقه "for-each" نیز استفاده نمایید:

        #include 
        using namespace std;
        int main() {
          int myNumbers[5] = {10, 20, 30, 40, 50};
          for (int i : myNumbers) {
            cout << i << "\n";
          }
          return 0;
        }
        

خروجی :

    10 20 30 40 50

آرایه های چند بعدی در C++

برای ایجاد یک آرایه چند بعدی، در ابتدا نوع متغیر را تعریف می کنیم، نام آرایه و به دنبال آن کروشه های مربعی که مشخص نمایید آرایه اصلی دارای چند عنصر است و سپس مجموعه دیگری از براکت ها که نشان می دهد آرایه های فرعی چند عنصر دارند را مشخص کنید :

string letters[2][4];

در یک آرایه چند بعدی، در یک آرایه ممکن است آرایه دیگری تعریف شده باشد.

  string letters[2][4] = {
    { "A", "B", "C", "D" },
    { "E", "F", "G", "H" }
  };
  
  

هر مجموعه ای از براکت های مربع در یک اعلان آرایه، بعد دیگری به آرایه اضافه می کند. آرایه ای مانند بالا دو بعد دارد. آرایه ها می توانند ابعاد مختلفی داشته باشند. هر چه ابعاد یک آرایه بیشتر باشد، کد پیچیده تر خواهد شد. آرایه زیر دارای سه بعد است:

    string letters[2][2][2] = {
      {
        { "A", "B" },
        { "C", "D" }
      },
      {
        { "E", "F" },
        { "G", "H" }
      }
    };
    

دسترسی به عناصر یک آرایه چند بعدی

برای دسترسی به یک عنصر از یک آرایه چند بعدی، یک عدد شاخص در هر یک از ابعاد آرایه مشخص نمایید. این دستور به مقدار عنصر در ردیف اول (0) و ستون سوم (2) آرایه حروف دسترسی دارد. برای مثال :

      #include 
      using namespace std;
      int main() {
        string letters[2][4] = {
          { "A", "B", "C", "D" },
          { "E", "F", "G", "H" }
        };
        cout << letters[0][2];
        return 0;
      }
      

خروجی :

C

تغییر عناصر در یک آرایه چند بعدی

برای تغییر مقدار یک عنصر، به شماره شاخص آن در هر یک از ابعاد مراجعه کنید:

        #include 
        using namespace std;
        int main() {
          string letters[2][4] = {
            { "A", "B", "C", "D" },
            { "E", "F", "G", "H" }
          };
          letters[0][0] = "Z";
          
          cout << letters[0][0];
          return 0;
        }
        

خروجی: Z

حلقه در یک آرایه چند بعدی

برای ایجاد حلقه از طریق یک آرایه چند بعدی، به یک حلقه برای هر یک از ابعاد آرایه نیاز دارید. مثال زیر تمام عناصر آرایه حروف را خروجی می دهد:

            #include 
            using namespace std;
            
            int main() {
              string letters[2][4] = {
                { "A", "B", "C", "D" },
                { "E", "F", "G", "H" }
              };
            
              for (int i = 0; i < 2; i++) {
                for (int j = 0; j < 4; j++) {
                  cout << letters[i][j] << "\n";
                }
              }
              return 0;
            }
            
            

خروجی :

    A B C D E F G H

این مثال نشان می دهد که چگونه از طریق یک آرایه سه بعدی دور ایجاد نمایی:

  #include 
  using namespace std;
  int main() {
    string letters[2][2][2] = {
      {
        { "A", "B" },
        { "C", "D" }
      },
      {
        { "E", "F" },
        { "G", "H" }
      }
    };
  
    for (int i = 0; i < 2; i++) {
      for (int j = 0; j < 2; j++) {
        for (int k = 0; k < 2; k++) {
          cout << letters[i][j][k] << "\n";
        }
      }
    }
    return 0;
  }
  

خروجی :

    A B C D E F G H

چرا آرایه های چند بعدی؟

آرایه های چند بعدی در نمایش شبکه ها عالی هستند. این مثال کاربرد عملی آنها را نشان می دهد. در مثال زیر از یک آرایه چند بعدی برای نمایش یک بازی کوچک از Battleship استفاده می کنیم:

  #include 
  using namespace std;
  int main() {
    // We put "1" to indicate there is a ship.
    bool ships[4][4] = {
      { 0, 1, 1, 0 },
      { 0, 0, 0, 0 },
      { 0, 0, 1, 0 },
      { 0, 0, 1, 0 }
    };
  
    // Keep track of how many hits the player has and how many turns they have played in these variables
    int hits = 0;
    int numberOfTurns = 0;
  
    // Allow the player to keep going until they have hit all four ships
    while (hits < 4) {
      int row, column;
  
      cout << "Selecting coordinates\n";
  
      // Ask the player for a row
      cout << "Choose a row number between 0 and 3: ";
      cin >> row;
  
      // Ask the player for a column
      cout << "Choose a column number between 0 and 3: ";
      cin >> column;
  
      // Check if a ship exists in those coordinates
      if (ships[row][column]) {
        // If the player hit a ship, remove it by setting the value to zero.
        ships[row][column] = 0;
  
        // Increase the hit counter
        hits++;
  
        // Tell the player that they have hit a ship and how many ships are left
        cout << "Hit! " << (4-hits) << " left.\n\n";
      } else {
        // Tell the player that they missed
        cout << "Miss\n\n";
      }
  
      // Count how many turns the player has taken
      numberOfTurns++;
    }
  
    cout << "Victory!\n";
    cout << "You won in " << numberOfTurns << " turns";
    
    return 0;
  }
  

خروجی :

  • Selecting coordinates Choose a row number between 0 and 3: 2 Choose a column number between 0 and 3: 1 Miss
  • Selecting coordinates Choose a row number between 0 and 3: 2 Choose a column number between 0 and 3: 2 Hit! 3 left.
  • Selecting coordinates Choose a row number between 0 and 3: 2 Choose a column number between 0 and 3: 2 Miss
  • Selecting coordinates Choose a row number between 0 and 3: 3 Choose a column number between 0 and 3: 2 Hit! 2 left.
  • Selecting coordinates Choose a row number between 0 and 3: 0 Choose a column number between 0 and 3: 2 Hit! 1 left.
  • Selecting coordinates Choose a row number between 0 and 3: 0 Choose a column number between 0 and 3: 0 Miss
  • Selecting coordinates Choose a row number between 0 and 3: 0 Choose a column number between 0 and 3: 1 Hit! 0 left.
  • Victory! You won in 7 turns Process returned 0 (0x0) execution time : 24.994 s
1401/08/30 41
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
[]
سوالتو بپرس!
نظرات سوالات