X
تبلیغات
رایتل

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

این وب سایت به منظور استفاده دانشجویان دانشگاه شهید بهشتی کرج ایجاد شده

جلسه ششم

آرایه

تعدادی عنصر همنوع که به صورت متوالی درون حافظه قرار می گیرند و هر یک از عناصر آرایه از طریق اندیس آرایه در دسترس است.

شکل کلی تعریف آرایه:

نام آرایه    نوع عنصر  [طول آرایه];

int a[10];

اولین عنصر a[0] و عنصر آخر a[9] می باشد.

 

 

 

 

 

 

 

 

 

 

0                                                                                                                                                                                                                                                                9

 

float grades[10];

char str[20];

double avg[100];

نحوه پیمایش عناصر یک آرایه:

به کمک حلقه for می توان یک آرایه را پیمایش کرد.

int A[10];

for(int i=0;i<10;i++)

          A[i]=2*i;

0

2

4

6

8

 

 

 

 

18

 

کدی برای دریافت نمرات یک فرد و قرار دادن نمرات درون آرایه

float grades[10];

for(int i=0;i<10;i++)

  {

          cout<<"\n enter grade "<<(i+1)<<":";

          cin>>grades[i];

}

اگر کاربر بخواهد تعداد دروس را خودش مشخص کند چه تغییری در کد فوق باید انجام شود؟

int num_of_course;

cout<<"\nenter # of your course <10:";

cin>> num_of_course;

float grades[10];

for(int i=0;i< num_of_course;i++)

  {

          cout<<"\n enter grade "<<(i+1)<<":";

          cin>>grades[i];

}

 

برنامه ای بنویسید که 10 عدد از کاربر دریافت کرده و پس از قرار دادن این اعداد در آرایه، اعداد ورودی توسط کاربر از آخر به اول چاپ می­شوند.

int X[10];

for(int i=0;i<10;i++)

{

cout<<"\n enter number "<<(i+1)<<":";

          cin>>X[i];

}

for(int i=9;i>=0;i--)

cout<<X[i]<<"\t";

 

مثال:برنامه ای بنویسید که 5 عدد توسط کاربر وارد شود وپس از قرار گرفتن در آرایه ، مقدار مینیمم آن اعداد چاپ شود.

int A[5];

for(int i=0;i<5;i++)

{

cout<<"\n enter number "<<(i+1)<<":";

          cin>>A[i];

}

int min=A[0];

for(int i=1;i<5;i++)

if (A[i]<min) min=A[i];

cout<<min;

 

23

19

7

18

2

 

Min=23è19è7è2

به جای 4 خط انتهایی کد فوق می توان از کد زیر هم استفاده کرد:

int min_pos=0; // makane minimum

   for(int i=1;i<5;i++)

                   if (A[i]<A[min_pos]) min_pos=i;

    cout<<"\n minimum="<<A[min_pos];

 

مثال: آرایه ای 10 عضوی ایجاد کنید و کاری کنید که با اعداد تصادفی زیر 100 پر شود و سپس عددی را از کاربر دریافت کرده و برنامه شما مشخص کند چه تعداد از این اعداد از عدد وارد شده توسط کاربر کمتر است؟ مثلا اگر کاربر عدد 59 را وارد کند و 3 عدد از اعداد درون آرایه از 59 کمتر باشند عدد 3 را چاپ کند.

randomize() ;

int a[10],b=0,c=0;

for (int i=0;i<10;i++)

 a[i]=random(100);

 cout<<"\nenter number";

 cin>>b;

 for(int i=0;i<10;i++)

 if(a[i]<b) c++;

 cout<<c;

جستجوی خطی linear search

سوال: آرایه ای به طول 10 شامل اعداد تصادفی کمتر از 30 ایجاد کنید و بعد عددی را از کاربر دریافت کرده و مشخص کنید که آیا این عدد در آرایه وجود دارد یا خیر؟

 

 

 

15

20

19

7

2

15

23

 

int A[10],find=0,i;

randomize();

for(int i=0;i<10;i++)

  {      A[i]=random(30); cout<<A[i]<<"\t";}

int key;

cout<<"\nenter 1 number for search:";

cin>>key;

for(i=0;i<10;i++)

          if (key==A[i])

                   {

cout<<"\n vojood darad dar cell "<<i;

find=1;

break;

}

if (find==0)

cout<<"\n vojooooooood nadarad";

 

مرتب سازی حبابی (bubble sort)

در هر بار پیمایش هر عنصر با عنصر بعدی مقایسه می شود ودر صورت نیاز(اگر عنصر I از عنصر i+1 بزرگتر باشد) جابجا می­شوند. اگر n عدد داشته باشیم حداکثر با          n-1 بار پیمایش لیست مرتب می­شود.

13,45,2,21,6,14

M1:13,2,21,6,14,45

M2:2,13,6,14,21,45

M3:2,6,13,14,21,45

M4:2,6,13,14,21,45

M5:2,6,13,14,21,45

تولید 10 عدد تصادفی زیر 100 و قرار دادن آن اعداد در یک آرایه و نمایش آن اعداد

int A[10];

randomize();

for(int i=0;i<10;i++)

  {     

A[i]=random(100);

cout<<A[i]<<"\t";

}

مرتب کردن محتویات آرایه

for(int i=1;i<=9;i++) // بعد از 9 بار پیمایش حتما مرتب میشوند

for(int j=0;j<9;j++)

          if(A[j]>A[j+1]) // باید جابجا شوند

                   {

                             int temp=A[j];

                             A[j]=A[j+1];

A[j+1]=temp;

}

نمایش آرایه مرتب شده

cout<<"\n\n\n";

for(int i=0;i<10;i++)

          cout<<A[i]<<"\t";

جستجوی دودویی (Binary Search):

جستجوی دودویی (binary search): فقط  در لیست مرتب قابل انجام است.

در هر بار جستجو، کلید مورد جستجو با عنصر وسط لیست مقایسه می­شود. اگر مقدار مورد جستجو برابر با عنصر وسط بود جستجو به پایان میرسد. اگر مقدار مورد جستجو بزرگتر از عنصر وسط بود کار جستجو در نیمه راست لیست انجام می شود و اگر مقدار مورد جستجو کمتر  از عنصر وسط بود کار جستجو در نیمه چپ لیست انجام می شود

اگر کلید مورد جستجو (key)18 باشد.

 

39

34

25

23

18

15

14

11

8

4

mid=4

 

L=0

 

R=9

 

 

 

 

Mid=(L+R)/2

Key>a[mid]èL=mid+1

L=5

 

mid=7

 
 

 

 


Mid=(L+R)/2=7

 

 

R=6

 
Key<a[mid]èR=mid-1

 

 

mid=5

 
Mid=(L+R)/2=5

 

Key=a[mid]è  found

اگر مقدار left  از مقدار right بزرگتر شود به معنای عدم وجود عنصر مورد جستجو در آرایه است.

 

   int key;

   cout<<"\nenter 1 number for search:";

   cin>>key;

   int L=0,R=9,mid;

   int count=0;

   while(L<=R)

   {

   mid=(L+R)/2;

   count++;

   if (key>A[mid])

          L=mid+1;

   else if (key<A[mid])

                   R=mid-1;

   else {cout<<" \n found in "<<mid<<" in "<<count <<" compare"; break;}

   }

   if (L>R)

   cout<<"\n vojoood nadarad";

تمرین :

برنامه ای بنویسید که 10 عدد تصادفی را درون آرایه ای ریخته و از کاربر عددی دریافت کند اگر

عدد ورودی 1 باشد مینیمم

عدد ورودی 2 باشد ماکزیمم

عدد ورودی 3 باشد میانگین

اعداد درون آرایه را چاپ کند.

 

رشته ها در C++ به عنوان یک نوع مستقل محسوب نمی شوند بلکه هر رشته آرایه ای از کاراکترهاست.

char S[20];

درون S می توان 20 کاراکتر قرار داد.

char s[10];

cout<<"\nenter your name:";

cin>>s;

اگر کاربر reza وارد کند شکل آرایه s به صورت زیر خواهد شد.

 

 

 

 

 

\0

a

z

e

r

 بعد از حرف آخر رشته (برای نشان دادن انتهای رشته) کاراکتر \0 در آرایه قرار می گیرد.

 

دانلود فایل مثال ها

(*.cpp)