You are on page 1of 11

Scanned by CamScanner

‫ﺑﺴﻤﻪ ﺗﻌﺎﻟﻲ‬

‫ﻣﺒﺎﻧﻲ ﺑﺮﻧﺎﻣﻪﺳﺎزي )‪40153 (C‬‬


‫)‪Fundamental of Programming (C‬‬ ‫داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ‬
‫داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ‬

‫    ‬ ‫ ‪:‬‬ ‫‪  :‬‬ ‫‬ ‫ ‬

‫     ‪.‬‬

‫ ‪.3 31 4 '! ( ) *+ ,-. /0 '!  ( )  1 2       ! "#$ %&  :‬‬

‫ ‪=>? "#$ 9  1 @ A  .3#+  6 ! '!  +78 2 9  ! :;  <$$  ! "#$ %&  ( ) :‬‬
‫! ‪( ) *+ ,-. /0 2 "    C +78 *+ A D  : EFG 2‬‬ ‫‪)2 1 +78 B ! '! ( ) *+‬‬
‫!' ‪.3 31 4 7‬‬

‫  ‪B+   9  B+‬‬ ‫ !‪6 2   L 2 $M: 3 N +OG PQF (4 J+G$ 9 ) H 9  :‬‬
‫‪. ( %&' '>+! >S  C9  B+  6 %!? ! R+ 1"! +OG .3 "#$ +OG‬‬

‫ )‪.3T ! -8' : 2 "  4 2 7$ ! 4 13: :‬‬

‫ﺳﻮاﻻت ﺗﺴﺘﻲ )‪ 50‬ﻧﻤﺮه(‬


‫‪ .1‬اﮔﺮ ﻣﻘﺪار اوﻟﻴﻪ ‪ x‬ﺑﺮاﺑﺮ ‪ 3‬ﺑﺎﺷﺪ‪ ،‬ﻛﺪاﻣﻴﻚ از ﮔﺰﻳﻨﻪﻫﺎي زﻳﺮ ﺧﺮوﺟﻲ ‪ 7‬را ﺗﻮﻟﻴﺪ ﺧﻮاﻫﺪ ﻛﺮد؟‬

‫اﻟﻒ‪x ++ 4 .‬‬
‫ب‪x += 4 .‬‬
‫ج‪x =+ 4 .‬‬
‫د‪x + 4 = x .‬‬

‫‪ .2‬ﺧﺮوﺟﻲ ﻛﺪ ﻣﻘﺎﺑﻞ ﻛﺪام ﮔﺰﻳﻨﻪ ﺧﻮاﻫﺪ ﺑﻮد؟‬


‫;‪int a, b‬‬
‫; ‪a = 1 & 126 ? 1 : 2‬‬ ‫اﻟﻒ‪11 .‬‬
‫; ‪b = 1 && 126 ? 1 : 2‬‬ ‫‪12‬‬ ‫ب‪.‬‬
‫;)‪printf ("%d", a‬‬
‫‪22‬‬ ‫ج‪.‬‬
‫;)‪printf ("%d", b‬‬
‫‪21‬‬ ‫د‪.‬‬

‫‪1‬‬
‫‪ .3‬اﮔﺮ ﻫﻤﻪي ﻣﺘﻐﻴﺮﻫﺎي ﻣﻮﺟﻮد در ﻛﺪ زﻳﺮ ﻗﺒﻞ از اﺟﺮاي ﻛﺪ ﺑﺮاﺑﺮ ‪ 5‬ﺑﺎﺷﻨﺪ‪ ،‬ﺧﺮوﺟﻲ ﭘﺲ از اﺟﺮاي ﻫﺮ ﻛﺪام از دﺳﺘﻮرات ‪ a‬و ‪b‬‬

‫;‪a) p *= x++‬‬ ‫)ﺑﻪ ﺻﻮرت ﺟﺪاﮔﺎﻧﻪ( ﭼﻪ ﺧﻮاﻫﺪ ﺑﻮد؟‬

‫;‪b) q /= ++x‬‬

‫‪p = 25, x = 6‬‬ ‫‪p = 25, x = 6‬‬ ‫‪p = 25, x = 5‬‬ ‫‪p = 25, x = 5‬‬
‫د‪.‬‬ ‫ج‪.‬‬ ‫ب‪.‬‬ ‫اﻟﻒ‪.‬‬
‫‪q = 0,‬‬ ‫‪x = 6‬‬ ‫‪q = 1,‬‬ ‫‪x = 6‬‬ ‫‪q = 1,‬‬ ‫‪x = 6‬‬ ‫‪q = 0,‬‬ ‫‪x = 6‬‬

‫‪ .4‬ﺧﺮوﺟﻲ ﺑﺮﻧﺎﻣﻪ زﻳﺮ ﻛﺪام ﮔﺰﻳﻨﻪ اﺳﺖ؟‬


‫;‪int g=0,f=0‬‬
‫;)‪void f1(void‬‬ ‫‪g = 6‬‬
‫;)‪void f2(void‬‬ ‫اﻟﻒ‪.‬‬
‫{)(‪int main‬‬ ‫‪f = 12‬‬
‫;)(‪f2‬‬
‫;)‪printf("g = %d \n f = %d", g, f‬‬
‫;‪return 0‬‬ ‫‪g = 6‬‬
‫ب‪.‬‬
‫}‬ ‫‪f = 6‬‬
‫{)‪void f1(void‬‬
‫;‪int g = 1‬‬
‫;‪g++;f++‬‬ ‫‪g = 12‬‬
‫ج‪.‬‬
‫;)(‪f2‬‬ ‫‪f = 12‬‬
‫}‬
‫{)‪void f2(void‬‬
‫) ‪if ( g > 5‬‬ ‫‪g = 12‬‬
‫د‪.‬‬
‫;‪return‬‬ ‫‪f = 6‬‬
‫;‪g++‬‬
‫;‪f++‬‬
‫;)(‪f1‬‬
‫}‬

‫‪ .5‬ﺧﺮوﺟﻲ ﺑﺮﻧﺎﻣﻪ ﻣﻘﺎﺑﻞ ﻛﺪام ﮔﺰﻳﻨﻪ اﺳﺖ؟‬


‫)(‪int main‬‬
‫{‬ ‫اﻟﻒ‪5 .‬‬
‫;‪int i, j‬‬ ‫‪01234‬‬ ‫ب‪.‬‬
‫;‪i = 5‬‬
‫)‪for (j = i == 5 ; j <= 5 ; j++‬‬ ‫‪012345‬‬ ‫ج‪.‬‬
‫;)‪printf("%d", j‬‬
‫‪12345‬‬ ‫د‪.‬‬
‫}‬

‫‪2‬‬
‫ ﭼﻨﺪﺑﺎر در ﺧﺮوﺟﻲ ﭼﺎپ ﺧﻮاﻫﺪ ﺷﺪ؟‬x ‫ ﭘﻴﻐﺎم‬.6
int main()
{ 10 .‫اﻟﻒ‬
int x;
for(x = -1; x <= 10; x++) 11 .‫ب‬
{ ‫ ﺻﻔﺮ‬.‫ج‬
if(x < 5)
continue; 5 .‫د‬
else
break;
printf("x");
}
return 0;
}

‫ ﺑﺎ اﺟﺮاي ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ زﻳﺮ ﻛﺪام ﮔﺰﻳﻨﻪ در ﺧﺮوﺟﻲ ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد؟‬.7

int main()
{ 1 2 3 4 End .‫اﻟﻒ‬
int i;
i=1; 1234 .‫ب‬
while (i <= 10)
{ 1 2 3 4 6 7 8 9 10 End .‫ج‬
if (i == 5)
continue; 1 2 3 4 6 7 8 9 10 .‫د‬
printf("%d ", i);
i++;
}
printf("End");
return 0;
}

‫ ﺧﺮوﺟﻲ ﺑﺮﻧﺎﻣﻪ ﻣﻘﺎﺑﻞ ﻛﺪام ﮔﺰﻳﻨﻪ اﺳﺖ؟‬.8


int main()
{ 21 31 41 51 60 .‫اﻟﻒ‬
int i = 1, j = 1; 21 31 41 50 .‫ب‬
for(; j; printf("%d%d\t", i, j))
11 21 31 41 51 60 .‫ج‬
j = i++ <= 4;
11 21 31 41 50 .‫د‬
return 0;
}

3
‫ ﺧﺮوﺟﻲ ﺑﺮﻧﺎﻣﻪ ﻣﻘﺎﺑﻞ ﻛﺪام ﮔﺰﻳﻨﻪ ﺧﻮاﻫﺪ ﺑﻮد؟‬.9
void f1(int c)
{ 20 20 20 .‫اﻟﻒ‬
c = c * 2;
} 10 40 40 .‫ب‬
int main() 10 20 20 .‫ج‬
{
int a = 10; 10 10 10 .‫د‬
f1(a);
printf ("%d ", a);
if ( (a = 20) || (a == 30) || (a = 40))
printf ("%d ", a);
printf ("%d ", a);
return 0;
}

‫ ﺧﺮوﺟﻲ ﻛﺪام ﮔﺰﻳﻨﻪ ﺧﻮاﻫﺪ ﺑﻮد؟‬،‫ ﺑﻪ ﺑﺮﻧﺎﻣﻪ داده ﺷﻮد‬2 ‫ اﮔﺮ ورودي‬.10
int main()
{ 2 .‫اﻟﻒ‬
int i;
scanf ("%d", &i); 22 .‫ب‬
switch(i) 222 .‫ج‬
{
case 1: printf("%d ", i); 2222 .‫د‬
case 2: printf("%d ", i);
case 3: printf("%d ", i); break;
default: printf("%d ", i); break;
}
return 0;
}

4
‫ﺳﻮاﻻت ﺗﺸﺮﻳﺤﻲ )‪ 50‬ﻧﻤﺮه(‬

‫ﺳﻮال ‪ 20) .1‬ﻧﻤﺮه(‬

‫ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﻋﺪد ‪ π‬ﻣﻲﺗﻮان از راﺑﻄﻪ زﻳﺮ اﺳﺘﻔﺎده ﻛﺮد‪.‬‬


‫‪π‬‬ ‫‪2 2 4 4 6 6‬‬
‫… ‪= + + + + +‬‬
‫‪2‬‬ ‫‪1 3 3 5 5 7‬‬

‫ﺗﺎﺑﻌﻲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺗﻌﺪاد ﺟﻤﻼت ﺳﺮي ﻓﻮق را ﺑﻪ ﻋﻨﻮان ﻳﻚ ﻋﺪد ﺻﺤﻴﺢ از ورودي درﻳﺎﻓﺖ ﻛﺮده و ﻣﻘﺪار ‪ π‬را ﺑﺎ اﺳﺘﻔﺎده از راﺑﻄﻪ‬
‫ﻓﻮق ﺣﺴﺎب ﻛﺮده و ﺑﻪ ﺗﺎﺑﻊ ﻓﺮاﺧﻮاﻧﻨﺪه ﺑﺮﮔﺮداﻧﺪ‪ .‬ﭘﺎراﻣﺘﺮ ورودي )ﺗﻌﺪاد ﺟﻤﻼت ﺳﺮي( ﻳﻚ ﻋﺪد ﺻﺤﻴﺢ ﺑﻴﻦ ‪ 5‬ﺗﺎ ‪ 50‬ﻣﻲﺑﺎﺷﺪ و اﮔﺮ‬
‫اﻳﻦ ﭘﺎراﻣﺘﺮ در ﻣﺤﺪوده ﺧﻮاﺳﺘﻪ ﺷﺪه ﻧﺒﻮد‪ ،‬ﻣﻘﺪار ‪ -1‬را ﺑﻪ ﻋﻨﻮان ﺧﺮوﺟﻲ ﺗﺎﺑﻊ در ﻧﻈﺮ ﺑﮕﻴﺮد‪.‬‬

‫ﺟﻮاب‪.‬‬
‫‪ 0‬ﻣﺮﺣﻠﻪ‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪….‬‬
‫‪ 2‬ﺻﻮرت ﻛﺴﺮ = ‪a‬‬ ‫‪2‬‬ ‫‪4‬‬ ‫‪4‬‬ ‫‪6‬‬ ‫‪6‬‬ ‫‪8‬‬ ‫‪8‬‬ ‫…‬
‫‪ 1‬ﻣﺨﺮج ﻛﺴﺮ = ‪b‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪5‬‬ ‫‪5‬‬ ‫‪7‬‬ ‫‪7‬‬ ‫‪9‬‬ ‫…‬

‫ﻫﻤﺎﻧﻄﻮر ﻛﻪ در ﺷﻜﻞ ﺑﺎﻻ ﻣﺸﺨﺺ ﺷﺪه اﺳﺖ ﺻﻮرت در ﻣﺮاﺣﻞ زوج ﺑﺎ ﻋﺪد ‪ 2‬ﺟﻤﻊ ﺷﺪه اﺳﺖ و ﻣﺨﺮج در ﻣﺮاﺣﻞ ﻓﺮد ﺑﺎ ﻋﺪد ‪ 2‬ﺟﻤﻊ ﺷﺪه اﺳﺖ‪.‬‬
‫ﻟﺬا ﺧﻮاﻫﻴﻢ داﺷﺖ‪.‬‬

‫)(‪double f‬‬ ‫ﻧﻌﺮﻳﻒ درﺳﺖ ﺗﺎﺑﻊ ‪ 1‬ﻧﻤﺮه ﻣﺜﻼ ﺧﺮوﺟﻲ را ﺻﺤﻴﺢ ﻧﮕﻴﺮد ‪//‬‬
‫{‬
‫;‪int n‬‬
‫;)‪scanf("%d", &n‬‬ ‫‪ 1‬ﻧﻤﺮه ﺑﺮاي درﻳﺎﻓﺖ درﺳﺖ ﻋﺪد ﺻﺤﻴﺢ از ورودي ‪//‬‬
‫;‪if (n < 5 || n > 50) return -1‬‬ ‫‪ 2‬ﻧﻤﺮه ‪//‬‬
‫;‪float a = 0, b= 1‬‬
‫;‪double sum = 0‬‬ ‫ﺑﺎﻳﺪ اﻋﺸﺎري ﺑﺎﺷﺪ ‪ 1‬ﻧﻤﺮه ‪//‬‬
‫;‪int c‬‬
‫)‪for (c = 0; c < n; c++‬‬ ‫ﻧﻮﺷﺘﻦ ﻳﻚ ﺣﻠﻘﻪ ﺗﻜﺮار ﻣﻨﺎﺳﺐ و درﺳﺖ ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ‪ 5‬ﻧﻤﺮه ‪//‬‬
‫{‬
‫;‪if (c%2) a += 2‬‬ ‫‪ 3‬ﻧﻤﺮه ﺑﺮاي ﺗﻮﻟﻴﺪ ﺻﻮرت ﻛﺴﺮ ‪//‬‬
‫;‪else b+= 2‬‬ ‫‪ 3‬ﻧﻤﺮه ﺑﺮاي ﺗﻮﻟﻴﺪ ﻣﺨﺮج ﻛﺴﺮ ‪//‬‬
‫ﺗﻘﺴﻴﻢ ﺑﺎﻳﺪ ﺑﻪ ﺻﻮرت اﻋﺸﺎري ﺑﺎﺷﺪ ﻳﻌﻨﻲ اﮔﺮ ﺻﻮرت و ﻣﺨﺮج ﺻﺤﻴﺢ آﻧﮕﺎه ﺑﻨﻮﻳﺴﻴﻢ*‪/‬‬
‫;)‪sum += (1.0 * a / b‬‬
‫رﻋﺎﻳﺖ اﻳﻦ ﻧﻜﺘﻪ ‪ 2‬ﻧﻤﺮه ﺧﻮاﻫﺪ داﺷﺖ‬
‫‪*/‬‬
‫;)‪sum += (a/b‬‬
‫}‬
‫;‪sum *= 2‬‬ ‫‪ 2‬ﻧﻤﺮه ﺑﺮاي دﻗﺖ داﻧﺸﺠﻮ ﺑﻪ ﺳﻮال و ﺿﺮب در ﻋﺪد ‪//‬‬
‫;‪return sum‬‬
‫}‬

‫‪5‬‬
‫ﺳﻮال ‪ 15) .2‬ﻧﻤﺮه(‬

‫ﺗﺎﺑﻌﻲ ﺑﺎزﮔﺸﺘﻲ ﺑﻪ ﻧﺎم ‪ rec_pow‬ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﻋﺪد ﺻﺤﻴﺢ ﻣﺜﺒﺖ ﺑﻪ ﻧﺎم ‪ y‬و ﻳﻚ ﻋﺪد ‪ double‬ﺑﻪ ﻧﺎم ‪ x‬را ﮔﺮﻓﺘﻪ و ﻣﻘﺪار ‪ x‬ﺑﻪ‬
‫ﺗﻮان ‪ y‬را ﺣﺴﺎب ﻛﻨﺪ‪.‬‬
‫ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ‪ header‬ﺗﺎﺑﻊ ﺑﻪ ﺻﻮرت )‪ double rec_pow (double x, int y‬ﺑﻮده و ﺑﻪ ازاء وروديﻫﺎي ‪ x=2.5‬و ‪y=3‬‬
‫ﻣﻘﺪار ‪ 15.625‬ﺑﺮﮔﺸﺖ داده ﻣﻲﺷﻮد‪.‬‬

‫ﺟﻮاب‪.‬‬

‫)‪double rec_pow(double x, int y‬‬


‫{‬

‫ﻗﺴﻤﺖ ﭘﺎﻳﻪ اﻟﮕﻮرﻳﺘﻢ ﻛﻪ ﺑﻪ ﻳﻜﻲ از دو ﺻﻮرت زﻳﺮ ﻣﻲ ﺷﻮد )‪ 3‬ﻧﻤﺮه( ‪//‬‬

‫)‪if (y == 0‬‬
‫;‪return 1‬‬

‫ﻳﺎ ‪//‬‬

‫)‪if (y == 1‬‬
‫;‪return x‬‬

‫ﻗﺴﻤﺘﻲ ﻛﻪ داده ﻫﺎي ﻧﺎﻣﺮﺑﻮط را ورودي ﻣﻨﺎﺳﺐ ﺑﺮﮔﺮداﻧﺪ )‪ 1‬ﻧﻤﺮه( )ﻣﻤﻜﻦ اﺳﺖ ﺗﺎﺑﻊ ﺑﻪ ﮔﻮﻧﻪ اي ﻃﺮاﺣﻲ ﺷﺪه ﺑﺎﺷﺪ ﻛﻪ ﺑﺮاي ﺗﻮان ﻫﺎي ﻣﻨﻔﻲ ﺟﻮاب درﺳﺖ ‪//‬‬
‫ﺑﺮﮔﺮداﻧﺪ وﻟﻲ ﺟﺰو ﻟﺰوﻣﺎت ﻣﺴﺌﻠﻪ ﻧﻴﺴﺖ(‬

‫)‪if (y < 0‬‬


‫;‪return -1‬‬

‫ﻗﺴﻤﺘﻲ ﻛﻪ ﻓﺮاﺧﻮاﻧﻲ ﺑﺎزﮔﺸﺘﻲ اﻧﺠﺎم داده ﻣﻲ ﺷﻮد و داده ﻣﻨﺎﺳﺐ ﺑﺎزﮔﺸﺖ داده ﻣﻲ ﺷﻮد )‪ 9‬ﻧﻤﺮه( ‪//‬‬

‫;)‪return x* rec_pow(x,y-1‬‬
‫}‬

‫ﺑﺮاي اﻳﻨﻜﻪ ﻛﺎﻣﻼً ﺗﺎﺑﻊ و ﻧﺤﻮ دﺳﺘﻮرات درﺳﺖ ﺑﺎﺷﻨﺪ‪ 2) .‬ﻧﻤﺮه( ‪//‬‬

‫‪6‬‬
‫ﺳﻮال ‪ 15) .3‬ﻧﻤﺮه(‬

‫ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﺨﺘﺼﺎت ﺳﻪ ﻧﻘﻄﻪ را از ورودي ﺑﮕﻴﺮد و ﺑﮕﻮﻳﺪ ﻛﻪ آن ﺳﻪ ﻧﻘﻄﻪ ﻫﻢﺧﻂ ﻫﺴﺘﻨﺪ ﻳﺎ ﻧﻪ‪ .‬اﮔﺮ ﻫﻢ ﺧﻂ ﺑﻮدﻧﺪ‪،‬‬
‫ﺧﺮوﺟﻲ ﺑﺮﻧﺎﻣﻪ‪ ،‬ﻳﻚ ﻣﻌﺎدﻟﻪ ﺧﻂ ﺑﻪ ﺻﻮرت ‪ ax + by + c = 0‬ﺧﻮاﻫﺪ ﺑﻮد و اﮔﺮ ﻫﻢﺧﻂ ﻧﺒﻮدﻧﺪ‪ ،‬ﺧﺮوﺟﻲ ‪ NO‬ﺧﻮاﻫﺪ ﺑﻮد‪ .‬ورودي ﺑﻪ‬
‫ﺻﻮرت ﺷﺶ ﻋﺪد اﻋﺸﺎري ﺧﻮاﻫﺪ ﺑﻮد ﻛﻪ ﻣﺨﺘﺼﺎت ﺳﻪ ﻧﻘﻄﻪ ‪ B ،A‬و ‪ C‬را ﺑﻴﺎن ﻣﻲﻛﻨﺪ‪.‬‬

‫راﻫﻨﻤﺎﻳﻲ‪ :‬ﺳﻪ ﻧﻘﻄﻪ )‪ B(x2, y2) ،A(x1, y1‬و )‪ C(x3, y3‬را ﻫﻢﺧﻂ ﮔﻮﻳﻨﺪ ﻫﺮﮔﺎه ﺷﻴﺐ دو ﺧﻂ ‪ AB‬و ‪ BC‬ﺑﺎ ﻫﻢ ﺑﺮاﺑﺮ ﺑﺎﺷﻨﺪ‪ .‬ﺷﻴﺐ ﺧﻂ‬
‫‪௬ ି௬‬‬
‫‪ AB‬از ﻓﺮﻣﻮل ‪ ݉ = ௫మ ି௫భ‬ﻗﺎﺑﻞ ﻣﺤﺎﺳﺒﻪ اﺳﺖ‪ .‬ﻫﻤﭽﻨﻴﻦ‪ ،‬ﻣﻌﺎدﻟﻪ ﺧﻂ ‪ AB‬ﺑﻪ ﺻﻮرت ‪ଵ ሻ‬ݔ ‪ −‬ݔ‪ଵ = ݉ሺ‬ݕ ‪ −‬ݕ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد‪.‬‬
‫‪మ‬‬ ‫‪భ‬‬

‫ﺟﻮاب‪.‬‬

‫)(‪int main‬‬
‫{‬

‫;‪float x1,x2,x3,y1,y2,y3‬‬ ‫ﺗﻌﺮﻳﻒ ‪ 6‬ﻣﺘﻐﻴﺮ اﻋﺸﺎري )ﻧﺒﺎﻳﺪ از آراﻳﻪﻫﺎ اﺳﺘﻔﺎده ﺷﻮد( )‪ 2‬ﻧﻤﺮه( ‪//‬‬
‫;‪float m1,m2‬‬

‫ﺧﻮاﻧﺪن اﻋﺪاد از ورودي )‪ 3‬ﻧﻤﺮه( ‪//‬‬

‫;)"‪printf("Specify point A by entering its coordinates (x and y):\n‬‬


‫;)‪scanf("%f %f", &x1, &y1‬‬
‫;)"‪printf("Specify point B by entering its coordinates (x and y):\n‬‬
‫;)‪scanf("%f %f", &x2, &y2‬‬
‫;)"‪printf("Specify point C by entering its coordinates (x and y):\n‬‬
‫;)‪scanf("%f %f", &x3, &y3‬‬

‫ﻣﺤﺎﺳﺒﻪ ﺷﻴﺐ ﺧﻂﻫﺎ )‪ 3‬ﻧﻤﺮه( ‪//‬‬

‫;)‪m1 = (y2-y1)/(x2-x1‬‬
‫;)‪m2 = (y3-y2)/(x3-x2‬‬

‫)‪if (m1 != m2‬‬ ‫ﻣﻘﺎﻳﺴﻪ ﺷﻴﺐ ﺧﻂﻫﺎ )‪ 2‬ﻧﻤﺮه( ‪//‬‬


‫;)"‪printf("NO‬‬
‫‪else‬‬
‫;)‪printf("y-%f=%f(x-%f)", y1, m1, x1‬‬ ‫ﺧﺮوﺟﻲ ﺑﺎ ﻓﺮﻣﺖ درﺳﺖ ﻣﻌﺎدﻟﻪ ﺧﻂ )‪ 5‬ﻧﻤﺮه( ‪//‬‬

‫;‪return 0‬‬
‫}‬

‫‪7‬‬
‫ﺳﻮال ‪ - 4‬ﻣﺨﺼﻮص داﻧﺸﺠﻮﻳﺎن ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ و ﺑﺮق‪ 20) .‬ﻧﻤﺮه(‬

‫ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﺨﺘﺼﺎت دو ﻣﺴﺘﻄﻴﻞ را از ورودي ﮔﺮﻓﺘﻪ و ﻣﺴﺎﺣﺖ ﻧﺎﺣﻴﻪي ﻣﺸﺘﺮك ﺑﻴﻦ دو ﻣﺴﺘﻄﻴﻞ را ﺣﺴﺎب ﻛﻨﺪ‪ .‬ﺑﻪ ازاء‬
‫ﻫﺮ ﻣﺴﺘﻄﻴﻞ دو ﻧﻘﻄﻪ )ﺟﻤﻌﺎً ﭼﻬﺎر ﻋﺪد اﻋﺸﺎري( ﺑﺎﻳﺪ ﮔﺮﻓﺘﻪ ﺷﻮد‪ .‬ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ ﻫﺮ ﻣﺴﺘﻄﻴﻞ ﺑﺎ اﺳﺘﻔﺎده از دو ﻧﻘﻄﻪ‪ ،‬ﻣﻲﺗﻮاﻧﺪ ﺑﻪ‬
‫ﻳﻜﻲ از ﭼﻬﺎر ﻓﺮم زﻳﺮ ﻧﻤﺎﻳﺶ داده ﺷﻮد‪.‬‬

‫ﺑﻪ ﻋﻨﻮان ﻧﻤﻮﻧﻪ‪ ،‬ﻫﺪف از اﻳﻦ ﺳﻮال ﭘﻴﺪا ﻛﺮدن ﻧﺎﺣﻴﻪ ﭘﺮرﻧﮓ ﺑﻴﻦ دو ﻣﺴﺘﻄﻴﻞ زﻳﺮ ﻣﻲﺑﺎﺷﺪ‪ .‬اﻟﺒﺘﻪ اﻳﻦ اﺣﺘﻤﺎل ﻫﻢ وﺟﻮد دارد ﻛﻪ‬
‫ﻧﺎﺣﻴﻪ ﻣﺸﺘﺮك وﺟﻮد ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ ﻛﻪ در اﻳﻦ ﺻﻮرت ﻣﺴﺎﺣﺖ ﻧﺎﺣﻴﻪ ﻣﺸﺘﺮك ﺑﺮاﺑﺮ ﺻﻔﺮ ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬

‫ﺟﻮاب‪.‬‬

‫)(‪int main‬‬
‫{‬

‫ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮﻫﺎ )‪ 2‬ﻧﻤﺮه( ‪//‬‬

‫;‪float x1, y1, x2, y2, x3, y3, x4, y4‬‬


‫;‪float temp‬‬
‫;‪float x_length=0, y_length=0‬‬

‫ﺧﻮاﻧﺪن ﻣﺨﺘﺼﺎت ﻧﻘﺎط از ورودي )‪ 1‬ﻧﻤﺮه( ‪//‬‬

‫;)‪scanf("%f %f %f %f",&x1,&y1,&x2,&y2‬‬
‫;)‪scanf("%f %f %f %f",&x3,&y3,&x4,&y4‬‬

‫‪8‬‬
// rectangle1 change to first position
// (‫ ﻧﻤﺮه‬5) ‫ﺗﺒﺪﻳﻞ ﻣﺨﺘﺼﺎت ﻧﻘﺎط ﺧﻮاﻧﺪه ﺷﺪه ﺑﺮاي ﻣﺴﺘﻄﻴﻞ اول ﺑﻪ ﻳﻜﻲ از ﭼﻬﺎر ﺣﺎﻟﺖ ﻓﻮق‬

if(x1>x2) {
temp=x1;
x1=x2;
x2=temp;

temp=y1;
y1=y2;
y2=temp;
}

if(y1>y2) {
temp=y1;
y1=y2;
y2=temp;
}

// rectangle2 change to first position


// (‫ ﻧﻤﺮه‬5) ‫ﺗﺒﺪﻳﻞ ﻣﺨﺘﺼﺎت ﻧﻘﺎط ﺧﻮاﻧﺪه ﺷﺪه ﺑﺮاي ﻣﺴﺘﻄﻴﻞ دوم ﺑﻪ ﺣﺎﻟﺖ ﻣﻔﺮوض ﺑﺮاي ﻣﺴﺘﻄﻴﻞ اول‬

if(x3>x4) {
temp=x3;
x3=x4;
x4=temp;

temp=y3;
y3=y4;
y4=temp;
}

if(y3>y4) {
temp=y3;
y3=y4;
y4=temp;
}

// calculate x common space


// (‫ ﻧﻤﺮه‬2) ‫ﭘﻴﺪا ﻛﺮدن ﻃﻮل ﻧﺎﺣﻴﻪ ﻣﺸﺘﺮك‬

if(x1<x4 && x4<x2)


if(x1<x3 && x3<x2)
x_length=x4-x3;
else
x_length=x4-x1;
else
if(x1<x3 && x3<x2)
x_length=x2-x3;
else
x_length=0;

9
//calculate y common space
// (‫ ﻧﻤﺮه‬2) ‫ﭘﻴﺪا ﻛﺮدن ﻋﺮض ﻧﺎﺣﻴﻪ ﻣﺸﺘﺮك‬

if(y1<y4 && y4<y2)


if(y1<y3 && y3<y2)
y_length=y4-y3;
else
y_length=y4-y1;
else
if(y1<y3 && y3<y2)
y_length=y2-y3;
else
y_length=0;

// (‫ ﻧﻤﺮه‬3) ‫ﮔﺰارش ﺧﺮوﺟﻲ ﺑﺎ در ﻧﻈﺮ ﮔﺮﻓﺘﻦ اﺣﺘﻤﺎل ﺻﻔﺮ ﺑﻮدن ﻣﺴﺎﺣﺖ‬

printf("%f",x_length*y_length);

return 0;
}

10

You might also like