Pascal_hw3.pdf

‫هوالعلیم‬
‫مبانی برنامهسازی (‪)40151‬‬
‫)‪Fundamentals of Programming (Pascal‬‬
‫دانشگاه صنعتی‬
‫شریف‬
‫تمرین سری ‪3‬‬
‫دانشکده مهندسی کامپیوتر‬
‫مدرس‪ :‬صادق دری نوگورانی‬
‫مهلت ارسال تمرین‪:‬جمعه‪ 5 ،‬خرداد‬
‫توضیحات اولیه‬
‫‪ ‬آخرین مهلت تحویل تمرین سوم‪ ،‬ساعت ‪ 95:52‬روز جمعه‪ 5 ،‬خرداد ‪ 1521‬می باشد‪.‬‬
‫‪ ‬تمرین به صورت انفرادی میباشد‪.‬‬
‫‪ ‬بعد از نوشتن تمرینها‪ ،‬فایلهای ‪ .pas‬تمرین خود را در یک فولدر با نام ‪ HW3_STDID‬قرار دهید‪.‬‬
‫(‪ STDID‬شماره دانشجویی شما می باشد)‪ .‬این فولدر را ‪ zip‬کنید‪ .‬فایل فشرده شده را به آدرس‬
‫‪ hw.pascal.s90@gmail.com‬ارسال نمایید‪( .‬از فرستادن جواب تمرین به گروه پستی‬
‫جدا خودداری کنید)‬
‫‪ ‬عنوان ایمیل باید به صورت ‪ HW3_STDID‬باشد‪ .‬که ‪ STDID‬شماره دانشجویی شما می باشد‪.‬‬
‫‪ ‬فرستادن کل یا قسمتی از برنامه تان برای افراد دیگر‪ ،‬یا استفاده از کل یا قسمتی از برنامه فردی دیگر‬
‫به نام خود‪ ،‬تقلب محسوب میشود‪.‬‬
‫‪ ‬در صورت مشاهده تقلب‪ ،‬به میزان نمره سوال‪ ،‬نمره منفی تعلق خواهد گرفت‪ ( .‬یعنی اگر نمره سوال‬
‫‪ 92‬نمره بود‪ ،‬نمره ‪ -92‬برای هر ‪ 9‬نفر منظور خواهد شد) در صورتی که در ‪ 9‬سوال از یک تمرین تقلب‬
‫علمی مشاهده شود‪ ،‬نمره تمرین هر ‪ 9‬نفر‪ ،‬صفر خواهد شد‪ .‬پس لطفا کپ نزنید!‬
‫‪ ‬پس از اتمام زمان ارسال تمرین‪ ،‬تا ‪ 4‬روز می توانید تمرین خود را ارسال کنید‪ .‬هر روز تاخیر در ارسال‬
‫برنامه‪ %92 ،‬از نمره شما کسر خواهد شد‪.‬‬
‫‪ ‬اگر هر گونه ابهام یا مشکل در مورد تمرین داشتید که فکر میکنید پاسخ آن برای همه مفید خواهد‬
‫بود‪ ،‬لطفا آن را به گروه پستی درس ارسال کنید‪ .‬در غیر این صورت به آدرس‬
‫‪ saeid.barati157@gmail.com‬بفرستید‪.‬‬
‫‪1‬‬
‫تمرین های عملی‬
‫‪( -1‬رشته ها) برنامه ای بنویسید که دو رشته را به عنوان پارامتر بگیرد و طول بزرگترین زیر رشته مشترک‬
‫آنها را برگرداند‪ .‬در صورتی که زیررشته مشترک وجود نداشت‪ ،‬با پیغام مناسبی در خروجی اطالع دهد‪.‬‬
‫به این منظور یک تابع کمکی بنویسید که بررسی کند که آیا زیر رشته مشترکی به طول مشخص ‪ Len‬بین دو‬
‫رشته وجود دارد یا خیر (اگر وجود دارد ‪ True‬و در غیر این صورت ‪ False‬برگرداند)‪ .‬سپس با‬
‫فراخوانیهای این تابع به صورت مناسب برنامه اصلی را بنویسید‪ 55( .‬نمره)‬
‫نحوه تعریف تابع کمکی (‪ )TestSubs‬و تابع اصلی (‪ )LongestSub‬باید به صورت زیر باشد‪:‬‬
‫;‪Function TestSubs(s1,s2: String; Len: Integer): Boolean‬‬
‫;‪Function LongestSub(s1,s2: String): Integer‬‬
‫ورودی نمونه‬
‫خروجی صحیح‬
‫‪cde‬‬
‫‪abcdescdeFK12‬‬
‫‪12cdeftu‬‬
‫‪hellooo‬‬
‫‪h‬‬
‫!‪There was no common substring‬‬
‫‪Qwertyuio‬‬
‫‪Abc‬‬
‫‪h‬‬
‫‪(-9‬فایل متنی) برنامه ای بنویسید که یک متن را از فایل متنی ‪ abstract.txt‬بخواند‪ .‬سپس ‪ 5‬کلمه را که‬
‫بیش از ‪ 5‬حرف دارند و بیشتر از سایر کلمات تکرار شده اند‪ ،‬در خروجی چاپ کند‪ .‬در ادامه درصد حضور هر‬
‫یک کلمات را به تفکیک در خروجی بنویسد‪ 15( .‬نمره)‬
‫‪( -5‬رکورد)برنامه ای بنویسید که ابتدا عدد ‪ n‬را از ورودی دریافت کند‪ .‬سپس اطالعات مربوط به ‪ n‬دانشجو را‬
‫در قالب زیر دریافت کند‪:‬‬
‫>‪<stdID> <name> <GPA‬‬
‫‪ ‬شماره دانشجویی‬
‫‪9‬‬
‫‪ ‬نام خانوادگی دانشجو ( یک کلمه است و الزاما با حرف بزرگ آغاز میشود)‬
‫‪ ‬معدل دانشجو‬
‫سپس در آخرین خط ورودی‪ ،‬یکی از سه کلمه زیر را دریافت کند‪.‬‬
‫‪ : name ‬بر اساس نام دانشجو ‪ ،‬مرتب کند‪.‬‬
‫‪ : avg ‬بر اساس معدل ‪ ،‬مرتب کند‪.‬‬
‫‪ : id ‬بر اساس شماره دانشجویی مرتب کند‪.‬‬
‫در خروجی‪ ،‬مرتب شده داده ها را از کوچک به بزرگ در ‪ n‬سطر چاپ کند‪ 92( .‬نمره)‬
‫خروجی صحیح‬
‫‪89101352 Ahmadi 18.52‬‬
‫‪85110772 Hesami 13.25‬‬
‫‪88100678 Mohammadi 16.30‬‬
‫‪90102979 Nabavi 19.51‬‬
‫‪87106191 Sobhani 17.01‬‬
‫ورودی نمونه‬
‫‪5‬‬
‫‪89101352 Ahmadi 18.52‬‬
‫‪88100678 Mohammadi 16.30‬‬
‫‪87106191 Sobhani 17.01‬‬
‫‪90102979 Nabavi 19.51‬‬
‫‪85110772 Hesami 13.25‬‬
‫‪name‬‬
‫‪( -4‬رشته‪+‬فایل متنی‪+‬فایل باینری) یک فایل متنی به نام ‪ Result.txt‬در دایرکتوری جاری داریم کمه در همر‬
‫خط آن نتیجه یک بازی به صورتی که در زیر آمده نوشته شده است ‪:‬‬
‫‪RealMadrid 2-2 barcelona‬‬
‫برنامه ی شما باید یک فایل باینری به نام ‪ Table.dat‬از رکوردی شامل فیلد های نام تی ‪،‬تعداد بازی‪ ،‬امتیماز و‬
‫تفاضل گل بسازد و اطالعات همه تیمهای موجود در فایل متنی را در فایل باینری قرار دهد‪( .‬توجه ‪ :‬در هر خط‬
‫ابتدا نام یک تی سپس یک فاصله و بعد از آن نتیجه بازی بصورت دو عدد که با یک ''‪ ''-‬از ه جدا شده انمد و‬
‫سپس یک فاصله دیگر و در نهایت نام تی دوم نوشته شده است‪.‬نام تی ها و نتیجه فاقد فاصله است‪).‬‬
‫سپس فایل باینری را به ترتیب امتیاز و در صورت برابری امتیازها به ترتیب تفاضل گل مرتب کنیمد و اطالعمات‬
‫فایل مرتب شده را روی صفحه نمایش دهید‪ 52( .‬نمره)‬
‫‪5‬‬