نمونه سوال امتحان ترم دانشگاه صنعتی شریف
وبلاگ اختصاصی تیزهوش های ایران
جایی برای همه عاشقان دانستن
درباره وبلاگ


هراسان می نگرم ... چشمایم نگران ... راههای صعب العبورش مانده ... شاید اینجا آخر غمنامه ی من بود اما ... کسی بود که راه نمایانم کرد ... نگفت کیست ... اما مهربان بود سرشتش جدا از دیگران بود ... این آدینه روز باز به آن غمگاه خواهم رفت ... شاید او بیاید ... شاید این جمعه بیاید شاید پرده از چهره گشاید شاید ... به وبلاگ اختصاصی «تیزهوش های ایران» خوش آمدید. قابل توجه تمام کابران محترم که این وب از هرگونه حرکات غیر اخلاقی و سیاسی و اعمال مخالف قوانین شرعی و ملی جمهوری اسلامی ایران مبراست و متعلق به گروه خاصی نمیباشد بلکه یک وبگاه علمی-فرهنگی-هنری است و در خدمت تیزهوشهای ایرانی. همچنین مدیریت وبلاگ هیچگونه مسئولیتی در قبال مطالب دیگر نویسندگان نخواهد داشت. در صورت مشاهده تخلف آنرا گزارش دهید. ==> کاری از گروه ارتباطات کلاس 101 سمپاد آمل
آخرین مطالب
نويسندگان
2 خرداد 1389برچسب:, :: 10:43 قبل از ظهر :: نويسنده : مدیر وبلاگ
 
يا جميل
دانشگاه صنعتي شريف دانشکده مهندسي کامپيوتر
برنامه نويسي پاسکال
دوشنبه 26 دي 1384                  امتحان پايان ترم                           وقت: 2 ساعت
 
دانشجويان عزيز: ضمن آرزوي موفقيت براي شما در اين آزمون و در تمام آزمونهاي زندگي، خواهشمند است از سه سوال زير به دلخواه به دو سوال پاسخ گوييد. براي هر قسمت توضيحات کامل و دقيق بنويسيد. استفاده از نام مناسب براي متغيرها، استفاده از فرورفتگي کد، استفاده از توابع و رويه ها و رکوردهاي مناسب و خوانايي برنامه ها هم حائز اهميت است.
 
سوال اول: مجموعه توابع و رويه هاي  رشته اي
 
زبان پاسکال توابعي و رويه هايي دارد که مي توان با استفاده از آن ها بر روي رشته ها اعمال مختلفي انجام داد. مثلا تابع Concat دو رشته را دريافت مي کند، رشته دوم را به انتهاي رشته اول اضافه مي کند و رشته حاصل را به عنوان خروجي مي دهد. شما مي بايست اين توابع و رويه ها را پياده سازي کنيد. در پياده سازي اين توابع و رويه ها مجاز نيستيد از ساير توابع رشته اي پاسکال استفاده کنيد. مثلا تابع Concat به صورت زير قابل پياده سازي است:
function Concat(a, b: String): String;
begin
      a := a + b;
      Concat := a;
end;
  1. رويه Val: پارامترهاي اين رويه رشته a، و دو عدد صحيح b و c هستند. رشته a بايد نمايش رشته اي يک عدد صحيح باشد مثلا ‘125’ . اين رويه رشته a را به عدد b تبديل مي کند. يعني مثلا پس از اجراي اين رويه b برابر 125 و c به علامت عدم وجود خطا برابر 0 خواهد بود. اگر رشته a حاوي يک عدد صحيح نبود مثلا ‘1@25A’ يا ‘1.25’ ، پس از اجراي تابع مقدار b برابر 0 و مقدار c که نشان دهنده خطا است برابر 1 خواهد بود.
  2. رويه Str: پارامترهاي اين رويه عدد صحيح a و رشته b هستند. اين تابع نمايش رشته اي عدد موجود در متغير a را در b مي ريزد. مثلا اگر a برابر 27 باشد مقدار b پس از اجراي رويه ‘27’ خواهد بود.
  3. تابع Copy: پارامترهاي ورودي آن رشته a و اعداد صحيح b و c هستند. خروجي اين تابع حداکثر c کاراکتر پشت سرهم از a با شروع از کاراکتر شماره b است. مثلا مقدار خروجي Copy(‘Umbrella’, 3, 2) برابر ‘br’ است. شما بايد حالتهايي که تعداد کاراکتر لازم در a موجود نباشد را هم در نظر بگيريد. مثلا Copy(‘Umbrella’, 8, 2) برابر ‘a’ خواهد بود.
  4. تابع Pos: اين تابع دو رشته a و b را مي گيرد و در صورتي که رشته b به طور کامل در a آمده باشد اولين مکاني که b در a شروع مي گردد را به عنوان خروجي بر مي گرداند. مثلا Pos(‘Umbrella’, ‘ll’) برابر 6 خواهد بود، چرا که رشته ‘ll’ در کاراکتر ششم به بعد a آمده است. اگر a حاوي b نباشد تابع 0 را بر مي گرداند. مثلا Pos(‘Umbrella’, ‘llb’) برابر 0 است. همچنين اگر b چند بار در a ظاهر شده باشد اولين مکان شروع مورد نظر است. مثلا Pos(‘OneTwoThreeTwo’, ‘Two’) برابر 4 است.
  5. تابع LowerCase: اين تابع يک رشته a را به عنوان ورودي گرفته و عينا همان را بر مي گرداند با اين تفاوت که تمام حروف بزرگ انگليسي a را به حروف کوچک مبدل مي کند. مثلا LowerCase(‘admin@YAHOO.COM’) برابر ‘admin@yahoo.com’ خواهد بود.
 
سوال دوم: سيستم ثبت نام آموزشگاه
 
يک آموزشگاه خصوصي از شما خواسته است يک سيستم ثبت نام و درج نمرات دانش آموزانش را به وجود آوريد. اين آموزشگاه حداکثر 100 دانش آموز دارد که در هنگام ثبت نام علاوه بر نام و فاميل، شماره شناسنامه، سن و آدرس منزل وي را هم ثبت مي کند. علاوه بر اين به هر دانش آموز يک شماره شناسه (شبيه شماره دانشجويي) تخصيص داده مي شود. ليستي از دروس (حداکثر 20 درس) در اين آموزشگاه ارائه مي گردد. اطلاعات هر درس شامل  نام درس، نام و فاميل استاد است. هر دانش آموز مي تواند بعضي از دروس را بگذراند و نمره اي از آن درس دريافت کند. حال شما بايد اين سيستم را پياده سازي کنيد. اين سيستم بايد چند گزينه داشته باشد:
  • افزودن يک دانش آموز جديد: اين کار با فشردن دکمه S و زدن Enter انجام مي پذيرد. در اين دستور بايد تمامي اطلاعات و شناسه دانش آموز جديد را دريافت کند و به سيستم بيفزايد. يک دانش آموز در هيچ درسي نمره ندارد.
  • افزودن يک درس جديد: اين کار با فشردن دکمه C انجام مي گيرد. در اين قسمت هم اطلاعات درس وارد مي شود.
  • يافتن شناسه يک دانش آموز: اين کار با دستور F انجام مي گيرد: سيستم نام و فاميل دانش آموز را مي پرسد و شماره شناسه دانش آموز را نمايش مي دهد.
  • يافتن شناسه يک درس: اين کار با دستور L انجام مي گيرد. شناسه درس بر اساس نام درس جستجو مي گردد.
  • درج نمره يک دانش آموز: سيستم با دريافت شناسه دانش آموز و شناسه درس و نمره ، اطلاعات را به سيستم مي افزايد. اين کار با کليد M انجام مي گيرد.
  • نمايش وضعيت يک دانش آموز: اين کار با کليد D انجام مي گيرد. پس از گرفتن شناسه، علاوه نمايش اطلاعات آن دانش آموز، ريز نمرات و معدل وي هم اعلام مي گردد. ريز نمرات يک جدول است که در هر سطر آن شناسه درس، نام درس و نمره دانش آموز در آن درس آمده است.
  • ذخيره اطلاعات در فايل: اين کار با دستور W انجام مي پذيرد. پس از فشردن اين کليد در فايل Students.txt اطلاعات مربوط به دانش آموزان ذخيره مي شود. در هر سطر Students.txt ابتدا شناسه و سپس نام، نام خانوادگي، شماره شناسنامه، سن و آدرس دانش آموز نوشته مي شود.
  • خروج: اين کار با فشردن E انجام مي گيرد.
 
سوال سوم: نقطه بازي
 
مي خواهيد با دوستتان نقطه بازي کنيد. دوست شما تعدادي نقطه روي محور حقيقي x ها مي گذارد. شما بايد کمترين تعداد پاره خط به طول 1 روي محور رسم کنيد طوري که هر نقطه دوست شما روي حداقل يکي از اين پاره خط ها قرار گيرد. مثلا فرض کنيد دوست شما 10 نقطه به مختص x زير را مشخص کرده است:
3.25, 2.5, 3.0, 5.1, 2.77, 6.0, 5.3, 8.0, 2.56, 8.1
کافي است شما سه پاره خط به طول يک با بازه هاي زير رسم کنيد تا همه نقاط درون اين بازه ها قرار بگيرند:
[2.5, 3.5]     [5.1, 6.1]      [8.0, 9.0]
واضح است اين کار را با تعداد کمتري پاره خط نمي توان انجام داد. ابتدا يک راه حل خوب براي مساله ارائه دهيد، سپس يک الگوريتم دقيق و مشخص براي اين بازي ارائه دهيد و بعد بر اساس الگوريتم خود برنامه اي بنويسيد که با دريافت تعداد و سپس مختص x نقاط، بازه هاي يافته شده را به صورت بالا نمايش دهد. فرض کنيد حداکثر 1000 نقطه داده مي شود.
موفق و پيروز باشيد

نظرات شما عزیزان:

ugd
ساعت11:45---19 آبان 1391


نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:





پيوندها


ورود اعضا:


نام :
وب :
پیام :
2+2=:
(Refresh)

خبرنامه وب سایت:

برای ثبت نام در خبرنامه ایمیل خود را وارد نمایید




آمار وب سایت:
 

بازدید امروز : 47
بازدید دیروز : 79
بازدید هفته : 270
بازدید ماه : 268
بازدید کل : 200548
تعداد مطالب : 57
تعداد نظرات : 24
تعداد آنلاین : 1