چند مثال از آرایه ها

    مثال : برنامه ای بنويسيد که 10 عدد صحيح را ورودی دريافت کرده و در آرايه ای قرار داده سپس مجموع عناصر آرايه را محاسبه کرده و درخروجی چاپ نمايد .

#include <iostream.h>
 
void main()
{
  const int arraySize = 10;
  int total = 0,i;
  int a[ arraySize ];
 
  for (i = 0; i < arraySize; i++)
    {
     cout << "Enter number " << i << " : ";
     cin >> a[ i ];
    }
 
  for (i = 0; i < arraySize; i++ )
     total += a[ i ];
 
  cout << "Total of array element values is "
       << total << endl;
 
}

   خروجی برنامه به صورت زير می باشد :

Enter number 0 : 12
Enter number 1 : 3
Enter number 2 : 4
Enter number 3 : 654
Enter number 4 : 34
Enter number 5 : 2
Enter number 6 : 123
Enter number 7 : 794
Enter number 8 : 365
Enter number 9 : 23
Total of array element values is 2014

  مثال : برنامه ای بنويسيد که توسط آرايه ، نمودار ميله ای افقی برای اعداد {1 و17 و5 و13 و9 و11 و7 و15 و3 و19 } رسم کند .

#include <iostream.h>
 
int main()
{
  const int arraySize = 10;
  int n[ arraySize ] = { 19, 3, 15, 7, 11, 
                         9, 13, 5, 17, 1 };
 
  cout << "Element" << " Value" << endl;
 
  for ( int i = 0; i < arraySize; i++ ) {
     cout << i << "\t " << n[ i ] << "\t";
 
     for ( int j = 0; j < n[ i ]; j++ )
        cout << '*';
     cout << endl; 
  } 
 
return 0; 
 
} 

   خروجی برنامه به صورت زير می باشد :

 
Element  Value
0        19     *******************
1        3      ***
2        15     ***************
3        7      *******
4        11     ***********
5        9      *********
6        13     *************
7        5      *****
8        17     *****************
9        1      *

   مثال : برنامه ای بنويسيد که يک تاس را 6000 بار پرتاب کرده و توسط آرايه ای تعداد دفعات آمدن هر وجه را حساب کند .( تعداد دفعات آمدن هر وجه را يک عنصر آرايه ای در نظر بگيريد )

#include <iostream.h>
#include <stdlib.h>
#include <time.h>
 
void main()
{
  const int arraySize = 7;
  int frequency[ arraySize ] = { 0 };
 
  srand( time( 0 ) ); 
 
  for ( int roll = 1; roll <= 6000; roll++ ) 
     ++frequency[ 1 + rand() % 6 ];
 
  cout << "Face Frequency" << endl;
 
  for ( int face = 1; face < arraySize; face++ ) 
     cout << face << "\t" << frequency[face] << endl;
 
}

   خروجی برنامه به صورت زير می باشد :

 
Face  Frequency
1       1023
2       990
3       1008
4       971
5       1025
6       983

   دستور ++frequency [rand()%6 + 1]; ، مقدار عنصر مربوط به هر وجه را يک واحد اضافه می کند ، زيرا rand()%6 + 1 عددی بين 1 تا 6 توليد می کند ، پس هر بار به طور تصادفی تنها مقدار عنصر مربوط به يکی از وجوه افزايش می يابد .

   يکی از کار برد های آرايه ها ، استفاده از آنها برای ذخيره رشته ای از حروف می باشد . تا به حال متغيرهايی که از ورودی دريافت می کرديم و يا آرايه هايی که تا به اينجا ديديد تنها شامل اعداد می شدند در اينجا به عنوان مثال نحوه دريافت يک نام از ورودی و چاپ آن در خروجی را بررسی می کنيم .(در فصل بعد يعنی اشاره گرها و رشته ها ، به طور مفصل تر راجع به رشته ها صحبت خواهم کرد )

    يک عبارت رشته ای مانند: "hello" در واقع آرايه ای از حروف می باشد.

char string1[]="hello";

   دستور فوق آرايه ای به نام string1 را با کلمه hello مقدار دهی می کند. طول آرايه فوق برابر است با طول کلمه hello يعنی 5 بعلاوه يک واحد که مربوط است به کاراکتر پوچ که انتهای رشته را مشخص می کند. لذا آرايه string1 دارای طول 6 می باشد. کاراکتر پوچ در زبان ++C توسط '\0' مشخص می گردد. انتهای کليه عبارات رشته ای با اين کاراکتر مشخص می شود.

char string1[]={'h','e','l','l','o','\0'}

   دستور فوق عناصر آرايه string1 را جداگانه مقدار دهی می کند. توجه داشته باشيد که عناصر آرايه در دستور فوق داخل (') قرار گرفتند و نيز انتهای رشته با '\0' تعيين شد. نتيجه همانند دستور char string1[]="hello"; می باشد.

   چون عبارت رشته ای، آرايه ای از حروف می باشند، لذا به هر يک از حروف رشته، توسط انديس عنصری که شامل آن حرف می باشد، می توان دسترسی پيدا کرد. به عنوان مثال string1[0] شامل 'h' و string1[3] شامل 'l' و string1[5] شامل '\0' می باشد.

   توسط دستور cin نيز می توان به طور مستقيم کلمه وارد شده از صفحه کليد را در آرايه ای رشته ای قرار داد.

char string2[20];

   دستور فوق يک آرايه رشته ای که قابليت دريافت کلمه ای با طول 19 به همراه کاراکتر پوچ را دارا می باشد.

cin >> string2;

   دستور فوق رشته ای از حروف را از صفحه کليد خوانده و در string2 قرار می دهدو کاراکتر پوچ را به انتهای رشته وارد شده توسط کاربر اضافه می کند. به طور پيش فرض دستور cin کاراکتر ها را از صفحه کليد تا رسيدن به اولين فضای خالی در يافت می کند. به عنوان مثال اگر هنگام اجرای دستور cin >> string2; کاربر عبارت "hello there" را وارد کند، تنها کلمه hello در string2 قرار می گيرد. چون عبارت وارد شده شامل کاراکتر فاصله است. برنامه زير نحوه به کار گيری آرايه های رشته ای را نشان می دهد.

#include <iostream.h>
 
void main()
{
  char name[ 20 ];
 
  cout << "Please Enter your name : ";
  cin >> name;
 
  cout << "Welcome, " << name
       << " to this program. \n" ;
 
  cout << "Your separated name is\n";
 
  for ( int i = 0; name[ i ] != '\0'; i++ )
       cout << name[ i ] << ' ';
 
}

   خروجی برنامه به صورت زير می باشد :

 
Please Enter your name : Mohammad
Welcome, Mohammad to this program.
Your separated name is
M o h a m m a d

   در برنامه فوق حلقه for ، حروف نام وارد شده توسط کاربر را جدا جدا در خروجی چاپ می کند. ضمنا شرط حلقه name[ i ] != '\0' می باشد و تا وقتی اين شرط برقرار است که حلقه به انتهای رشته نرسيده باشد.

    در مبحث قوانين حوزه ديديد که اگر بخواهيم يک متغير محلی تابع، مقدار خود را حفظ کرده و برای دفعات بعدی فراخوانی تابع نيز نگه دارد، از کلمه static استفاده کرديم. نوع static را برای آرايه ها نيز می توان به کار برد و از همان قوانين گفته شده در مبحث مذکور پيروی می کند. به برنامه زير و خروجی آن توجه کنيد.

#include <iostream.h>
 
void staticArrayInit( void );
void automaticArrayInit( void );
 
int main()
{
  cout << "First call to each function:\n";
  staticArrayInit();
  automaticArrayInit();
 
  cout << "\n\nSecond call to each function:\n";
 
  staticArrayInit();
  automaticArrayInit();
  cout << endl;
 
return 0; 
 
}
 
// function to demonstrate a static local array
void staticArrayInit( void )
{
  // initializes elements to 0
  // first time function is called
  static int array1[ 3 ]={0};
 
  cout << "\nValues on entering staticArrayInit:\n";
 
  // output contents of array1
  for ( int i = 0; i < 3; i++ )
     cout << "array1[" << i << "] = " 
          << array1[ i ] << " ";
 
  cout << "\nValues on exiting staticArrayInit:\n";
 
  // modify and output contents of array1
  for ( int j = 0; j < 3; j++ )
     cout << "array1[" << j << "] = " 
          << ( array1[ j ] += 5 ) << " ";
 
} // end function staticArrayInit
 
// function to demonstrate an automatic local array
void automaticArrayInit( void )
{
  // initializes elements each time function is called
  int array2[ 3 ] = { 1, 2, 3 };
 
  cout << endl << endl;
  cout << "Values on entering automaticArrayInit:\n";
 
  // output contents of array2
  for ( int i = 0; i < 3; i++ )
     cout << "array2[" << i << "] = " 
          << array2[ i ] << " ";
 
  cout << "\nValues on exiting automaticArrayInit:\n";
 
  // modify and output contents of array2
  for ( int j = 0; j < 3; j++ )
    cout << "array2[" << j << "] = " 
         << ( array2[ j ] += 5 ) << " ";
 
}

خروجی برنامه به صورت زير می باشد :

 
First call to each function:
 
Values on entering staticArrayInit:
array1[0] = 0  array1[1] = 0  array1[2] = 0
Values on exiting staticArrayInit:
array1[0] = 5  array1[1] = 5  array1[2] = 5
 
Values on entering automaticArrayInit:
array2[0] = 1  array2[1] = 2  array2[2] = 3
Values on exiting automaticArrayInit:
array2[0] = 6  array2[1] = 7  array2[2] = 8
 
Second call to each function:
 
Values on entering staticArrayInit:
array1[0] = 5  array1[1] = 5  array1[2] = 5
Values on exiting staticArrayInit:
array1[0] = 10  array1[1] = 10  array1[2] = 10
 
Values on entering automaticArrayInit:
array2[0] = 1  array2[1] = 2  array2[2] = 3
Values on exiting automaticArrayInit:
array2[0] = 6  array2[1] = 7  array2[2] = 8

   در برنامه فوق عناصر آرايه array1 در اولين بار فراخوانی تابع staticArrayInit مقدار صفر را می گيرند ولی در دفعات بعدی فراخوانی اين تابع، آخرين مقدار قبلی خود را حفظ می کنند . اما آرايه array2 در هر بار فراخوانی تابع automaticArrayInit مقدار دهی اوليه می شود و با خروج از تابع مقدار خود را از دست می دهد.


 

 

 

   معرفی کامپيوتروبرنامه نويسی

   ساختارهای کنترلی

   توابع

   آرايه ها

   اشاره گر ها و رشته ها

   کلاسها

   گرانبار کردن عملگر ها

 
 
 
   
 
 
 

حق کپی رایت محفوظ می باشد