اخبار و اطلاعات مربوط به دروس

در این وبلاگ مباحث مرتبط با دروس تدریسی توسط اینجانب پیگیری می شود.

اخبار و اطلاعات مربوط به دروس

در این وبلاگ مباحث مرتبط با دروس تدریسی توسط اینجانب پیگیری می شود.

هدیه ای از طرف دانشجویان
Mbt925.ir

۷۶ مطلب با موضوع «دانشگاه صنعتی شاهرود» ثبت شده است

۱۷
فروردين

برنامه ای بنویسید که بازی زیر را پیاده سازی کند.

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

  • یک آرایه یک بعدی از خانه ها که به ترتیب از 1 تا طول صفحه بازی شماره گذاری شده اند. بعضی از صفحات دارای طول 15 و بعضی دارای طول 16 می باشند.
  • هر صفحه بازی دارای یک موقعیت جاری است که بصورت پیشفرض برابر با خانه 1 می باشد.
  • هر صفحه بازی دارای سه تابع moveLeft، moveRight و printCurrentPosition است.
  • هر صفحه بازی دارای یک طول گام است. طول گام مشخص می کند که اندازه حرکت به راست/چپ چقدر باشد (در شکل زیر طول گام ها قابل مشاهده اند)
  • توابع moveRight و moveLeft بر اساس شکل صفحه بازی حرکت می کنند که در تصویر مشخص شده است
  • تابع printCurrentPosition برای هر صفحه بازی اطلاعات متفاوتی را چاپ می کند:
    • صفحه بازی مستقیم: شماره خانه جاری
    • صفحه بازی چرخشی: شماره خانه جاری و یکی از مقادیر بالا، پایین، راست و چپ (برای خانه هایی که در تقاطع قرار دارند، فرقی نمی کند که بالا/پایین چاپ شود یا چپ/راست)
    • صفحه بازی رفت و برگشتی: شماره خانه جاری و شماره سطر (1، 2 یا 3)
    • صفحه بازی زیگ زاگ: شماره خانه جاری

بازی توسط کلاس Player انجام می شود. کلاس Player دارای مشخصات زیر است:

  • آرایه ای از 4 صفحه بازی از 4 نوع موجود
  • یک عدد تصادفی بین 1 تا 15 در شروع بازی تولید می شود. هر صفحه بازی که زودتر به این عدد برسد برنده است و بازی متوقف می شود.
  • عدد تصادفی تولید شده (هدف) چاپ می شود.
  • یک حلقه وظیفه انجام بازی را به عهده دارد. در هر دور از حلقه عملیات زیر انجام می شود:
    • یک عدد تصادفی بین 1 و 2 تولید می شود (1 یا 2).
    • در صورتی که عدد تصادفی 1 باشد، صفحه بازی جاری به سمت راست حرکت می کند و در صورتی که 2 باشد، به سمت چپ
    • موقعیت جاری صفحه بازی چاپ می شود (printCurrentPosition)
    • در صورتی که موقعیت جاری صفحه بازی برابر با عدد تصادفی تولید شده (قبل از حلقه) بود، صفحه جاری برنده است. پیغام برنده شدن این صفحه چاپ شده و از حلقه خارج می شویم
    • در غیر اینصورت، دور بعدی حلقه اجرا می شود

نکته ها:

  • در این تمرین رفتارها و حالت ها به صورت جداگانه بیان نشده اند. وظیفه تشخیص رفتارها و حالت ها به عهده شماست.
  • از یک کلاس صفحه بازی به عنوان پدر و چهار فرزند استفاده کنید.
  • از دوباره نویسی توابع و چندریختی در زمان مناسب استفاده کنید.
  • در صفحه های بازی، پس از رسیدن به انتهای صفحه بازی، به ابتدای آن برمی گردیم.
  • استفاده از توابع اضافی مجاز است.

ارسال تمرین:

  • فرصت ارسال این تمرین تا روز یکشنبه، 22 فروردین، ساعت 1:00 هست.
  • فرصت ارسال تمرین به هیچ عنوان تمدید نخواهد شد.
  • نحوه ارسال تمرین ها در این پست توضیح داده شده.
  • عنوان ایمیل: برنامه نویسی پیشرفته، نام دانشجو، عنوان تمرین
  • مثال: برنامه نویسی پیشرفته، علی بهرامی، تمرین ششم

روش تولید عدد تصادفی بین 1 و 10:

Random rnd= new Random();

int aRandomNumber= rnd.nextInt(10)+1;

System.out.println(aRandomNumber);



  • بیگلری
۰۵
فروردين

به عنوان عیدی من به دانشجوهای گل کلاس، راه حل تمرین پنجم رو می تونید در ادامه دریافت بفرمائید.

اگر اشکالی در برنامه دیدید، حتما بهم اطلاع بدید.

و اگر سوالی داشتید، در بخش نظرات بپرسید و یا ایمیل بزنید.

 راه حل تمرین پنجم

  • بیگلری
۲۲
اسفند

برنامه ای بنویسید که یک خانواده را پیاده سازی کند.

کلاس خانواده (Family) دارای ساختار زیر است:

  • حالت ها:
  • پدر از نوع انسان
  • مادر از نوع انسان
  • آرایه ای از فرزندها ([]Human) با طول ثابت 100
  • درجه ی خوشبختی/رضایت: عددی صحیح بین 1 تا 10
  • سطح درآمد: عددی صحیح بین 0 تا 100 میلیون
  • رفتارها:
  • setter و getter برای تنظیم و دریافت پدر، مادر، درجه ی رضایت و سطح درآمد
  • تابع print برای چاپ اطلاعات خانواده
  • تابع addChild: مشخصات فرزند را دریافت کرده و آن را به آرایه اضافه می کند
  • تابع removeChild: اندیس فرزند را دریافت کرده و آن را از آرایه حذف می کند
  • تابع printHappinessLevel: یکی از سه مقدار "Happy" (مقادیر 4 تا 7)،(مقادیر 1 تا 3) "Not Happy" و "HappyFull" (مقادیر 8 تا 10) را چاپ می کند.
  • تابع printIncomeLevel: یکی از چهار مقدار "Poor"،(مقادیر بین 1 میلیون تا 3 میلیون) "Average" (مقادیر کمتر از 1 میلیون)،(مقادیر بین 3 میلیون تا 10 میلیون) "Good" و "Very Good" (مقادیر بیشتر از 10 میلیون) را چاپ می کند.

کلاس انسان (Human) دارای ساختار زیر است:

  • حالت ها:
  • شماره ملی: رشته ای با طول دقیقا 10 (نه کمتر و نه بیشتر)
  • نام و نام خانوادگی
  • جنسیت: عددی صحیح بین 1 و 2 (1: زن، 2: مرد)
  • سن: عددی صحیح بین 0 تا 100
  • رفتارها:
  • تنها یک سازنده دارد که کد ملی را به عنوان ورودی دریافت می کند
  • setter و getter برای همه حالت ها
  • تابع print برای چاپ مشخصات انسان

منوی برنامه:

  • برنامه دارای یک منو با گزینه های زیر است:
  • 1: ایجاد یک خانواده جدید (در هر زمان تنها یک خانواده وجود دارد: در نتیجه ایجاد خانواده جدید، خانواده ی قبلی را از بین خواهد برد)
    • برای ایجاد خانواده اطلاعات زیر دریافت می شود
    • 1-1: درجه ی رضایت
    • 1-2: میزان درآمد
  • 2: تعیین پدر خانواده (پدر قبلی از بین خواهد رفت)
    • برای تعریف پدر اطلاعات زیر دریافت می شود:
    • 2-1: شماره ملی
    • 2-2: نام و نام خانوادگی پدر
    • 2-3: سن پدر
    • جنسیت پدر به صورت خودکار مقداردهی می شود (از ورودی دریافت نمی شود)
  • 3: تعیین مادر خانواده (مادر قبلی از بین خواهد رفت)
    • برای تعریف مادر اطلاعات زیر دریافت می شود:
    • 2-1: شماره ملی
    • 2-2: نام و نام خانوادگی مادر
    • 2-3: سن مادر
    • جنسیت مادر به صورت خودکار مقداردهی می شود (از ورودی دریافت نمی شود)
  • 4: اضافه کردن فرزند به خانواده
    • برای ایجاد یک فرزند اطلاعات زیر دریافت می شود:
    • 4-1: شماره ملی فرزند
    • 4-2: نام و نام خانوادگی فرزند
    • 4-3: سن فرزند
    • 4-4: جنسیت فرزند
  • 5: حذف فرزند ار خانواده
    • شماره ملی فرزند دریافت شده و در صورت وجود حذف می شود
  • 6: چاپ اطلاعات خانواده (شامل اعضای خانواده، درجه ی رضایت و سطح درآمد)
  • 7: خروج از برنامه

نکته ها:

  • همه توابع باید معتبر بودن ورودی را بررسی کنند. برای مثال تابع removeChild ابتدا بررسی می کند که آیا فرزندی با اندیس ورودی برای حذف کردن وجود دارد؟ و یا تابع setter مربوط به درجه ی رضایت خانواده، ابتدا بررسی می کند که مقدار ورودی در بازه 1 تا 10 قرار دارد یا خیر.
  • دو تابع printHappinessLevel و printIncomeLevel خصوصی هستند و تنها توسط تابع print مورد استفاده قرار می گیرند.
  • استفاده از ابزارهای خوانده نشده موجب کاهش نمره ی تمرین می گردد.
  • استفاده از توابع اضافی مجاز است.

ارسال تمرین:

  • فرصت ارسال این تمرین تا روز شنبه، 29 اسفند، ساعت 24 هست.
  • فرصت ارسال تمرین به هیچ عنوان تمدید نخواهد شد.
  • نحوه ارسال تمرین ها در این پست توضیح داده شده.
  • عنوان ایمیل: برنامه نویسی پیشرفته، نام دانشجو، عنوان تمرین
  • مثال: برنامه نویسی پیشرفته، علی بهرامی، تمرین پنجم

  • بیگلری
۱۶
اسفند

جدول مندلیف رو در خروجی چاپ کنید. 

نکته ها:

  • حتما باید از format و آرایه ها استفاده کنید.
  • رسم اعدادی که دور یک نمونه اش دایره رسم شده، لازم نیست.
  • ساختار خروجی باید به صورت تقریبی مشابه تصویر باشد.
  • رسم عنوان جدول بهمون شکلی که نشون داده شده، الزامی است.

ارسال تمرین:

  • فرصت ارسال این تمرین تا روز جمعه 21 اسفند، ساعت 24 می باشد. تمرین هایی که با یک دقیقه تاخیر نسبت به این زمان ارسال شوند، مورد قبول نخواهند بود.
  • نحوه ارسال تمرین ها در این پست توضیح داده شده.

  • بیگلری
۰۹
اسفند

تمرین دوم رو با استفاده از کلاس به صورت زیر دوباره نویسی کنید.

کلاس دانشجو (Student) دارای ساختار زیر است:

  • حالت ها:
  • نام
  • آرایه ای از درس ها ([]Course)
  • رفتارها:
  • setter و getter مربوط به نام
  • محاسبه معدل (calculateAverage): یک مقدار float برمی گرداند که معدل دانشجو است
  • چاپ مشخصات درس ها (printCourses)
  • سایر رفتارهایی که برای ست کردن درس های یک دانشجو لازم است!

کلاس درس (Course) دارای ساختار زیر است:

  • حالت ها:
  • نام
  • تعداد واحد
  • نمره
  • رفتارها:
  • setter و getter مربوط به نام، تعداد واحد و نمره
  • یک سازنده بدون پارامتر
  • یک سازنده با سه پارامتر نام، تعداد واحد و نمره
  • چاپ مشخصات (print) شامل نام، تعداد واحد و نمره

نکته ها:

  • سایر بخش های تمرین دقیقا مشابه تمرین دوم است.
  • از آنجا که شاید هنوز کار با کلاس ها برایتان کمی دشوار باشد، استفاده از فیلدهای public هم مجاز است.
  • انجام ناقص این تمرین هم حتی در درک بهتر مفاهیمی که در ادامه یاد خواهیم گرفت، بسیار مفید خواهد بود.

ارسال تمرین:

  • فرصت ارسال این تمرین تا روز یکشنبه 16 اسفند، ساعت 1 می باشد. تمرین هایی که با یک دقیقه تاخیر نسبت به این زمان ارسال شوند، مورد قبول نخواهند بود.
  • نحوه ارسال تمرین ها در این پست توضیح داده شده.
  • عنوان ایمیل: برنامه نویسی پیشرفته، نام دانشجو، عنوان تمرین
  • مثال: برنامه نویسی پیشرفته، علی بهرامی، تمرین اول
  • عنوان فایل: YourName.java
  • مثال: Ali Bahrami.java

 

  • بیگلری
۰۴
اسفند

برنامه ای بنویسید که شاگرد اول کلاس رو بصورت زیر پیدا کند.

ورودی

ورودی برنامه دقیقا بر اساس ساختار توضیح داده شده در زیر است.

  • در ابتدا یک عدد صحیح n وارد می شود که بیانگر تعداد دانشجوهای کلاس است. سپس به ازای هر دانشجو، اطلاعات زیر وارد می گردد.
  • ابتدا نام دانشجو و سپس یک عدد صحیح m که تعداد دروس دانشجو است. آنگاه به تعداد m، اطلاعات درس های دانشجو وارد می شود.
  • هر درس شامل نام (رشته)، واحد (عدد صحیح بین 1 تا 4) و نمره (عدد اعشاری بین 0 تا 20) است.

خروجی

برنامه برای همه دانشجوها معدل را محاسبه کرده و فهرست دانشجوها و معدل هر یک را در خروجی چاپ می کند (به همان ترتیبی که در ورودی وارد شده اند).

سپس در آخرین خط، نام دانشجویی که بیشترین معدل را داشته و همه درس هایش چاپ می شوند.

نکته ها:

  • برای نگهداری اطلاعات می توانید از هر تعداد آرایه که نیاز است استفاده کنید.
  • طول آرایه ها به صورت ثابت تعریف نگردد! و بسته به n و m وارد شده، تعیین شود.
  • استفاده از Scanner و Formatter برای خواندن از ورودی و نوشتن در خروجی اجباری است.
  • برای چاپ کردن نام در خروجی از طول میدان 20 (چپ چین) استفاده کنید.
  • استفاده از ابزارهای خوانده نشده موجب کاهش نمره ی تمرین می گردد.

ارسال تمرین:

  • فرصت ارسال این تمرین تا روز یکشنبه، 9 اسفند، قبل از شروع کلاس (ساعت 10) هست.
  • فرصت ارسال تمرین به هیچ عنوان تمدید نخواهد شد.
  • نحوه ارسال تمرین ها در این پست توضیح داده شده.
  • عنوان ایمیل: برنامه نویسی پیشرفته، نام دانشجو، عنوان تمرین
  • مثال: برنامه نویسی پیشرفته، علی بهرامی، تمرین دوم

مثال:

  • ورودی:

3 --> (n)

Bahrami 2 --> (m)

Riazi 3 10.5

Fizik 3 9.25

Emadi 3

Riazi 3 12.5

Fizik 3 8.75

Programming 4 20

Mohammadi 1

Riazi 3 14

  • خروجی:

Bahrami             9.875

Emadi                14.375

Mohammadi        14

Top Student: Emadi

Riazi 3 12.5

Fizik 3 8.75

Programming 4 20

  • بیگلری
۰۲
اسفند

سه تابع با نام های readInt، readFloat و readString بنویسید.

  • readInt : یک عدد صحیح از ورودی خوانده و برمی گرداند. در صورت عدم وجود عدد، 0 برگردانده می شود.
  • readFloat : یک عدد اعشاری از ورودی خوانده و برمی گرداند. در صورت عدم وجود عدد اعشاری، 0 برگردانده می شود.
  • readString : یک رشته از ورودی خوانده و برمی گرداند. در صورت عدم وجود رشته، رشته تهی ("") برگردانده می شود.

نکته ها:

  • تابع readLine توسط بنده به عنوان نمونه پیاده سازی شده است.
  • کاراکترهای جداکننده: فاصله، تب و کاراکتر خط جدید
  • کد زیر را کپی کرده و توابع مربوطه را پیاده سازی کنید.

ارسال تمرین:

  • فرصت ارسال این تمرین تا روز سه شنبه، 4 اسفند، قبل از شروع کلاس (ساعت 10) هست.
  • فرصت ارسال تمرین به هیچ عنوان تمدید نخواهد شد.
  • نحوه ارسال تمرین ها در این پست توضیح داده شده.
  • عنوان ایمیل: برنامه نویسی پیشرفته، نام دانشجو، عنوان تمرین
  • مثال: برنامه نویسی پیشرفته، علی بهرامی، تمرین اول

مثال:

  • ورودی: 
  • 10 123.12 mohammad other characters in this line
  • خروجی:

Integer: 10

Float: 123.12

String: mohammad

Line:  other characters in this line

  • ورودی: 
  • 110 1223.132mohsen test
  • خروجی: 
  • Integer: 10
  • Float: 123.12
  • String: mohsen
  • Line:  test
  • ورودی:
  • 27
  • 98.0maryam100
  • last line
  • خروجی:

Integer: 27

Float: 98.0

String: maryam100

Line: last line

public class HomeWork1 {

public static void main(String args[]) throws IOException {
int num1= readInt();
float num2= readFloat();
String num3= readString();
String line= readLine();

System.out.println("Integer: " + num1);
System.out.println("Float: " + num2);
System.out.println("String: " + num3);
System.out.println("Line: " + line);
}

public static int readInt() throws IOException {
...
}

public static float readFloat() throws IOException {
...
}

public static String readString() throws IOException {
...
}

public static String readLine() throws IOException {
String line= "";
int input= System.in.read();
while(input!=-1 && input!='\n') { // -1: end of input \n: end of line
line += (char) input;
input= System.in.read();
}
return line;
}
}
  • بیگلری
۲۸
بهمن

همه حرکت ها از خود دانشجوها شروع میشه و به خود دانشجوها ختم میشه!!!

  • بیگلری
۱۸
بهمن

 دریافت JDK8 (نسخه 32بیتی) با حجم 183 مگابایت

 دریافت JDK8 (نسخه 64بیتی) با حجم 188 مگابایت

 دریافت Netbeans 8.1 با حجم 200 مگابایت

 دریافت IntelliJ IDEA با حجم 371 مگابایت

 دریافت مرجع درس: Really Big Index با حجم 51 مگابایت

  • بیگلری
۲۱
آذر

در ادامه شش تیم اول رو مشاهده می کنید که دو تیم اول به عنوان نماینده دانشگاه انتخاب شدن.

البته امسال بچه ها خیلی خیلی ضعیف کار کردن و اصلا در مسابقات اینترنتی شرکت نکردن. برای مثال، خبر نداشتن از مسابقه اینترنتی شریف عذر بدتر از گناهه!