Anda di halaman 1dari 3

‫ﺑﺴﻢ اﷲ اﻟﺮﺣﻤﻦ اﻟﺮﺣﻴﻢ‬

‫ﺗﻤﺮﻳﻦ ﺳﺮي ﺳﻮم ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ‪C++‬‬


‫دﻛﺘﺮ ﻗﻴﺼﺮي‬
‫داﻧﺸﻜﺪه ﻓﻨﻲ‪،‬داﻧﺸﮕﺎه ﺗﻬﺮان‬
‫ﻣﻬﻠﺖ ارﺳﺎل ‪12 :‬ﻧﻴﻤﻪ ﺷﺐ ‪1387 / 9 / 5‬‬

‫ﺗﻮﺟﻪ ‪:‬‬
‫در ﺣﻞ ﺑﻌﻀﻲ از ﻣﺴﺎﺋﻞ ﻧﻴﺎز ﺑﻪ ﺗﻮﻟﻴﺪ اﻋﺪاد ﺗﺼﺎدﻓﻲ دارﻳﺪ‪ .‬ﺑﺮاي اﻳﻦ ﻣﻨﻈﻮر ﻣﻲ ﺗﻮاﻧﻴﺪ از ﺗﺎﺑﻊ‬
‫)(‪ rand‬ﻛﻪ در ﻛﺘﺎﺑﺨﺎﻧﻪ ‪ stdlib.h‬ﻣﻮﺟﻮد اﺳﺖ اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ .‬ﻓﺮاﺧﻮاﻧﻲ اﻳﻦ ﺗﺎﺑﻊ‪ ،‬ﻋﺪدي ﺗﺼﺎدﻓﻲ و‬
‫ﻃﺒﻴﻌﻲ در ﺑﺎزه ]‪ [0 - RAND_MAX-1‬ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ ‪ .‬ﻛﻪ در آن ‪ RAND-MAX‬ﻋﺪدي ﺛﺎﺑﺖ‬
‫اﺳﺖ‪.‬ﺑﺮاي ﻣﺜﺎل ﻛﺪ زﻳﺮ ‪ 10‬ﻋﺪد ﺗﺼﺎدﻓﻲ در اﻳﻦ ﺑﺎزه ﭼﺎپ ﻣﻲ ﻛﻨﺪ‪.‬‬

‫>‪#include <stdlib.h‬‬
‫>‪#include <time.h‬‬
‫>‪#include <iostream.h‬‬
‫)(‪int main‬‬
‫{‬
‫;‪int r; // random integer‬‬
‫‪int i = 0; // control variable‬‬
‫‪srand(time(0)); // initialise random number generator‬‬
‫)‪while (i < 10‬‬
‫{‬
‫‪r = rand(); // gets random int in 0-RAND_MAX‬‬
‫;‪cout << "Random integer was " << r<<endl‬‬
‫;‪i++‬‬
‫}‬
‫;)‪return (0‬‬
‫}‬
‫دﻗﺖ ﻛﻨﻴﺪ ﻛﻪ ﺗﺎﺑﻊ ))‪ srand(time(0‬از ﻛﺘﺎﺑﺨﺎﻧﻪ ‪ time.h‬ﺗﻨﻬﺎ ﻳﻜﺒﺎر در اﺑﺘﺪاي ﺑﺮﻧﺎﻣﻪ ﻓﺮاﺧﻮاﻧﻲ ﻣﻲ‬
‫ﺷﻮد ﺗﺎ اﻋﺪاد ﺗﺼﺎدﻓﻲ ﺗﻮﻟﻴﺪ ﺷﺪه در ﻫﺮ ﺑﺎر اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﻣﺘﻔﺎوت ﺑﺎﺷﻨﺪ‪.‬‬
‫ﻣﺴﺎﺋﻞ زﻳﺮ را ﺑﻪ زﺑﺎن ‪ C++‬ﺑﻨﻮﻳﺴﻴﺪ‪.‬‬
‫ﻣﺴﺄﻟﻪ اول‪:‬‬
‫ﻣﻲ داﻧﻴﻢ در ﭘﺮﺗﺎب ﻳﻚ ﺗﺎس ‪ 6‬ﺣﺎﻟﺖ ﺑﺮاي وﺟﻪ ﺑﺎﻻﻳﻲ ﺗﺎس ﻣﻤﻜﻦ اﺳﺖ‪1).‬ﻳﺎ‪2‬ﻳﺎ‪...‬ﻳﺎ‪ .(6‬ﻓﺮض ﻛﻨﻴﺪ‬
‫دوﺗﺎس را ‪ 3600‬ﻣﺮﺗﺒﻪ ﻣﻲ رﻳﺰﻳﻢ‪ ،‬ﺑﺮﻧﺎﻣﻪ اي ﺑﻪ زﺑﺎن ‪ C++‬ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ‪ ،‬ﺗﻌﺪاد دﻓﻌﺎﺗﻲ ﻛﻪ ﻣﺠﻤﻮع‬
‫دو ﻋﺪد روي ﺗﺎس ‪2‬ﻳﺎ‪3‬ﻳﺎ‪4‬ﻳﺎ‪ 12...‬ﺑﺎﺷﺪ را ﻣﺤﺎﺳﺒﻪ و ﻧﺘﺎﻳﺞ را در ﻓﺎﻳﻠﻲ ﺑﺎ ﻧﺎم ‪ result1.txt‬ذﺧﻴﺮه‬
‫ﻛﻨﻴﺪ‪.‬‬
‫ﻳﻚ ﻧﻤﻮﻧﻪ از ﺣﺎﻟﺖ ﺧﺮوﺟﻲ در زﻳﺮ ﻧﻤﺎﻳﺶ داده ﺷﺪه اﺳﺖ‪.‬ﺧﺮوﺟﻲ در ﻫﺮ ﺑﺎر اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﺑﺎﻳﺪ‬
‫ﻣﺘﻔﺎوت ﺑﺎﺷﺪ‪.‬‬
‫‪Sum(2)=97‬‬
‫‪Sum(3)=210‬‬
‫‪Sum(4)=497‬‬
‫‪Sum(5)=401‬‬
‫‪Sum(6)=537‬‬
‫‪Sum(7)=567‬‬
‫‪Sum(8)=514‬‬
‫‪Sum(9)=390‬‬
‫‪Sum(10)=290‬‬
‫‪Sum(11)=197‬‬
‫‪Sum(12)=100‬‬

‫ﻣﺴﺄﻟﻪ دوم ‪:‬‬


‫ﺑﺮﻧﺎﻣﻪ اي ﺑﻪ زﺑﺎن ‪ C++‬ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻧﻤﺮات داﻧﺸﺠﻮﻳﺎن ﻳﻚ ﻛﻼس)ﺣﺪاﻛﺜﺮ ‪ 30‬ﻧﻔﺮ( را از ﻓﺎﻳﻠﻲ ﺑﻪ‬
‫ﻧﺎم ‪ file..txt‬ﺑﺨﻮاﻧﺪ و ﻣﻴﺎﻧﮕﻴﻦ ﻧﻤﺮات‪،‬ﻣﺎﻛﺴﻴﻤﻢ و ﻣﻴﻨﻴﻤﻢ ﻧﻤﺮات ﻛﻼس و ﻫﻤﭽﻨﻴﻦ ﻧﺎم ﺑﺎزه اي‬
‫ﻛﻪ ﺑﺎﻻﺗﺮﻳﻦ ﺗﻌﺪاد ﻧﻤﺮات را دارد ﻧﻤﺎﻳﺶ دﻫﺪ ﻫﻤﭽﻨﻴﻦ ﻧﺘﺎﻳﺞ را در ﻓﺎﻳﻞ دﻳﮕﺮي ﺑﻪ ﻧﺎم ‪result2.txt‬‬
‫ذﺧﻴﺮه ﻛﻨﺪ‪.‬‬
‫ﺗﻮﺟﻪ‪:‬ﺑﺎزه ﻫﺎ ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻌﺮﻳﻒ ﻣﻴﺸﻮﻧﺪ‪.‬‬
‫‪0 <= score <10 D‬‬
‫‪10<= score <14 C‬‬
‫‪14<= score <17 B‬‬
‫‪17<= score <=20 A‬‬
‫ﻣﺴﺌﻠﻪ ﺳﻮم ‪:‬‬
‫ﻓﺮض ﻛﻨﻴﺪ دو ﻛﻼس ‪20‬و‪ 35‬ﻧﻔﺮه داﺷﺘﻪ ﺑﺎﺷﻴﻢ و ﻧﻤﺮه ﻫﺎي داﻧﺸﺠﻮﻳﺎن ﻫﺮ ﻛﻼس ﺑﻴﻦ ‪ 0‬ﺗﺎ ‪100‬‬
‫ﺑﺎﺷﺪ اﺑﺘﺪا ﺑﺎ ﺗﻮﻟﻴﺪ اﻋﺪاد ﺗﺼﺎدﻓﻲ ﺑﻴﻦ ‪ 0‬ﺗﺎ ‪ 100‬دو ﻓﺎﻳﻞ ﻣﺘﻨﻲ ﺑﺎ ﻧﺎﻣﻬﺎي ‪ score1,score2‬ﺷﺎﻣﻞ‬
‫ﻧﻤﺮه ﻫﺎي ﻛﻼس ‪1‬و‪ 2‬اﻳﺠﺎد ﻛﻨﻴﺪ‪ ).‬ﻓﺮض ﻛﻨﻴﺪ اوﻟﻴﻦ ﻧﻤﺮه در ﻓﺎﻳﻞ ‪ 1‬ﻣﺮﺑﻮط ﺑﻪ اوﻟﻴﻦ داﻧﺸﺠﻮي‬
‫ﻟﻴﺴﺖ و ﻫﻤﻴﻨﻄﻮر آﺧﺮﻳﻦ ﻧﻤﺮه ﻣﺮﺑﻮط ﺑﻪ آﺧﺮﻳﻦ ﻧﻔﺮ ﻟﻴﺴﺖ ﻫﺮ ﻛﻼس ﺑﺎﺷﺪ(‪ .‬ﻣﻲ ﺧﻮاﻫﻴﻢ ﺗﻮﺳﻂ‬
‫ﺗﺎﺑﻌﻲ ﺑﻪ داﻧﺸﺠﻮﻳﺎن ﺑﺮاي ﭘﻴﺪا ﻛﺮدن ﻧﻤﺮه ﺧﻮد ﻛﻤﻚ ﻛﻨﻴﻢ‪.‬ﻫﺮ ﺷﺨﺺ‪ ،‬ﻳﺎ داﻧﺸﺠﻮي ﻛﻼس ‪ 1‬اﺳﺖ‪،‬‬
‫و ﻳﺎ داﻧﺸﺠﻮي ﻛﻼس ‪ ، 2‬وﻟﻲ ﻫﺮ ﻛﺪام داراي ﻳﻚ ‪ ID‬در ﻟﻴﺴﺖ ﻫﺴﺘﻨﺪ‪).‬ﻣﺜﻼً‪ :‬دﻫﻤﻴﻦ ﻧﻤﺮه در ﻓﺎﻳﻞ‬
‫‪ score1‬ﻣﺮﺑﻮط ﺑﻪ داﻧﺸﺠﻮي ﻛﻼس ﻳﻚ ﺑﺎ ﺷﻤﺎره ‪ 10 ،ID‬ﻣﻲ ﺑﺎﺷﺪ‪ (.‬ﺗﺎﺑﻌﻲ ﺑﺎ ﻧﺎم ‪ search‬ﺑﺎ دو‬
‫ﭘﺎراﻣﺘﺮ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﭘﺎراﻣﺘﺮ اول ﺷﻤﺎره ﻛﻼس )‪ ( n =1 or 2‬و ﭘﺎراﻣﺘﺮ دوم ‪ ID‬ﺷﺨﺺ داﻧﺸﺠﻮ‬
‫ﺑﺎﺷﺪ‪ ،‬ﺳﭙﺲ در ﻓﺎﻳﻠﻲ ﻣﺘﻨﻲ ﺑﺎ ﻧﺎم ‪ result3.txt‬ﻧﺘﻴﺠﻪ زﻳﺮ ذﺧﻴﺮه ﻛﻨﻴﺪ ﻣﺜﻼً ‪:‬‬
‫‪Score for student NO ID in class n = result‬‬
‫ﻛﻪ در اﻳﻨﺠﺎ ﺑﻪ ﺟﺎي ‪ n,result, ID‬ﻣﻘﺪار آﻧﻬﺎ ﻗﺮار داده ﻣﻲ ﺷﻮد‪.‬ﺳﭙﺲ ﺗﺎﺑﻊ را در ‪ main‬ﻓﺮاﺧﻮاﻧﻲ‬
‫ﻛﻨﻴﺪ‪.‬‬
‫ﻧﻜﺘﻪ ي ﻣﻬﻢ‪ :‬ﺗﻤﺎم ﻓﺎﻳﻠﻬﺎي ﻣﺘﻨﻲ ﺑﺎﻳﺪ ﺑﻪ ﻫﻤﺮاه ﺣﻞ ﻣﺴﺎﺋﻞ ﻓﺮﺳﺘﺎده ﺷﻮد‪ ،‬ﻓﺎﻳﻠﻬﺎي ﻣﺘﻨﻲ ﻧﺒﺎﻳﺪ ﺑﺎ‬
‫ﺷﺨﺺ دﻳﮕﺮي ﻣﺸﺎﺑﻪ ﺑﺎﺷﺪ زﻳﺮا ﺑﻪ ﻣﻨﺰﻟﻪ ي ﺗﻘﻠﺐ و ﻳﺎ ‪ cop‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫ﻣﻮﻓﻖ و ﭘﻴﺮوز ﺑﺎﺷﻴﺪ‬

Anda mungkin juga menyukai