0% found this document useful (0 votes)
33 views11 pages

@sharifjozve96 C Programming 92

The document is a quiz in Farsi containing 10 multiple choice questions about C programming concepts such as loops, functions, operators, and output. The questions test understanding of topics like post-increment operators, function parameters, conditional statements, and loop control structures. The correct answers are provided in Arabic numerals.

Uploaded by

zaramfm98
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)
33 views11 pages

@sharifjozve96 C Programming 92

The document is a quiz in Farsi containing 10 multiple choice questions about C programming concepts such as loops, functions, operators, and output. The questions test understanding of topics like post-increment operators, function parameters, conditional statements, and loop control structures. The correct answers are provided in Arabic numerals.

Uploaded by

zaramfm98
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/ 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