HW2-C++.pdf

‫ثِ ًبم خذا‬
‫سوشيي سشي دٍم ثشًبهِ ًَيسی دیطشفشِ‬
‫هْلز اسسبل‪ :‬يهضٌجِ ‪ 89/8/30‬سبػز ‪23:59‬‬
‫سَضیحبر‬
‫لجل اص ضشٍع هَاسد صيش سا ثِ دلز ثخَاًیذ ‪:‬‬
‫‪ ‬دس خظ اٍل ّش يه اص ثشًبهِ ّب ضوبسُ داًطدَيی خَد سا ثِ غَسر صيش ثٌَيسیذ ‪:‬‬
‫‪// ID: your Student ID‬‬
‫‪ ‬ثؼذ اص ًَضشي ّوِ ثشًبهِ ّب‪ ،‬فبيل ّبي هشثَعِ سا دس يه دَضِ ‪ 1‬ثب ًبم ‪ assignment#2_stdID‬لشاس دّیذ‬
‫(وِ دس آى ‪ stdID‬ضوبسُ داًطدَيی ضوب هی ثبضذ‪ ٍ ).‬سذس ايي دَضِ سا فطشدُ ‪ 2‬وٌیذ‪ .‬فبيل فطشدُ ضذُ سا ثِ‬
‫آدسس ‪ [email protected]‬اسسبل ًوبيیذ‪.‬‬
‫‪ ‬ػٌَاى‪ 3‬ايویل ثبيذ ثِ غَسر ‪ assignment#2_stdID‬ثبضذ ‪ ،‬وِ دس آى ‪ stdID‬ضوبسُ داًطدَيی ضوب‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫هیثبضذ‪.‬‬
‫اضشجبُ دس ًبم گزاسي فبيل ثشًبهِ ّب ٍ فبيل فطشدُ ضذُ ٍ يب ػٌَاى ايویل فشسشبدُ ضذُ ‪ ،‬هَخت ػذم سػحیح‬
‫سوشيي ضوب هی ضَد‪.‬‬
‫ًحَُ ٍسٍدي گشفشي ٍ خشٍخی دادى ثشًبهِ ّبي ضوب ثبيذ دلیمبً ثِ غَسر گفشِ ضذُ دس هسئلِ ثبضذ ‪.‬‬
‫ثِ ّش يه اص ثشًبهِ ّبي ضوب سؼذادي سسز دادُ خَاّذ ضذ ‪ .‬سَغیِ هی ضَد وِ حشوبً يه ثبس سسز ّبي ًوًَِ سا‬
‫ثِ ثشًبهِّبيشبى ثذّیذ‪.‬‬
‫‪ .‬ثِ‬
‫گزاضشي وبهٌز ثشاي لسوز ّبي هخشلف ثشًبهِ ّبيشبى ٍ ًبم گزاسي هٌبست هشغیشّب سا فشاهَش ًىٌیذ‬
‫خغَظ سَاثغ ٍ هشغییش ّبي اغلی ثشًبهِ سبى ‪ .‬وبهٌز گزاسي خضٍ ًوشُ اي اص ّش سَال اسز ‪.‬‬
‫ثِ اصاي ّش سٍص سبخیش دس اسسبل ثشًبهِ ّب ‪ %20 ،‬اص ًوشُ ي ايي سوشيي وبسشِ خَاّذ ضذ ‪.‬‬
‫ثِ ثشًبهِّبي هطبثِ ثِ هیضاى ًوشُ سَال‪ً ،‬وشُ هٌفی سؼلك خَاّذ گشفز ‪.‬‬
‫‪ ‬ثشاي سَاالر ‪ً 2ٍ1‬یبصي ثِ فشسشبدى سبثغ ‪ً main‬یسز‪.‬‬
‫‪ّ ‬ش گًَِ سَال دس هَسد سوشيٌبر سا ثب ػٌَاى ]‪ assignment#2_question[x‬وِ ]‪ [x‬ضوبسُ هسئلِ ي‬
‫هَسد ًظش اسز‪ ،‬ثِ آدسس ‪ [email protected]‬اسسبل وٌیذ‪.‬‬
‫‪ ‬هَفك ثبضیذ‪.‬‬
‫‪1‬‬
‫‪Folder, Directory‬‬
‫‪zip‬‬
‫‪3‬‬
‫‪Subject‬‬
‫‪2‬‬
‫نام فایل های برنامه‪:‬‬
‫‪Student.h,Student.cpp,Course.h,Course.cpp‬‬
‫دس ايي سوشيي لشاس اسز ثشًبهِ اي ثشاي اًدبم ػولیبر ًوشُ دّی يه دسس سا دیبدُ سبصي وٌیذ ‪ .‬ثشاي ايي هٌظَس‬
‫دٍ والس ‪ Student ٍ Course‬سا ثب هطخػبر صيش دیبدُ سبصي وٌیذ ‪.‬‬
‫والس ‪ Student‬هطخػبر يه داًطدَ سا ًگِ هی داسد ‪ .‬فیلذّبي ايي والس ػجبسر اًذ اص ‪:‬‬
‫والس ‪ Course‬اعالػبر هشثَط ثِ يه دسس دس يه سشم سا ًگِ هی داسد ‪ .‬ايي اعالػبر ضبهل هَاسد صيش اسز ‪:‬‬
‫‪ .1‬ثشاي والس ّب ‪ Copy Constructor ٍ Destructor ، Constructor‬هٌبست ثٌَيسیذ‪ .‬سَخِ‬
‫وٌیذ وِ ًیبصي ثِ دیبدُ سبصي سبصًذُ ي دیص فشؼ ًیسز ‪.‬‬
‫‪ .2‬ثشاي فیلذّبيی وِ الصم اسز‪ ،‬سَاثغ دسششسی ( ‪ )getter & setter‬دیبدُ سبصي وٌیذ‪.‬دلز وٌیذ‬
‫ثشاي ثشخی اص فیلذ ّب ًجبيذ سبثغ ‪ setter‬دیبدُ سبصي ضَد‪ .‬ثشخی اص فیلذّب ّن اسبسب ًیبصي ثِ سَاثغ‬
‫‪ً setter ٍ getter‬ذاسًذ‪.‬سطخیع ايي هسئلِ (وِ ثِ ًَػی هیضاى دسن ضوب اص ضی گشايی سا ًطبى‬
‫هی دّذ) ثخطی اص ًوشُ ي ايي سوشيي اسز ‪.‬‬
‫‪ .3‬سبثؼی ثشاي اضبفِ وشدى يه حل سوشيي ثِ حل سوشيي ّبي دسس ثٌَيسیذ ‪ .‬سَخِ وٌیذ وِ يه داًطدَ‬
‫ًجبيذ چٌذ ثبس ثِ ػٌَاى حل سوشيي اضبفِ ضَد ‪ .‬ثِ ػٌَاى خشٍخی اضبفِ ضذى (‪ )true‬يب ًطذى(‪)false‬‬
‫حل سوشيي سا ثشگشداًیذ ‪.‬‬
‫;)‪bool addTA(Student ta‬‬
‫‪ .4‬سبثؼی ثشاي اضبفِ وشدى يه داًطدَ ثِ داًطدَيبى دسس دیبدُ سبصي وٌیذ ‪.‬سَخِ وٌیذ وِ يه داًطدَ‬
‫ًجبيذ چٌذ ثبس اضبفِ ضَد ‪.‬ثِ ػٌَاى خشٍخی اضبفِ ضذى (‪ )true‬يب ًطذى(‪ )false‬داًطدَ سا‬
‫ثشگشداًیذ‪.‬همذاس ًوشُ ي داًطدَ دس ٌّگبم اضبفِ ضذى ثشاثش ‪ 0‬اسز‪.‬‬
‫;)‪bool addStudent(Student student‬‬
‫‪ .5‬سَاثغ صيش سا دیبدُ سبصي وٌیذ ‪:‬‬
‫;)‪Student getTAByStudentNumber(int studentNumber‬‬
‫;)‪Student getStudentByStudentNumber(int studentNumber‬‬
‫;)(‪double average‬‬
‫;)(‪double maximum‬‬
‫;)(‪double minimum‬‬
‫;)(‪int numberOfFailedStudents‬‬
‫;)(‪vector<Student> failedStudents‬‬
‫نام فایل های برنامه‪:‬‬
‫‪HugeInteger.h , HugeInteger.cpp‬‬
‫والس ‪ HugeInteger‬سا دیبدُ سبصي وٌیذ ثِ گًَِ اي وِ اص يه آسايِ ي ‪ 40‬سبيی ثشاي رخیشُ ي اػذاد‬
‫‪ integer 40‬سلوی اسشفبدُ وٌذ‪.‬‬
‫سبثغ ّبي ػذدي ‪modulus ٍ devide ٍ multiply ٍ subtract ،add ،output ،input‬سا دیبدُ‬
‫سبصي وٌیذ‪.‬‬
‫ثشاي همبيسِ ي ‪ّ object‬بي هخشلف ايي والس سبثغ ّبي ‪،isNoEqualTo ،isEqualTo‬‬
‫‪ٍ isGreaterThanOrEqualTo ،isLessThan ،isGreaterThan‬‬
‫‪ isLessThanOrEqualTo‬سا دیبدُ سبصي وٌیذ‪ .‬وِ ‪ return type‬آى ّب اص ًَع ‪ bool‬اسز‪.‬‬
‫ّوچٌیي سبثغ ‪ isZero‬سا ثب خشٍخی ‪ bool‬دیبدُ سبصي وٌیذ‪.‬‬
‫‪ ‬سَضیح دسثبسُ ي ايي سوشيي دس والس حل سوشيي دادُ ضذُ اسز ‪ .‬ثشاي ساٌّوبيی دسثبسُ ي ًحَُ ي‬
‫دیبدُ سبصي ‪ ،‬اساليذ لشاس دادُ ضذُ دس گشٍُ سا ثجیٌیذ ‪.‬‬
‫نام فایل های برنامه‪:‬‬
‫‪main.cpp, puzzle.cpp , puzzle.h‬‬
‫دُ سبل دیص دس چٌیي هبّی ‪ ،‬وشيسشَفش هبًىشَى ‪ ،‬يه هطشبق دبصل اًگلیسی ‪ ،‬خبيضُ اي يه هیلیَى دًَذي‬
‫ثشاي حل يه دبصل دیطٌْبد وشد‪.‬ايي خبيضُ يه سبل ثؼذ سَسظ دٍ سيبضی داى دس ووجشيح دسيبفز ضذ وِ دبصل‬
‫سا ثِ ووه يه وبهذیَسش حل وشدُ ثَدًذ‪ .‬دس خَالي ‪ 2007‬هبًىشَى دبصل ضوبسُ ‪ 2‬سا ثب خبيضُ اي هؼبدل ‪2‬‬
‫هیلیَى دًَذ سٍ ًوبيی وشدوِ ثِ ًظش غیش لبثل حل هی آيذ‬
‫دس حبلی وِ حل وبهل ايي دبصل ثِ سخشی ثشاي ضوب هوىي اسز ‪ ،‬هی سَاًیذ ثشًبهِ اي ثٌَيسیذ وِ يه ًوًَِ‬
‫سبدُ ايي دبصل سا حل نًذ ‪.‬‬
‫ٍسٍدي ثشًبهِ هدوَػِ اي اص لغؼبر هثال ثِ ضىل صيش اسز ‪:‬‬
‫ّذف آى اسز وِ ثجیٌیذ وِ آيب ايي لغؼبر دسٍى خؼجِ اي عَل ٍ ػشؼ دادُ ضذُ وِ ضشيجی غحیح اص عَل ٍ‬
‫ػشؼ لغؼبر اسز لشاس هی گیشًذ يب خیش‪.‬چَى لغؼبر ‪ّ ET ٍ TY‬ش دٍ داساي يه ٍخِ غبف ّسشٌذ ٍاضح‬
‫اسز وِ ايي ّب ثبيذ دس اثشذا ٍ اًشْبي خؼجِ ثبضٌذ ‪.‬‬
‫ثب ووی دلز هشَخِ هی ضَيذ وِ لغؼبر ‪ ER ٍ ET‬ثِ خَثی ثِ ّن خفز هی ضًَذ ‪.‬‬
‫دس ًگبُ اٍل ثِ ًظش هی آيذ وِ خبيی ثشاي لغؼِ ‪ً IN‬یسز ‪ٍ .‬لی ايي يه دبصل اسز ٍ هی سَاى لغؼبر آى سا‬
‫ًین دٍس چشخبًذ ‪.‬‬
‫دس اص لشاس دادى ّوِ لغؼبر دس هسشغیل ثِ غَسر صيش هی ضَد ‪:‬‬
‫ثشاي سجذيل ايي سٍال ثِ يه هسئلِ ثشًبهِ ًَيسی‪،‬ضوب ثبيذ ‪، interface‬‬
‫‪ puzzle.h‬سا دیبدُ سبصي وٌیذ وِ والس ‪ PuzzlePiece,‬سا سؼشيف هی وٌذ‪.‬‬
‫وِ اػضبي ‪ private‬آى ّسشٌذ‪:‬‬
‫;‪int left‬‬
‫;‪int right‬‬
‫;‪int up‬‬
‫;‪int down‬‬
‫;‪string name‬‬
‫اگش ضلؼی غبف ثبضذ ػذد آى ‪ 0‬اسز‪.‬‬
‫ٍ داساي سَاثغ صيش هی ثبضذ ‪.‬‬
‫;)‪bool attachesTo(PuzzlePiece & p‬‬
‫;)(‪bool hasFlatLeftSide‬‬
‫;)(‪bool hasFlatRightSide‬‬
‫;)(‪bool hasFlatUpSide‬‬
‫;)(‪bool hasFlatDownSide‬‬
‫;)‪PuzzlePiece flip(int angle‬‬
‫سبثغ ‪ ، attachesTo‬اگش لغؼِ فشاخَاًذُ ثب لغؼِ ‪ p‬خفز ضَد همذاس ‪ true‬ثشهیگشداًذ‪.‬فشؼ وٌیذ‬
‫وِ لغؼبر دس خْز دّی خبسي خَد ّسشٌذ ‪ .‬ثِ ػٌَاى هثبل فشؼ وٌیذ لغؼبر ضبهل حشٍف ‪ET ,‬‬
‫ٍ ‪ ER‬دس ضىل ثبال ‪ ،‬داساي ًبم ّبي ‪ّ pER ٍ pET‬سشٌذ ‪ .‬فشاخَاًی‬
‫)‪ pET.attachesTo(pER‬همذاس ‪ true‬سا ثشهی گشداًذ‪.‬‬
‫سبثغ ‪ّ hasFlatLeftSide‬وبى عَس وِ اص ًبم آى هؼلَم اسز اگش ثشَاًذ دس سوز چخ خؼجِ لشاس‬
‫گیشد همذاس ‪ true‬ثشهیگشداًذ ‪ .‬هثال )(‪ pET.hasFlatLeftSide‬همذاس ‪ true‬هی دّذ دس حبلی‬
‫وِ )(‪ pER.hasFlatLeftSide‬همذاس ‪. false‬‬
‫ن ‪ angle‬دسخِ چشخبًذُ ضذُ اسز ‪.‬‬
‫سبثغ ‪ flip‬يه ‪ PuzzlePiece‬ضجیِ اٍلیِ ثشهی گشداًذ ُ‬
‫(‪ angle‬هی سَاًذ ‪ 270 ٍ90 ،180‬دسخِ ثبضذ ‪).‬فشاخَاًی آى ثشاي لغؼِ اي وِ سضشِ ي آى ‪ IN‬اسز‬
‫ثب صاٍيِ ي ‪ 180‬دسخِ ثِ غَسر صيش هی ثبضذ ‪:‬‬
‫سبثغ‬
‫;)‪string PuzzleIsSolvable(vector <PuzzlePiece> & puzzle‬‬
‫سا دس ‪ main‬دیبدُ سبصي وٌیذ وِ يه ‪ vector‬اص لغؼبر سا هی گیشد ٍ آى سا دس خؼجِ ثِ عَل ‪ٍ m‬‬
‫ػشؼ ‪ n‬هی چیٌذ‪ .‬دس غَسسی وِ لبدس ثِ ايي وبس ثبضذ سضشِ ي ايدبد ضذُ سا دس خشٍخی چبح هی وٌذ )سضشِ‬
‫ثب حشوز اص سوز چخ ثبالي خؼجِ ضشٍع ثِ سوز ساسز هی آيذ ٍ سذس سىشاس آى ثشاي سغش ّبي ثؼذ ( ثِ‬
‫ضىل صيش ثشاي يبفشي هسیس چبح خشٍخی ًگبُ وٌیذ ‪ ٍ ):‬دس غیش ايي غَسر ”‪ “no solve‬سا ثش هی گشداًذ‪.‬‬
‫خشٍخی‬
‫‪:‬‬
‫ًحَُ ي ٍسٍدي ٍ‬
‫دس سغش اٍل ٍ دٍم همذاس عَل ٍ ػشؼ خؼجِ دادُ هی ضَد ‪.‬‬
‫سذس ثِ سشسیت ًبم سضشِ ي دسٍى آى ّب ‪ ,‬همبديش سوز چخ ؛ثبال ‪ ،‬ساسز ؛ دبيیي لغؼبر دادُ هی ضَد‪.‬‬
‫ضشط خشٍج ٍاسد وشدى ‪ -1‬اسز‪.‬‬
‫**وٌبس ّبي غبف حشوب داساي ػذد ‪ّ 0‬سشٌذ‪.‬‬
‫ثِ هثبل صيش سَخِ وٌیذ ‪:‬‬
‫‪Input:‬‬
‫‪2‬‬
‫‪2‬‬
‫‪OK‬‬
‫‪5‬‬
‫‪4‬‬
‫‪0‬‬
‫‪0‬‬
‫‪TH‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪2‬‬
‫‪BO‬‬
‫‪0‬‬
‫‪2‬‬
‫‪5‬‬
‫‪0‬‬
‫‪IS‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪4‬‬
‫‪-1‬‬
‫‪Output:‬‬
‫‪THISBOOK‬‬
‫وِ ضىل آى ثِ ايي غَسر هی ثبضذ ‪.‬‬
‫وٌیذ‬
‫ثِ هَاسد صيش سَخِ ‪:‬‬
‫‪ ‬ثشاي سَاالر ‪ 2 ٍ1‬فمظ فبيل ّبي گفشِ ضذُ سا ثفشسشیذ ‪ .‬ثشاي سسز ثشًبهِ سبى ‪ٍ main‬احذي ثشاي‬
‫ّوِ ي ثشًبهِ ّب ًَضشِ هی ضَد ‪.‬‬
‫‪ ‬سػبيز ضی گشايی دس ّش ‪ 3‬سَال الضاهی ‪ ،‬فبيل ّب ثبيذ ‪ .h ٍ .cpp‬ثبضٌذ ‪ .‬لشاس دادى سغح دسششسی‬
‫هٌبست ثِ اػضبي والس داساي ًوشُ اسز‪.‬‬
‫‪ ‬ثشاي سَال ‪ 3‬ثِ دلیل آى وِ ًوًَِ ٍسٍدي ٍ خشٍخی سا دادُ اين ‪ main‬سا ًَضشِ ٍ ّوشاُ سَال‬
‫اسسبل وٌیذ‪.‬‬
‫‪ ‬دس سَاالر ‪ 3 ٍ1‬گفشِ ضذُ اسز وِ اص ‪ map ٍ vector‬اسشفبدُ ضَد‪ .‬ايي دٍ فمظ خْز آسبى‬
‫سش ضذى وبس ضوب ّسشٌذ ٍ سوشوض اغلی سَاالر ثش هفَْم ضی گشايی اسز ‪.‬‬
‫‪ ‬ثشاي سَضیح هشثَط ثِ دٍ ‪ STL‬يبد ضذُ ثِ هشاخغ صيش سخَع وٌیذ ٍ دس غَسر اضىبل حشوب ثذشسیذ ‪.‬‬
‫(دسهَسد ‪ vector‬دس حل سوشيي ايي ّفشِ غحجز ضذ ‪ّ map ٍ .‬ن دس خلسِ ثؼذ سَضیح دادُ‬
‫هی ضَد)‬
‫‪Vector:‬‬
‫‪http://www.cplusplus.com/reference/stl/vector/‬‬
‫وشبة ‪:‬‬
‫])‪[Page 372 (continued‬‬
‫‪7.11. Introduction to C++ Standard Library Class Template‬‬
‫‪Map:‬‬
‫‪http://www.cplusplus.com/reference/stl/map/‬‬
‫وشبة ‪:‬‬
‫]‪[Page 1147‬‬
‫‪Figure 23.22. Standard Library map class template.‬‬