0% found this document useful (0 votes)
12 views

prog5

Uploaded by

zahrakarayy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views

prog5

Uploaded by

zahrakarayy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

‫موسسه آموزش عالی پاسارگاد شیراز‬

‫آرایه‬
‫تعریف آرایه‬ ‫‪‬‬

‫آرایه ساختمان داده ای است تشکیل شده از تعداد ثابتی از مولفه ها با نوع مشابه که به صورت دنباله خطی سازماندهی شده اند‪ .‬به‬ ‫‪‬‬
‫عبارت ساده تر آرایه تعدادی مولفه هم جنس می باشند که پشت سر هم قرار گرفته و با شماره مولفه از یکدیگر جدا می شوند‪.‬‬

‫نحوه تعریف آرایه به شکل زیر است‬ ‫‪‬‬

‫[‬ ‫;]‬

‫ی دارد‪:‬‬ ‫ه د ع و از‬ ‫‪a‬‬ ‫ا‬ ‫آرایه ا‬


‫;]‪int a[10‬‬

‫ر می اش ‪ (.‬ا و ه ه م ا ا داری )‪:‬‬ ‫ا ه ا از‬ ‫در ز ا ‪ C++‬ش ار گ ار‬


‫‪0‬‬ ‫‪1‬‬ ‫…‬ ‫‪9‬‬

‫‪2‬‬
‫آرایه‬
‫در زبان ‪C++‬به شما اجازه داده می شود که چنانچه مقادیر مولفه های یک آرایه را از ابتدا داشته باشید آنها را در زمان‬ ‫‪‬‬
‫تعریف به عنوان مقدار دهی اولیه استفاده نمایید‪.‬‬

‫آرایه سه عضوی با اعضای ‪2،10‬و‪7‬‬ ‫‪‬‬


‫;}‪int a[] = {7, 2, 10‬‬

‫مقدار صحیح ‪ 10‬را درون خانه اول(اندیس ‪ )0‬آرایه قرار بده‬ ‫‪‬‬
‫;}‪int a[5] = {10‬‬

‫دسترسی به مولفه های آرایه نیز مانند دسترسی به متغیرها می باشد با این تفاوت که شماره اندیس مولفه می بایست درون‬ ‫‪‬‬
‫براکت نوشته شود‪.‬‬

‫;‪a[3]=8‬‬
‫مقدار صحیح ‪ 8‬را درون خانه اندیس ‪ 3‬آرایه قرار بده‬
‫‪3‬‬
‫آرایه‬
.‫ عدد صحیح را از ورودی دریافت و سپس آنها را چاپ نماید‬10 ‫ برنامه ای بنویسید که با استفاده از آرایه‬:‫مثال‬ 

#
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int a[10];
6 for (int i = 0;i < 10;i++)
7 {
8 cin >> a[i];
9 }
10 for (int i = 0;i < 10;i++)
11 {
12 cout << a[i] << endl;
13 }
14 return 0;
15 }

4
‫آرایه‬
‫را چاپ کند‬Min ‫و‬Max ‫ عدد را توسط آرایه خوانده‬10 ‫ برنامه ای بنویسید که‬:‫مثال‬ 
#
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int a[10], max = 0, min = 0;
6 for (int i = 0;i < 10;i++)
7 {
8 cin >> a[i];
9 }
10 for (int i = 0;i < 10;i++)
11 {
12 if (a[i] < min)
13 {
14 min = a[i];
15 }
16 if (a[i] > max)
17 {
18 max = a[i];
19 }
20 }
21 cout << "Max:" << max << " Min:" << min;
22 return 0;
23 }
5
‫آرایه‬
‫ عدد را خوانده و مرتب کند‬5 ‫ برنامه ای بنویسید که توسط آرایه‬:‫مثال‬ 
#
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int a[5];
6 for (int i = 0;i < 5;i++)
7 {
8 cin >> a[i];
9 }
10 for (int i = 0;i < 5;i++)
11 {
12 for (int j = 0;j < i;j++)
13 {
14 if (a[i] >= a[j])
15 {
16 int temp = a[i];
17 a[i] = a[j];
18 a[j] = temp;
19 }
20 }
21 }
22 for (int i = 0;i < 10;i++)
23 {
24 cout << a[i] << endl;
25 }
26 return 0;
27 }
6
‫آرایه‬
‫آرایه و تابع‬ ‫‪‬‬

‫یک آرایه می تواند به عنوان ورودی تابع باشد بگونه ای که ارجاع آن به تابع به صورت ارسال با مرجع می باشد یعنی این که بعد از‬ ‫‪‬‬
‫فراخوانی تابع و طی شدن دستورات آن‪ ،‬تغییرات بر روی آرایه باقی خواهد ماند‪.‬‬

‫‪#‬‬ ‫مثال‪:‬برنامه ای بنویسید که در آن به آرایه ای سه درایه ای‬


‫‪1‬‬ ‫>‪#include <iostream‬‬ ‫با اعداد ‪ 3 2 1‬مقدار ‪ 5‬را به تمام عنصرها اضافه کند‬
‫‪2‬‬ ‫;‪using namespace std‬‬
‫‪3‬‬ ‫)]‪void add5(int a[3‬‬ ‫این کار را با کمک تابع انجام دهید‪.‬‬
‫‪4‬‬ ‫{‬
‫‪5‬‬ ‫‪for (int i = 0;i‬‬ ‫)‪< 3;i++‬‬
‫‪6‬‬ ‫{‬
‫‪7‬‬ ‫;‪a[i] += 5‬‬
‫‪8‬‬ ‫}‬
‫‪9‬‬ ‫}‬
‫‪10‬‬ ‫)(‪int main‬‬
‫‪11‬‬ ‫{‬
‫‪12‬‬ ‫‪int a[] = {1, 2,‬‬ ‫;}‪3‬‬
‫‪13‬‬ ‫;)‪add5(a‬‬
‫‪14‬‬ ‫‪for (int j = 0;j‬‬ ‫)‪< 3;j++‬‬
‫‪15‬‬ ‫{‬
‫‪16‬‬ ‫]‪cout << a[j‬‬ ‫;‪<< endl‬‬
‫‪17‬‬ ‫}‬
‫‪18‬‬ ‫;‪return 0‬‬
‫‪19‬‬ ‫}‬ ‫‪7‬‬
‫آرایه‬
#
1 #include <iostream>
‫آرایه و تابع‬ 
2 using namespace std;
3 void getArray(int a[], int n)
4 {
5 for (int i = 0;i < n;i++) ‫ برنامه ای بنویسید که دو آرایه را از ورودی دریافت کند و آن را‬:‫مثال‬
6 {
7 cin >> a[i]; )‫(این برنامه را با تابع پیاده سازی کنید‬.‫چاپ نماید‬
8 }
9 }
10 void printArray(int a[], int n)
11 {
12 for (int i = 0;i < n;i++)
13 {
14 cout << a[i] << "\n";
15 }
16 }
17
18 int main()
19 { ‫با توجه به برنامه متوجه می شوید که برای دریافت دو آرایه فقط ما‬
20 int x[10], y[10];
21 getArray(x, 10); ‫یک بار تابع را پیاده سازی کردیم و پس از آن در هر زمان از آن‬
22 cout << "Done X input!" << endl;
23 getArray(y, 10); ‫استفاده کردیم‬
24 cout << "Done Y input!" << endl;
25 printArray(x, 10);
26 cout << "Done X print!" << endl;
27 printArray(x, 10);
28 cout << "Done Y print!" << endl;
29 }
8
#
1 #include <iostream>
2 using namespace std;
3 void getArray(int a[], int n)
4
5
6
7
8
{
for (int i = 0;i < n;i++)
{

}
cin >> a[i];
‫آرایه‬
9 }
10
11
void swap(int &a, int &b)
{
‫آرایه و تابع‬ 
12 int temp = a;
13 a = b;
14 b = temp;
15 } ‫ عنصری را از ورودی دریافت‬10 ‫ برنامه ای بنویسید که آرایه‬:‫مثال‬
16 void printArray(int a[], int n)
17 { ‫(این عمل‬.‫کنید و آن را مرتب نماید همچنین آن را چاپ نماید‬
18 for (int i = 0;i < 10;i++)
19
20
{
cout << a[i] << "\t";
)‫را به صورت تابع بنویسید‬
21 }
22 }
23 void sortBArray(int a[], int n)
24 {
25 for (int i = 0;i < n;i++)
26 {
27 for (int j = 0;j < i;j++)
28 {
29 if (a[i] < a[j])
30 {
31 swap(a[i], a[j]);
32 }
33 }
34 }
35 }
36 int main()
37 {
38 int a[10];
39 getArray(a, 10);
40 sortBArray(a, 10);
41 printArray(a, 10);
42 return 0; 9
43 }
‫آرایه‬
‫آرایه چند بعدی‬ ‫‪‬‬

‫نحوه تعریف و انجام عملیات روی آرایه دوبعدی یا چند بعدی بسیار شبیه بردار می باشد‪.‬‬ ‫‪‬‬

‫روش تعریف آرایه های چند بعدی به صورت زیر می باشد‪.‬‬ ‫‪‬‬
‫آر يه جنس آر يه‬ ‫عن صر ب ‪[1‬‬ ‫عن صر ب ‪] [2‬‬ ‫‪] . . . .[n‬‬ ‫عن صر ب‬ ‫;]‬

‫مثال ‪ :‬آرایه ای با دو سطر‪ ،‬سه ستون و چهار عمق از نوع عدد صحیح‬ ‫‪‬‬

‫;]‪int a[2][3][4‬‬

‫چنانچه بخواهیم همراه با تعریف مقدار دهی اولیه را نیز انجام دهیم مانند مثال زیر عمل می نماییم‪ .‬به نحوه تفکیک سطرها و ستونها در‬ ‫‪‬‬
‫مثال زیر دقت نمایید‬

‫;}}‪int a[2][2][2] = {{2, 2}, {2, 2‬‬

‫‪10‬‬
‫آرایه‬
‫آرایه چند بعدی‬ ‫‪‬‬

‫نحوه تعریف و انجام عملیات روی آرایه دوبعدی یا چند بعدی بسیار شبیه بردار می باشد‪.‬‬ ‫‪‬‬

‫روش تعریف آرایه های چند بعدی به صورت زیر می باشد‪.‬‬ ‫‪‬‬
‫آر يه جنس آر يه‬ ‫عن صر ب ‪[1‬‬ ‫عن صر ب ‪] [2‬‬ ‫‪] . . . .[n‬‬ ‫عن صر ب‬ ‫;]‬

‫مثال ‪ :‬آرایه ای با دو سطر‪ ،‬سه ستون و چهار عمق از نوع عدد صحیح‬ ‫‪‬‬

‫;]‪int a[2][3][4‬‬

‫چنانچه بخواهیم همراه با تعریف مقدار دهی اولیه را نیز انجام دهیم مانند مثال زیر عمل می نماییم‪ .‬به نحوه تفکیک سطرها و ستونها در‬ ‫‪‬‬
‫مثال زیر دقت نمایید‬

‫;}}‪int a[2][2][2] = {{2, 2}, {2, 2‬‬

‫‪11‬‬
‫آرایه‬
‫ را وارد نموده و سپس با شکلی مناسب کلیه اعضا چاپ شود‬3‫در‬2 ‫ برنامه ای بنویسید که ابتداکاربر اعضای آرایه ای‬:‫مثال‬ 
#
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int a[2][3];
6 for (int i = 0;i < 2;i++)
7 {
8 for (int j = 0;j < 3;j++)
9 {
10 cin >> a[i][j];
11 }
12 }
13 for (int i = 0;i < 2;i++)
14 {
15 for (int j = 0;j < 3;j++)
16 {
17 cout << a[i][j] << "\t";
18 }
19 cout << endl;
20 }
21 return 0;
22 }

12
#
1 #include <iostream>
2 using namespace std;
3 void getArray(int a[3][3], int n, int m)
4 {
5 int i, j;
6 for (i= 0;i < n;i++)
7 {
8
9
10
11
12
for(j=0;j < m;j++)
{
cout << "[" << i << "]";
cout << "[" << j << "]=";
cin >> a[i][j];
‫آرایه‬
13 }
14 }
15 } ‫ برنامه ای بنویسید که دو آرایه سه در سه را از ورودی بگیرد و پس‬:‫مثال‬
16 void printArray(const int a[3][3], int n, int m)
17 { .‫آن این دو آرایه را با هم جمع کند و نمایش دهد‬
18 int i, j;
19 for (i= 0;i < n;i++)
20 {
21 for(j=0;j < m;j++)
22 {
23 cout << a[i][j] << "\t";
24 }
25 cout << endl;
26 } ‫استفاده‬const ‫ در برنامه مشاهده کردید که برای ورودی های تابع از‬:‫نکته‬
27 }
28 void sum3x3(const int a[3][3], const int b[3][3], int c[3][3]) ‫ معموال وقتی که می خواهیم آرایه در طول تابع تغییری‬،‫شده است‬
29 {
30 int i, j; .‫اعمال کرد‬const ‫نداشته باشد می توان ورودی را به صورت‬
31 for (i= 0;i < 3;i++)
32 {
33 for(j=0;j < 3;j++)
34 {
35 c[i][j] = 0;
36 c[i][j] = a[i][j] + b[i][j];
37 }
38 }
39 }
40 int main()
41 {
42 int a[3][3], b[3][3], c[3][3];
43 getArray(a, 3, 3);
44 getArray(b, 3, 3);
45 sum3x3(a, b, c);
46 printArray(c, 3, 3);
47 return 0;
48 }
13
‫آرایه‬
‫آرایه و رشته‬ ‫‪‬‬

‫تعریف رشته‪ :‬به مجموعه ای از کاراکترها که پشت سر هم قرار گیرند رشته گویند‪.‬‬ ‫‪‬‬

‫در زبان ‪C++‬رشته بصورت آرایه ای در نظر گرفته می شود که کاراکترهای آن پشت سر هم درون مولفه های آرایه قرار می گیرند و انتهای رشته به‬ ‫‪‬‬
‫وسیله کاراکتر ‪Null‬مشخص می شود‬

‫فضای الزم برای ذخیره رشته همیشه یک کاراکتر بیشتر از طول خود رشته می باشد‪ .‬به عنوان مثال رشته ‪ali‬نیاز به چهار بایت حافظه دارد که سه‬ ‫‪‬‬
‫مولفه برای ‪ali‬ویک مولفه برای کاراکتر ‪Null‬که پایان رشته را نمایش می دهد‪.‬‬

‫به عنوان مثال ]‪char a[10‬رشته ای به طول ‪ 9‬کاراکتر را می تواند در خود جای دهد که در خانه آخر آن’‪ ’\0‬ذخیره شده است‪.‬‬ ‫‪‬‬

‫در زبان ‪c++‬به برنامه نویس اجازه مقدار دهی اولیه برای رشته نیز داده می شود‪ .‬به مثال زیر توجه کنید‬ ‫‪‬‬

‫;”‪char a[10] = ”ali‬‬


‫;”‪char b[]= ”reza‬‬
‫توجه‪ :‬کلمه ‪ali‬به صورت زیر در رشته ‪a‬ذخیره می شود‪.‬‬ ‫‪‬‬
‫‪a‬‬ ‫‪l‬‬ ‫‪i‬‬ ‫‪null‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫‪14‬‬
‫آرایه‬
‫خواندن وچاپ کردن رشته‬ ‫‪‬‬

‫خواندن رشته ای که با آرایه تعریف شده باشد به دو روش امکان پذیر است‬ ‫‪‬‬

‫;”‪char a[10] = ”ali‬‬ ‫الف‪ -‬مقدار دهی اولیه‬ ‫‪‬‬


‫;”‪char b[]= ”reza‬‬

‫ب‪ -‬استفاده از دستور ‪cin‬‬ ‫‪‬‬

‫همانطور که می دانید رشته نیز آرایه ای از کاراکترها می باشد که انتهای آن با ‪null‬مشخص می شود پس کامپایلر به راحتی از شما‬ ‫‪‬‬
‫کاراکترهای رشته را قبول می کند و با فشردن کلید ‪enter‬کاراکتر ‪null‬را به آخر رشته می افزاید‪.‬‬

‫به عنوان مثال با نوشتن دستور ;‪cin >> a‬کاربر می تواند همانند اعداد صحیح رشته را در خط فرمان تایپ نماید‪.‬‬ ‫‪‬‬

‫چاپ کردن رشته (رشته ای که به شکل آرایه تعریف شده باشد) در زبان ‪ C++‬به کمک دستور ‪ cout‬انجام می شود‪.‬‬ ‫‪‬‬

‫‪15‬‬
‫آرایه‬
‫خواندن وچاپ کردن رشته‬ ‫‪‬‬

‫;]‪char a[10‬‬
‫;]‪int b[10‬‬ ‫نکته‪:‬تنها خواندن و چاپ کردن چند خانه از آرایه ی کاراکتری را می توان به کمک‬
‫;‪cin>>a‬‬ ‫√‬ ‫دستور ‪cin‬و ‪cout‬انجام داد و برای آرایه از نوع دیگر (مثال ‪ )int‬این امکان وجود‬
‫ندارد و باید تک تک خانه ها را خواند و یا چاپ کرد‪.‬‬
‫;]‪cin>>a[2‬‬ ‫√‬

‫;‪cin>>b‬‬ ‫×‬

‫;]‪cin>>b[2‬‬ ‫√‬

‫;‪cout<<a‬‬ ‫√‬

‫√ ;]‪cout<<a[2‬‬

‫;‪cout<<b‬‬ ‫×‬

‫√ ;]‪cout<<b[2‬‬
‫‪16‬‬
‫آرایه‬
‫مثال‪ :‬برنامه ای بنویسید که با استفاده ازآرایه رشته ای را از ورودی دریافت و آن را چاپ نماید‪.‬‬ ‫‪‬‬

‫‪#‬‬
‫‪1‬‬ ‫>‪#include <iostream‬‬ ‫‪Ali Hamed‬‬
‫‪2‬‬ ‫;‪using namespace std‬‬ ‫‪Ali‬‬
‫‪3‬‬ ‫)(‪int main‬‬
‫‪4‬‬ ‫{‬
‫‪5‬‬ ‫;]‪char a[10‬‬
‫‪6‬‬ ‫;‪cin >> a‬‬
‫‪7‬‬ ‫;‪cout << a‬‬
‫‪8‬‬ ‫;‪return 0‬‬
‫‪9‬‬ ‫}‬

‫نکته‪ :‬در برنامه باال اگر دقت کنید مشاهده می کنید که کل عبارت ورودی در رشته قرار نگرفته است و فقط تا‬
‫اولین فاصله در رشته قرار گرفته است که این یکی از موضوعات مهم در مورد رشته است اما برای این که‬
‫کل عبارت را دریافت کند باید از دستور ‪cin.getline‬استفاده نمود‬
‫‪17‬‬
‫آرایه‬
‫مثال‪ :‬برنامه ای بنویسید که با استفاده ازآرایه رشته ای را از ورودی دریافت و آن را چاپ نماید‪.‬‬ ‫‪‬‬

‫‪#‬‬
‫‪1‬‬ ‫>‪#include <iostream‬‬ ‫‪Ali Hamed‬‬
‫‪2‬‬ ‫;‪using namespace std‬‬ ‫‪Ali Hamed‬‬
‫‪3‬‬ ‫)(‪int main‬‬
‫‪4‬‬ ‫{‬
‫‪5‬‬ ‫;]‪char a[255‬‬
‫‪6‬‬ ‫;)‪cin.getline(a, 255‬‬
‫‪7‬‬ ‫;‪cout << a‬‬
‫‪8‬‬ ‫;‪return 0‬‬
‫‪9‬‬ ‫}‬

‫نکته‪ :‬در دستور ‪cin.getline‬دو ورودی داریم که اولین آن رشته ذخیره و ورودی دوم تعداد کاراکتر های‬
‫ذخیره سازی است‬
‫‪18‬‬

You might also like