HW1-C++.pdf

‫ثِ ًبم خذا‬
‫سوشيي سشي اٍل ثشًبهِ ًَيسی دیطشفشِ‬
‫هْلز اسسبل‪ :‬جوؼِ ‪ 89/8/14‬سبػز ‪23:59‬‬
‫سَضیحبر‬
‫لجل اص ضشٍع هَاسد صيش سا ثِ دلز ثخَاًیذ ‪:‬‬
‫‪ o‬دس خط اٍل ّش يک اص ثشًبهِ ّب ضوبسُ داًطجَيی خَد سا ثِ غَسر صيش ثٌَيسیذ ‪:‬‬
‫‪// ID: your Student ID‬‬
‫‪ o‬ثؼذ اص ًَضشي ّوِ ثشًبهِ ّب‪ ،‬فبيل ّبي هشثَطِ سا دس يک دَضِ ‪ 1‬ثب ًبم ‪ assignment#1_stdID‬لشاس‬
‫دّیذ (کِ دس آى ‪ stdID‬ضوبسُ داًطجَيی ضوب هی ثبضذ‪ ٍ ).‬سذس ايي دَضِ سا فطشدُ ‪ 2‬کٌیذ‪ .‬فبيل فطشدُ‬
‫ضذُ سا ثِ آدسس ‪ [email protected]‬اسسبل ًوبيیذ‪.‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫ػٌَاى‪ 3‬ايویل ثبيذ ثِ غَسر ‪ assignment#1_stdID‬ثبضذ ‪ ،‬کِ دس آى ‪ stdID‬ضوبسُ داًطجَيی‬
‫ضوب هیثبضذ‪.‬‬
‫اضشجبُ دس ًبمگزاسي فبيل ثشًبهِ ّب ٍ فبيل فطشدُ ضذُ ٍ يب ػٌَاى ايویل فشسشبدُ ضذُ ‪ ،‬هَجت ػذم سػحیح‬
‫سوشيي ضوب هی ضَد‪.‬‬
‫ًحَُ ٍسٍدي گشفشي ٍ خشٍجی دادى ثشًبهِ ّبي ضوب ثبيذ دلیمبً ثِ غَسر گفشِ ضذُ دس هسئلِ ثبضذ ‪.‬‬
‫ثِ ّش يک اص ثشًبهِ ّبي ضوب سؼذادي سسز دادُ خَاّذ ضذ ‪ .‬سَغیِ هی ضَد کِ حشوبً يک ثبس سسز ّبي ًوًَِ‬
‫سا ثِ ثشًبهِّبيشبى ثذّیذ‪.‬‬
‫گزاضشي کبهٌز ثشاي لسوز ّبي هخشلف ثشًبهِ ّبيشبى ٍ ًبم گزاسي هٌبست هشغیشّب سا فشاهَش ًکٌیذ‪ .‬ثِ‬
‫خػَظ سَاثغ ٍ هشغییش ّبي اغلی ثشًبهِ سبى ‪ .‬کبهٌز گزاسي جضٍ ًوشُ اي اص ّش سَال اسز ‪.‬‬
‫ثِ اصاي ّش سٍص سبخیش دس اسسبل ثشًبهِ ّب ‪ %20 ،‬اص ًوشُ ي ايي سوشيي کبسشِ خَاّذ ضذ ‪.‬‬
‫ثِ ثشًبهِّبي هطبثِ ثِ هیضاى ًوشُ سَال‪ً ،‬وشُ هٌفی سؼلك خَاّذ گشفز ‪.‬‬
‫‪ o‬کشبثخبًِ ّبيی اص ‪ C‬کِ اسشفبدُ اص آى ّب دس ايي سشي سوشيي هجبص هی ثبضذ فمط ‪iostream , string‬‬
‫اسز‬
‫‪ّ o‬ش گًَِ سَال دس هَسد سوشيٌبر سا ثب ػٌَاى ]‪ assignment#1_question[x‬کِ ]‪ [x‬ضوبسُ هسئلِ‬
‫ي هَسد ًظش اسز‪ ،‬ثِ آدسس ‪ [email protected]‬اسسبل کٌیذ‪.‬‬
‫‪ o‬هَفك ثبضیذ‪.‬‬
‫‪1‬‬
‫‪Folder, Directory‬‬
‫‪zip‬‬
‫‪3‬‬
‫‪Subject‬‬
‫‪2‬‬
‫هسئلِ اٍل‬
‫ًبم فبيل ثشًبهِ ‪BalancedExpression.cpp :‬‬
‫‪ Stack‬يکی اص سبخشوبى دادُ ّبي دشکبسثشد دس ثشًبهِ ًَيسی اسز کِ دس رخیشُ کشدى ٍ خَاًذى اطالػبر اص‬
‫آًْب اص سیبسز ‪ )Last In First Out( LIFO‬اسشفبدُ هی ضَد‪ .‬ثِ ايي هؼٌب کِ آخشيي ػٌػشي سا کِ دس‬
‫آى رخیشُ کٌیذ اٍلیي ػٌػش لبثل ثبصيبثی اص آى خَاّذ ثَد (اگش ثب ايي سبخشن اى دادُ آضٌب ًیسشیذ ثِ غفحِ‬
‫‪ Deitel 628‬سجَع کٌیذ‪.).‬‬
‫اص کبسثشدّبي ‪ kcatS‬دس سؼییي هشَاصى ثَدى يب ًجَدى يک ػجبسر اسز ‪ .‬ػجبسر هشَاصى ػجبسسی اسز کِ اص دٍ‬
‫طشف ثِ يک ضکل خَاًذُ ٍ ًَضشِ ضَد ‪ .‬ثِ طَ س هثبل ػجبسر ‪ ABCDCBA‬يک ػجبسر هشَاصى اسز ‪.‬کٌششل‬
‫هشَاصى ثَدى يک ػجبسر ثب اسشفبدُ اص ‪ kcatS‬سبدُ اسز‪.‬‬
‫ثشًبهِ ضوب ثبيذ يک ػجبسر سا ثِ ػٌَاى ٍسٍدي ثگیشد ٍ ثِ ػٌَاى خشٍجی ػجبسر "‪("balanced‬دس غَسر‬
‫هشَاصى ثَدى ػجبسر) ٍ "‪( "not balanced‬دس غَسر ًبهشَاصى ثَدى ػجبسر ) سا چبح کٌذ‪.‬‬
‫ساٌّوبيی‪ :‬سضشِ ٍسٍدي سا اص چخ ثِ ساسز دیوبيص کٌیذ‬
‫‪ .‬دس طی ايي دیوبي ش‪ ،‬سوبم کبساکششّب سا دس‬
‫‪ ،stack‬لشاس دّیذ‪ push (.‬کٌیذ)‪.‬‬
‫کبساکشش ّب ثِ سشسیت اص ‪ pop ، Stack‬کٌیذ ٍ ثب حشٍف ػجبسر (اص چخ ثِ ساسز ) همبيسِ کٌیذ ‪ .‬کلیِ‬
‫اگ کبساکششّب هشٌبظش ًجبضٌذ ٍ يب ‪ stack‬خبلی ثبضذ‪ ،‬ػجبسر هشَاصى‬
‫کبساکششّب ثبيذ ثب يکذيگش يکسبى ثب ضٌذ‪ .‬س‬
‫ًیسز‪.‬‬
‫سَجِ‪ً :‬ویشَاًیذ اص ‪ّ library‬بي صثبى ‪ C++‬ثشاي دیبدُ سبصي ‪ stack‬اسشفبدُ کٌیذ ‪.‬ثشاي دیبدُ سبصي‬
‫‪ stack‬ثبيذ اص آسايِ ّب اسشفبدُ کٌیذ‪.‬‬
‫ٍسٍدي ًوًَِ‬
‫خشٍجی ًوًَِ‬
‫‪ABCVVDBA‬‬
‫‪not balanced‬‬
‫هسئلِ دٍم‬
‫ًبم فبيل ثشًبهِ‪Arranger.cpp :‬‬
‫غفحِ چیي کشدى يک هشي ثِ ايي هؼٌی اسز کِ آى سا دس يک غفحِ ثب ػشؼ هطخع لشاس دّین ثِ طَسي‬
‫کِ خَاًب ثوبًذ‪ .‬ثشاي ايي هٌظَس الصم اسز ثؼذ اص ثشخی کلوبر ثِ خط ثؼذ ثشٍين ‪.‬‬
‫‪ Text‬هشٌی اسز کِ هیخَاّین غفحِ چیي کٌین ٍ ‪ width‬حذاکثش سؼذاد کبساکشش هوکي دس يک خط ٍ يب‬
‫دس ّوبى ػشؼ غفحِ اسز‪.‬‬
‫ثشًبهِ ي ضوب ثبيذ اثشذا ‪ ٍ width‬سذس دس خط ثؼذ ‪ text‬سا اص کبسثش گشفشِ ‪ ٍ ،‬آى سا غفحِ چیي کٌذ ‪.‬‬
‫ًکبر‪:‬‬
‫‪ )1‬کلوِ ّب ثب ‪ \n ٍ space‬جذا ضذُ اًذ ‪.‬‬
‫‪ )2‬فمط ٌّگبهی حك داسين يک کلوِ سا لطغ کٌین کِ طَل آى اص ػشؼ غفحِ ثیطشش ثبضذ ‪.‬‬
‫‪ )3‬کبساکشش سفشي ثِ خط ثؼذ ‪ \n‬اسز‪ .‬ثِ طَس هثبل " ‪This is first line\nThis is second‬‬
‫‪ "line‬يک سضشِ ي دٍ خطی هی ثبضذ ‪.‬‬
‫‪ )4‬هوکي اسز آسگَهبى ٍسٍدي ‪ text‬خَد چٌذ خطی ثبضذ ‪.‬يؼٌی ضبهل ‪ \n‬ثبضذ‪ .‬ايي ‪ّ \n‬ب ثبيذ‬
‫حفظ ضًَذ ٍ حزف ًطًَذ ‪.‬‬
‫‪ )5‬کبساکششّبي ‪ space‬دس اثشذا ٍ اًشْبي خط ًجبيذ ٍجَد داضشِ ثبضٌذ ‪.‬‬
‫‪ )6‬ديگش کبساکشش ّب ثِ غیش اص ‪ \n ٍ space‬ثبيذ دسز ًخَسدُ ثوبًٌذ ‪.‬‬
‫ٍسٍدي ًوًَِ‬
‫خشٍجی ًوًَِ‬
‫‪6‬‬
‫‪This is a text\nI want to wrap and test your method's correctness‬‬
‫‪This\nis a\ntest\nI‬‬
‫‪want\nto\nwrap\nand\ntest\nyour\nmethod\n's\ncorrec\ntness‬‬
‫هسئلِ سَم‬
DoubledLinkedlist.cpp:ِ‫ًبم فبيل ثشًبه‬
(a b c d) ‫ ثِ طَس هثبل لیسز‬.‫ سا گشفشِ ٍ ّش گشُ آى سا دٍ ثشاثش کٌذ‬linked list ‫سبثؼی ثٌَيسیذ کِ يک‬
.‫( سغییش هی کٌذ‬a a b b c c d d ) ِ‫ث‬
void DoubleList(Node * list)
//precondition: if list = (a b c d)
//postcondition: then list = (a a b b c c d d)
.‫ اسشفبدُ کٌیذ‬struct ‫ يب‬class ‫ اص سبخشبس‬linked list ‫ دس‬node ‫ثشاي سؼشيف‬
)‫ هشاجؼِ کٌیذ‬Deitel ‫ ثِ کشبة‬linked list ‫(ثشاي آضٌبيی ثیطشش ثب‬
:‫سَضیح‬
. ‫ثِ ايي ثشًبهِ ٍسٍدي دادُ ًخَاّذ ضذ‬
‫هسئلِ چْبسم‬
‫ًبم فبيل ثشًبهِ‪SelfNumbers.cpp:‬‬
‫دس سبل ‪ 1949‬دکشش ‪، Kaprekar‬دکششاي سيبضیبر اص ٌّذ ‪،‬کالس اػذادي ثِ ًبم ‪ self-numbers‬سا‬
‫کطف کشد‪.‬ثشاي ّش ػذد هثجز غحیح )‪ d(n‬جوغ ‪ ٍ n‬اسلبم ػذد ‪ n‬اسز‪.‬ثِ ػٌَاى هثبل‬
‫‪d(75)=75+5+7=87‬‬
‫ثب سَجِ ثِ ّش ػذد غحیح هثجز ثِ ػٌَاى ًمطِ ضشٍع ‪ ،‬هی سَاًیذ ثیٌْبيز دًجبلِ اص اػذاد غحیح افضايطی‬
‫‪ n, d(n), d(d(n)), d(d(d(n))), ....‬سا سبخز‪.‬‬
‫ثِ ػٌَاى هثبل ‪ ،‬اگش ثب ‪ 33‬ضشٍع کٌیذ ‪،‬ػذد ثؼذي ‪ ٍ 33 + 3 + 3 = 39‬ثؼذي‬
‫‪ ٍ 39 + 3 + 9 = 51‬ثؼذي ‪ 51 + 5 + 1 = 57‬اسز‪.‬دس دًجبلِ ‪:‬‬
‫‪ 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ...‬سَلیذ هی ضَد‬
‫ػذد ‪ n‬هَلذ ‪ً d(n). ،‬بهیذُ هی ضَد‪.‬‬
‫دس دًجبلِ فَق ‪ 33‬هَلذ ‪ 39، 39‬هَلذ ‪ 51، 51‬هَلذ ‪ ٍ 57‬ثِ ّویي سشسیت ‪.‬‬
‫ثؼضی اص اػذاد ثیطشش اص يک هَلذ داسًذ ‪.‬هثال ‪ 101‬دٍ هَلذ داسد ‪.100 ٍ 91‬‬
‫ػذدي کِ ّیچ هَلذي ًذاسد ‪ً self-number‬بهیذُ هی ضَد‪.‬‬
‫فشؼ کٌیذ کِ]‪ i ، a[i‬اهیي ‪ self-number‬ثبضذ‪.‬سیضدُ سب ‪ self-number‬کوشش اص ‪ 100‬ثِ سشسیت‬
‫غؼَدي صيش ٍجَد داسد‪1, 3, 5, 7, 9, 20, 31, 42, 53, 64, 75, 86, 97:‬‬
‫ثشًبهِدٍ ػذد غحیح ‪ M , N‬کِ ثب يک فبغلِ دس سطش اٍل هی آيٌذ )‪.(1<=N,M<=107‬‬
‫‪:‬‬
‫ٍسٍدي‬
‫خشٍجی ثشًبهِ‪:‬دس سطش اٍل آى ثبيذ ػذد ‪ k‬کِ سؼذاد ‪ّ self-numbers‬بي ثبصُ ‪ [N..M].‬اسز چبح‬
‫ضَد‪.‬‬
‫دس سطش دٍم آى ‪ k‬ػذد ثبيذ ثب دسج فبغلِ ثیٌطبى چبح ضَد‬
‫‪Sample Input‬‬
‫‪1 100‬‬
‫‪Sample Output‬‬
‫‪13‬‬
‫‪1 3 5 7 9 20 31 75 86 97‬‬
‫هسئلِ دٌجن‬
‫ًبم فبيل ثشًبهِ ‪RecursiveProcedures.cpp :‬‬
‫سػَس کٌیذ کِ ثِ ضوب دبصل ضبهل يک سديف اص هشثغ ّب کِ ّش کذام حبٍي يک ػذد غحیح دادُ ضذُ‬
‫اسز ‪ ،‬هبًٌذ ايي ‪:‬‬
‫دايشُ دس هشثغ ًطبًگش اٍلیِ اسز کِ هی سَاًذ ثِ هشثغ ديگش دس اهشذاد سديف حشکز کٌذ ‪ .‬دس ّش هشحلِ دس‬
‫دبصل ‪ ،‬ضوب هی سَاًیذ ًطبًگش سا ثِ سؼذاد ػذد غحیح ًَضشِ ضذُ دس آى ثش سٍي هشثؼبر سديف حشکز دّیذ ‪.‬‬
‫ًطبًگش هی سَاًذ دس اهشذاد سديف ثِ سوز ساسز يب چخ حشکز کٌذ ‪.‬‬
‫ثشاي هثبل دس ضکل فَق سٌْب حشکز هجبص آى اسز کِ ًطبًگش ‪ 3‬خبًِ ثِ سوز ساسز ثیبيذ چَى ‪ 3‬خبًِ ي‬
‫خبلی دس سوز چخ هَجَد ًیسز ‪.‬‬
‫ّذف دبصل آى اسز کِ ًطبًگش سا اص خبًِ ‪ 0‬ام آسايِ ثِ اًشْبي سديف ثشسبًیذ ‪.‬‬
‫ثب ايي سَضیح ار حل دبصل فَق ثِ ضکل صيش اسز ‪:‬‬
‫اگشچِ ايي گًَِ هؼوبّب لبثل حل ّسشٌذ ٍدس ثؼضی هَاسد ثیص اص يک ساُ حل داسًذ اهب حل ثشخی دبصل ّب‬
‫اص ايي فشم هوکي اسز غیش هوکي اسز ‪ ،‬هبًٌذ هثبل صيش ‪:‬‬
‫دس ايي دبصل ‪ ،‬ضوب هی سَاًیذ ثیي دٍ "‪ "3‬حشکز ثِ ػمت ٍ جلَ اًجبم دّیذ ‪ ،‬اهب ّشگض ًوی سَاًیذ ثِ ّش‬
‫يک اص هشثغ ّبي ديگش ثشسیذ‪.‬‬
‫سبثغ اي ثِ غَسر صيش ثٌَيسیذ کِ ًمطِ ضشٍع حشکز ٍ اًذاصُ آسايِ ي ٍسٍدي ثِ ّوشاُ ًبم آى سا ثگیسد ‪.‬‬
‫;)‪Bool IsSolvable ( int start ,int size ,int*array‬‬
‫اگش دبصل ثب حشکز اص اثشذاي آى لبثل حل ثبضذ ‪ ،‬سبثغ همذاس ‪ True‬سا ثش هی گشداًذ‪.‬دس غیش غَسر ‪False‬‬
‫ثشهیگشداًذ‪.‬‬
‫ثِ ػٌَاى هثبل ثشاي دبصل هثبل اٍل سبثغ ثِ غَسر )‪ IsSolvable ( 0,10,puzzle1‬هی ثبضذ ٍ‬
‫جَاة ‪ true‬ثشهی گشداًذ‪.‬‬
‫ٍ دس هثبل دٍم سبثغ ثِ غَسر )‪ IsSolvable ( 0,5,puzzle2‬هی ثبضذ ٍ جَاة ‪ false‬ثشهی‬
‫گشداًذ‪.‬‬
‫دس حل ايي سَال ثبيذ ثِ هَاسد صيش سَجِ کٌیذ ‪:‬‬
‫‪ ‬دبصل فمط يک ًمطِ ي ضشٍع داسد ٍ آى خبًِ ‪ 0‬ام آسايِ اسز ‪ (.‬اٍلیي خبًِ ي سوز چخ دبصل )‬
‫‪ ‬ضوب ًیبص داسيذ کِ ساُ حلی ثشاي رخیشُ ي هکبى خبًِ ّبي هطبّذُ ضذُ ي لجلی ثیبثیذ سب‬
‫ًطبًگشسبى دس حشکبر ثی ًْبيز هبًٌذ هثبل دٍم ًیبفشذ ‪.‬‬
‫‪ ‬همذاس اػذاد دسٍى آسايِ ي اغلی سبى هی ثبيسز لجل ٍ ثؼذ اص فشاخَاًی سبثغ هزکَس يکساى ثبضذ ‪.‬‬
‫اگشچِ دس طَل سبثغ دس غَسسی کِ ًیبص ديذ يذ هی سَاًیذ همبديش سا ثِ طَس هَلز سغییش دّیذ ‪.‬‬
‫کٌیذ‬
‫سَجِ ٍ ساٌّوبيی هْن‪ :‬ايي هثبل سا ثبيذ ثِ غَسر ثبصگطشی حل ‪.‬‬
‫ًوًَِ ٍسٍدي ٍ خشٍجی‪:‬‬
‫دس سطش اٍل اًذاصُ آسايِ ٍ سذس دسايِ ّبي آى هی آيذ ‪.‬‬
‫ٍسٍدي‬
‫خشٍجی‬
‫‪10‬‬
‫‪3‬‬
‫‪6‬‬
‫‪4‬‬
‫‪1‬‬
‫‪3‬‬
‫‪4‬‬
‫‪2‬‬
‫‪5‬‬
‫‪3‬‬
‫‪0‬‬
‫‪True‬‬
‫‪0‬‬
‫‪False‬‬
‫‪5‬‬
‫‪3‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪0‬‬