Programming1.pdf

‫ﺳﺎﺧﺘﻤﺎن دادﻩ و اﻟﮕﻮرﯾﺘﻢ‬
‫ﺗﻤﺮﯾﻦ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ اول‬
‫ﺁﺑﺎن ‪١٣٨۶‬‬
‫ﺳﻮال اول(‬
‫ﯾﮏ ﮐﻼس ‪ stack‬ﮐﻪ ﻣﺘﺪ هﺎﯼ زﯾﺮ را داﺷﺘﻪ ﺑﺎﺷﺪ را ﺑﻨﻮﯾﺴﻴﺪ‪.‬‬
‫)‪ :Push(x‬ﯾﮏ ﻋﻨﺼﺮ را اﺿﺎﻓﻪ ﻣﯽ ﮐﻨﺪ‪.‬‬
‫‪.i‬‬
‫)(‪ :Top‬ﻋﻨﺼﺮ ﺳﺮ را ﻧﻤﺎﯾﺶ ﻣﯽ دهﺪ‪.‬‬
‫‪.ii‬‬
‫)(‪ :Pop‬ﻋﻨﺼﺮ ﺳﺮ را ور ﻣﯽ دارد و اﮔﺮ ﺧﺎﻟﯽ ﺑﻮد ﮐﺎرﯼ ﻧﻤﯽ ﮐﻨﺪ‪.‬‬
‫‪.iii‬‬
‫ﯾﮏ ﮐﻼس ‪ queue‬ﮐﻪ ﻣﺘﺪ هﺎﯼ زﯾﺮ را داﺷﺘﻪ ﺑﺎﺷﺪ را ﺑﻨﻮﯾﺴﻴﺪ‪.‬‬
‫)‪ :Push_back(x‬ﯾﮏ ﻋﻨﺼﺮ را ﺑﻪ ﺗﻪ اﺿﺎﻓﻪ ﻣﯽ ﮐﻨﺪ‪.‬‬
‫‪.iv‬‬
‫)(‪ :Front‬ﻋﻨﺼﺮ ﺳﺮ را ﻧﻤﺎﯾﺶ ﻣﯽ دهﺪ‪.‬‬
‫‪.v‬‬
‫)‪ :Pop(x‬ﻋﻨﺼﺮ ﺳﺮ را ور ﻣﯽ دارد و اﮔﺮ ﺧﺎﻟﯽ ﺑﻮد ﮐﺎرﯼ ﻧﻤﯽ ﮐﻨﺪ‪.‬‬
‫‪.vi‬‬
‫ورودﯼ ﺧﺮوﺟﯽ‪:‬‬
‫ورودﯼ ﺷﻤﺎ ﺷﺎﻣﻞ ﺗﻌﺪادﯼ ﺳﻄﺮ اﺳﺖ ﮐﻪ هﺮ ﮐﺪام اﺑﺘﺪا ﻧﺎم ﯾﮏ ‪ stack‬ﻣﯽ ﺁﯾﺪ‬
‫ﺳﭙﺲ ﻓﺎﻧﮑﺸﻦ ﻣﻮرد ﻧﻴﺎز ﺑﺮ روﯼ ﺁن و در ﭘﺎﯾﺎن ﺁرﮔﻮﻣﺎن )هﻤﻴﺸﻪ ﻋﺪد ﺻﺤﻴﺢ اﺳﺖ(‬
‫ﺁن در ﺻﻮرت ﻧﻴﺎز‪ .‬هﻤﭽﻨﻴﻦ ﺑﺮاﯼ ﺳﺎﺧﺘﻦ ﯾﮏ ‪ stack‬ﯾﺎ ‪ queue‬ﻣﯽ ﺁﯾﺪ و ﺳﭙﺲ دﺳﺘﻮر‬
‫‪) Creat‬ﺧﻮدم ﻣﯽ داﻧﻢ ‪ e‬ﻧﺪارد( و ﺳﭙﺲ ‪ ٠‬ﺑﻪ ﻣﻌﻨﯽ ‪ stack‬و ‪ ١‬ﺑﻪ ﻣﻌﻨﯽ ‪.queue‬‬
‫‪ Exit‬هﻢ ﺑﻪ ﻣﻌﻨﯽ ﭘﺎﯾﺎن اﺳﺖ‪ .‬در ﺧﺮوﺟﯽ ﻧﻴﺰ در هﺮ ﺧﺮوﺟﯽ هﺎﯼ ﺑﺮﻧﺎﻣﻪ ﺑﺮاﯼ‬
‫دﺳﺘﻮراﺗﯽ ﮐﻪ ﺧﺮوﺟﯽ دارﻧﺪ ﻧﻤﺎﯾﺶ دادﻩ ﻣﯽ ﺷﻮد‪ .‬ﺑﻪ ﻣﺜﺎل زﯾﺮ ﺑﻪ دﻗﺖ ﮐﻨﻴﺪ‪ .‬ورودﯼ‬
‫هﺎ ﻣﺸﮑﻠﯽ ﻧﺨﻮاهﻨﺪ داﺷﺖ‪.‬‬
‫‪Output.txt‬‬
‫‪103‬‬
‫‪56‬‬
‫‪67‬‬
‫‪Input.txt‬‬
‫‪A Creat 0‬‬
‫‪BB Creat 1‬‬
‫‪A Push 56‬‬
‫‪BB Push_back 67‬‬
‫‪A Push 103‬‬
‫‪BB Push_back 66‬‬
‫‪A Top‬‬
‫‪A Pop‬‬
‫‪A Top‬‬
‫‪BB Front‬‬
‫‪Exit‬‬
‫ﺳﻮال دوم(‬
‫ﺑﺮﻧﺎﻣﻪ اﯼ ﺑﻨﻮﯾﺴﻴﺪ ﮐﻪ ﺑﺎ ﮔﺮﻓﺘﻦ ﻣﺠﻤﻮﻋﻪ اﯼ از اﻋﺪاد ﻣﻴﺎﻧﻪ ﺁﻧﻬﺎ راﺑﻴﺎﺑﺪ‪ .‬اﻟﮕﻮرﯾﺘﻢ ﺷﻤﺎ‬
‫ﺑﺎﯾﺪ از )‪ o(n‬ﺑﺎﺷﺪ و اﮔﺮ ﻧﻪ از ﻟﺤﺎظ زﻣﺎﻧﯽ در ﭘﺎﺳﺦ ﺑﻪ ﺗﺴﺖ هﺎ ﮐﻢ ﻣﯽ ﺁورد‪ .‬وﻗﺘﯽ‬
‫ﺗﻌﺪاد ﻋﻨﺎﺻﺮ زوج اﺳﺖ ﻣﻴﺎﻧﻪ ﻣﻴﺎﻧﮕﻴﻦ دو ﻋﻨﺼﺮ ﻣﻴﺎﻧﯽ اﺳﺖ‪.‬‬
‫ورودﯼ ﺧﺮوﺟﯽ‪:‬‬
‫ورودﯼ اﺑﺘﺪا ﯾﮏ ﻋﺪد ﺻﺤﻴﺢ ﺑﻪ ﻣﻌﻨﯽ ﺗﻌﺪاد اﻋﺪاد ورودﯼ درون ﻣﺠﻤﻮﻋﻪ اﺳﺖ و در‬
‫هﻤﻴﻦ ﺗﻌﺪاد از ﺳﻄﺮهﺎﯼ ﺑﻌﺪﯼ اﻋﺪاد اﻋﺸﺎرﯼ ﺧﻮاهﻨﺪ ﺁﻣﺪ‪ .‬ﺧﺮوﺟﯽ ﺗﻨﻬﺎ ﻣﻴﺎﻧﻪ اﯾﻦ‬
‫ﻋﻨﺎﺻﺮ اﺳﺖ‪.‬‬
‫‪Output.txt‬‬
‫‪3.7676‬‬
‫‪Input.txt‬‬
‫‪9‬‬
‫‪1.5‬‬
‫‪3.7676‬‬
‫‪-90.3‬‬
‫‪67.787‬‬
‫‪450.1‬‬
‫‪110.5‬‬
‫‪-87.4‬‬
‫‪0‬‬
‫‪23.4‬‬
‫ﺳﻮال ﺳﻮم (‬
‫اﯾﻦ ﺳﻮال ﻣﺮﺑﻮط ﺑﻪ ﺑﺨﺶ درﺧﺖ هﺎﺳﺖ ﺑﻨﺎﺑﺮ اﯾﻦ ﭘﺲ از ﻣﻄﺮح ﺷﺪن ﮐﺎﻣﻞ درس‬
‫در ﮐﻼس در اﯾﻦ ﻣﮑﺎن ﻗﺮار ﻣﯽ ﮔﻴﺮد‪.‬‬
‫ﻧﮑﺘﻪ‪:‬‬
‫‪ .١‬ﺑﺮﻧﺎﻣﻪ هﺎ را ﺑﺎ ‪ C++‬ﯾﺎ ‪ Java‬ﺑﻨﻮﯾﺲ‪.‬‬
‫‪ .٢‬ورودﯼ هﺎﯼ ﻣﺴﺎﺋﻞ از ﻓﺎﯾﻞ ‪ input.txt‬و ﺧﺮوﺟﯽ هﺎ در ﻓﺎﯾﻞ ‪ output.txt‬ﻣﯽ‬
‫ﺑﺎﺷﺪ‪.‬‬
‫‪ .٣‬ﮐﺪ ﺟﻮاب هﺮ ﺑﺮﻧﺎﻣﻪ را ﺗﺎ ‪ ٢۵‬ﺁﺑﺎن ﺑﺮاﯼ ﻣﻦ ﺑﻔﺮﺳﺖ‪.‬‬
‫‪ .۴‬اﮔﺮ ‪ C++‬ﻣﯽ ﻧﻮﯾﺴﯽ از ‪ stl‬و اﮔﺮ ‪ java‬ﻣﯽ ﻧﻮﯾﺴﯽ از ‪ API‬هﺎﯼ ﻣﺮﺑﻮط ﺑﻪ اﯾﻦ‬
‫ﺗﻤﺎرﯾﻦ در اﯾﻦ ﺗﻤﺮﯾﻦ اﺳﺘﻔﺎدﻩ ﻧﮑﻦ‪.‬‬
‫‪ .۵‬ﭼﻮن ﺟﻮاﺑﻬﺎﯼ ﺷﻤﺎ ﻣﺎ ﻣﺎﺷﻴﻦ ﺗﺼﺤﻴﺢ ﻣﯽ ﺷﻮد ﻟﻄﻔﺎ ﺳﻴﻨﺘﮑﯽ ورودﯼ و ﺧﺮوﺟﯽ را‬
‫ﮐﺎﻣﻞ رﻋﺎﯾﺖ ﮐﻦ و اﮔﺮ ﻧﻪ ﻣﻦ ﻣﺴﺌﻮل ﺁن ﻧﺨﻮاهﻢ ﺑﻮد‪.‬‬
‫‪ .۶‬ﻋﻤﻞ ﻗﺒﻴﺢ ﮐﭙﯽ ﮐﺮدن در ﺗﻤﺎرﯾﻦ ورﻗﯽ ﺑﺎ ﻋﺚ ﺗﻘﺴﻴﻢ ﻧﻤﺮﻩ ﺑﻴﻦ ﭼﻨﺪ ﻧﻔﺮ ﻣﯽ ﺷﻮد‬
‫وﻟﯽ در ﺗﻤﺎرﯾﻦ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ اﯾﻦ ﻋﻤﻞ ﻣﺘﺎﺳﻔﺎﻧﻪ ﺑﺎﻋﺚ ﺣﺬف ﻧﻤﺮﻩ ﺑﻴﻦ ﭼﻨﺪ ﻧﻔﺮ‬
‫ﻣﯽ ﺷﻮد‪.‬‬
‫‪ .٧‬ﻣﻮﻓﻖ ﺑﺎﺷﻴﺪ‪.‬‬