درود بر شما دوستان گرامی

امشب تصمیم گرفتم پاسخ نمونه سوالات سری یکم و دوم رو که قبلا نوشتم رو برای شما توی دوتا پست منتشر کنم.


سوال 1 ) خروجی قطعه کد زیر را به صورت دستی محاسبه و روند اجرای آن را با رسم جدول خروجی نشان دهید

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

#include<iostream>

#include<conio.h>

using namespace std;

 

void function();

 

int main()

{

       register int i = 0;

       while (i < 5)

       {

              function();

              i++;

              _getch();

       }

 

}

void function()

{

       static int y = 0;

       int x = 0;

       static int z = 0;

       x = x + 1;

       y = y + 1;

       z = x + y;

       cout << x << y << z;

       cout << endl;

}

112

123

134

145

156

 
حل و توضیحات :
هدف از طرح این سوال تبیین تفاوت کلاسهای حافظه - یا انواع متغیر ها - بوده است.و تنها نکته لازم برای حل این سوال ، دانستن تعریف درستی از متغیر static بوده است.
و این هم جدول Trace برنامه :

i

x

y

z

0

 

1

0

1

0

1

0

2

 

 

2

0

1

1

2

2

3

 

 

3

0

1

2

3

3

4

 

 

4

0

1

3

4

4

5

 

 

 

5

0

1

 

4

5

5

6



سوال  2 ) برنامه ای بنویسید که دو عدد طبیعی را دریافت کند .سپس تابعی طراحی کنید که مقادیر این دو عدد را جابه جا کرده و بازگرداند و نمایش دهد.

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

#include<iostream>

#include<conio.h>

using namespace std;

 

int a, b;

void reverse1()

{

       int t;

       t = a;

       a = b;

       b = t;

}

int main()

{

       cout << "Enter a : ";

       cin >> a;

       cout << "Enter b : ";

       cin >> b;

       reverse1();

       cout << endl << "a :" << a << "\t" << "b :" << b;

       _getch();

}

Enter a : 3

Enter b : 5

 

a :5    b :3



سوال 3 ) تابعی به نام max تعریف کنید که سه پارامتر ورودی (آرگومان) داشته باشد و بزرگترین این اعداد را برگرداند.

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

#include<iostream>

#include<conio.h>

using namespace std;

 

int max(int,int,int);

 

int main()

{

       cout << "Max Value : " << max(10,15,12);

       _getch();

}

int max(int a, int b, int c)

{

       int maxValue = a;

       if (maxValue < b)maxValue = b;

       if (maxValue < c)maxValue = c;

       return maxValue;

}

Max Value : 15



سوال 4 ) تابعی بنویسید که مشخص کند عدد x در آرایه []int a وجود دارد یا خیر .اندیس خانه ای از آرایه که x در آن قرار دارد را برگرداند. برای این کار تابعی به صورت زیر بنویسید. (n طول آرایه , x یک عدد مثبت است)


int search(int x,int a[],int n);



01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

#include<iostream>

#include<conio.h>

using namespace std;

 

int search(int, int[], int);

 

int main()

{

       int arr[] = { 12, 20, 5, 3, 6 };

       int x = 6;    //selected number

       int size = 5; //length of array

 

       if (search(x, arr, size) != -1)

              cout << "Andis of " << x << " is : " << search(x, arr, size);

       else

              cout << "Not existing.";

 

       _getch();

}

int search(int x, int arr[], int size)

{

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

       {

              if (arr[i] == x)

                     return i;

       }

       return -1;

}

Andis of 5 is : 4



لازمه یه توضیحی راجع به کد بالا بدم:
همونطور که میبینید ما آرایه ای با 5 عضو تعریف کردیم و عدد x عدد انتخابی ما برای جستجو در آرایه و size طول آرایه میباشند رو تعریف کردیم.
در قسمت بعدی ما یک شرط رو بررسی کردیم که آیا مقدار بازگشتی تابع با 1- برابر است یا خیر.حالا چرا ما این کارو کردیم رو در توضیح تابع search بیان میکنم.
در تابع search ما سه پارامتر ورودی که اولی عدد انتخابیمون و دومی خود آرایه و سومی طول آرایه هست رو دریافت میکنیم.با حلقه ای به جستجو در آرایه میپردازیم.در صورتی که عدد در آرایه وجود داشته باشد مقدار اندیس آن خانه از آرایه را باز میگرداند اما اگر عددمون در آرایه موجود نباشد تابع مقدار 1- رو بازمیگردونه. و تابع main در شرطی که قرار دادیم این عدد بازگشتی رو چک میکنه و در صورتی که 1- باشه پیغام "Not existing" رو چاپ میکنه.

امیدوارم مفید بوده باشه.
با نظرات خودتون مارو خوشحال کنید;)