وبلاگ سید جلال سیدیزدی

تمرین سیزدهم

يكشنبه, ۲۴ فروردين ۱۳۹۳، ۱۰:۲۱ ق.ظ

سلام دوستان

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

مثال:

متن وردی:

An object is a software bundle of related state and behavior. Software objects are often used to model the real-world objects that you find in everyday life. This lesson explains how state and behavior are represented within an object, introduces the concept of data encapsulation, and explains the benefits of designing your software in this manner.

کلمه ی ورودی 1:

bundle

خروجی:

An object is a software bundle of related state and behavior.

کلمه ی ورودی 2:

life

خروجی:

Software objects are often used to model the real-world objects that you find in everyday life.


فرض مساله: هر جمله به یک . ختم می شود.

ابتدا فرض کنید هر کلمه فقط در یک جمله وجود دارد. اما در نهایت برنامه را طوری بنویسید که اگر کلمه ای در چند جمله وجود داشت (مانند behavior در مثال بالا) همه جمله ها را چاپ کند همچنین از جملات تکراری فقط یک نسخه چاپ شود.


راهنمایی: برای انجام این تمرین از مفاهیم جدیدی که در فصل 5 یاد گرفته اید استفاده کنید.


مهلت ارسال: سه شنبه 26 فروردین ساعت 9

با تاخیر: سه شنبه 26 فروردین ساعت 20 چهارشنبه 27 فروردین ساعت 20 پنجشنبه 28 فروردین ساعت 22


موفق باشید.

  • ۹۳/۰۱/۲۴

نظرات  (۲۰)

سلام.تو این کلاس room متغییر northو....رو از نوع کلاس room تعریف کرده این یعنی چی؟ مگر می شود فیلدی از یک کلاس از نوع همان کلاسی باشد که داخلش هست چون کلاسroomکه هنوز ساخته نشده که ؟؟
این cmb که گفتید رو باید از کجا بیاریم ؟ و کد هایی که توش باید بنویسیم رو هم بلد نیستیم چی باید بنویسیم؟؟
پاسخ:
سلام

چیز عجیبی نیست. در C هم می شود. البته با این تفاوت که در C باید اشاره گر باشد. در جاوا فیلدها ذاتا اشاره گر هستند (به جز انواع ابتدایی).

cmd درسته.
یک راه برای باز کردن آن گرفتن کلید ویندوز و زدن R کلید است. بعد در پنجره ظاهر شده cmd رو تایپ کنید و Enter رو بزنید.
موفق باشید.
استاد فردا 8-10کلاسمونه دیگه؟
پاسخ:
سلام
بله 8 تا 10 بود!
سلام استاد.امیدوارم حالتون خوب باشع
راستش کار کردن با cmd رو نفهمیدم.بی زحمت ی توضیح بدین.
پاسخ:

سلام. ممنون
1- یک کلاس جاوا را در یک ویرایشگر بنویسید و ذخیره کنید. دقت کنید اسم فایل باید با نام کلاس یکسان باشد و پسوند فایل، java باشه. (java  با حروف کوچک). برای مثال اسم فایل رو Game.java می گذاریم.
2- cmd رو باز کنید. با دستور cd به پوشه ای که فایل مرحله قبل رو ذخیره کردید بروید. (فرض کنید پوشه JavaTest در درایو D)
3- مسیر کامل javac رو تایپ کنید. معمولاً شبیه زیر است:

C:\Program Files\Java\jdk1.7.0_51\bin\javac.exe

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

D:\JavaTest> C:\Program Files\Java\jdk1.7.0_51\bin\javac.exe Game.java

با فشار Enter عمل کامپایل انجام می شود. اگر همه چیز درست باشه، هیچ پیغامی چاپ نمی شه و در کنار فایل جاوا یک فایل با همان اسم و پسوند class ایجاد می شه.

برای اجرا باید از برنامه جاوا استفاده کرد:

D:\JavaTest> C:\Program Files\Java\jdk1.7.0_51\bin\java.exe Game


نکته:

  • اگر java.exe یا javac.exe در مسیر سیستم باشند، نیازی به نوشتن مسیر کامل آنها نیست.
  • اگر کلاس نوشته شده در پکیج باشد (نه اینکه از پکیجی دیگر استفاده کرده باشد) باید فایل جاوا را در پوشه ای با نام پکیج نوشت و عمل کمپایل رو از بیرون آن پوشه انجام داد.

موفق باشید.

بخش‌هایی از این نظر که با * مشخص شده، توسط مدیر سایت حذف شده است
سلام
استاد تایم تحوبل رو تا اخر شب شب کنید ****
من تا 6 سر کلاس بوذم

پاسخ:
سلام
تا امشب تمدید شد.
موفق باشید.
سلام.
آیا مهلت ارسال این تمرین تمدید شده است؟
پاسخ:
سلام
بله.
البته مهلت با تاخیر.
موفق باشید.
سلام.
میشه کدی رو که terminal رو  پاک میکنه بگین؟
پاسخ:

سلام

دستور زیر را امتحان کنید.

System.out.print('\u000C');

موفق باشید.

سلام و خسته نباشید
چطور باید در اینجا از Set  استفاده کرد؟
یا بهتر بگم set در اینجا چه کمکی به ما میکنه؟
پاسخ:
سلام ممنون
اگر کلمه ای در چند جمله باشه...
موفق باشید.
"از طرف دیگر شما باید استفاده از Map و Set رو یاد بگیرید." استاد الان من خیلی خوش حالم چون تازه یاد گرفتم split چه طور کار می کنه:) اونم به لطف اون مثال حمید رضا و البته به لطف مدیر سایت که این قسمت رو ستاره نزد :))))))
پاسخ:
سلام
الحمدلله.
موفق باشید.
لطفا اگر امکانش هست این هفته به دلیل برگزاری امتحانات میان ترم دروس مشترک جلسه جبرانی روز پنجشنبه برگزار نشه. خواهش ;)
پاسخ:
سلام
درس خیلی عقب است.
موفق باشید.

سلام وقت بخیر
با توجه به این که همین متنی که خودتون نوشتین دریافت میشه بنویسیم؟
ممنون
پاسخ:
سلام ممنون
نه.
مثال فقط مثال است.
موفق باشید.
سلام استاد
حتما باید از HashMap استفاده کنیم؟
پاسخ:
سلام
بله.
موفق باشید.
  • در جواب کسی که به من جواب داد (حمیدرضا)
  • سلام
    مثبت حقت بود رفیق.
    کارت درسته.
    دستت درد نکنه.
    مشکلم حل شد.
  • جواب حمیدرضا
  • وقتی میخوای نقطه رو اسپلیت کنی باید بنویسی :

    (".\\") split  
    پاسخ:
    سلام
    آفرین! یک + برای شما لحاظ می گردد.
    موفق باشید.
    سلام
    استاد جمله ی ورودی درست کار میکنه اما قسمت

            String [] f = b.split(".");
            for(int i = 0; i < f.length; i++){
                System.out.println(f[i]);
            }
    کار نمیکنه.
    چرا؟؟؟؟؟؟؟؟؟؟؟؟؟
    بعد استاد یه سوال دیگه 
    Map قابل استفاده ی برای زمانی که یک کلمه ی کلیدی داریم اما اینجا کاربر وارد میکنه و از همون جمله  یه کلمه میده که ممکنه داخل اون جمله باشه یا نباشه.
    اگه بخوایم از Map استفاده کنیم که باید تک تک کلمه هایی رو که کاربر وارد کرده رو بگیریم و تازه جمله ی اون کلمه رو هم بگیریم که خب خیلی سخته.
    مگر اینکه من کاملا اشتباه کرده باشم و راه دیگه ای داشته باشه.
    طبق چیزی که من نوشتم میشه راهنمای کنید که چطوری میشه کلمه های کاربر و جمله ی اون کلمه ها رو تو Map  قرار داد؟
    امیدوارم زیاد پیچیده نشده باشه.
    ممنون
    پاسخ:
    سلام
    راه حلی که گفتید درست است ولی پیچیده نیست!
    موفق باشید.
    ببخشیدا
    فک کردم ولی نفهمیدم کاربرد map , set در اینجا چیه؟
    آخه این روش جواب میده و جمله رو چاپ میکنه و نیازی به اونها نیست
    پاسخ:
    سلام
    درسته که راه حل شما درست کار می کنه، ولی در عمل مسائل دیگری هم وجود داره که باعث می شه که سراغ راه حل دیگر برویم. مانند کارایی.
    از طرف دیگر شما باید استفاده از Map و Set رو یاد بگیرید.
    به پرسش/پاسخ های دیگر توجه کنید.
    موفق باشید.
    سلام استاد
    ببخشید ولی من هر کاری کردم نتونستم چیزی چاپ کنم.
    این کلاس رو هم برای اطمینان نوشتم ولی کار نمیکنه میشه یه نگاهی بهش بندازید.
    public class AAA
    {
        private String a;
        
        public AAA()
        {
            
        }
        
        public void s(String b)
        {
            String [] f = b.split(".");
            for(int i = 0; i < f.length; i++){
                System.out.println(f[i]);
            }
        }
    }

    هر نوشته همونطور که گفتید به یک نقطه ختم میشه. با متد split جمله ها رو جدا میکنیم. و بعد جمله به جمله میگردیم.
    مگه این اشتباهه؟؟؟؟؟
    هیچی چاپ نمیکنه.
    پاسخ:
    سلام
    ظاهراْ درسته.
    جمله ورودی (b) رو چاپ کنید ببینید درست وارد شده است یا نه.
    موفق باشید.
    سلام استاد
    خسته نباشید.
    کاربر جمله هارو در یک خط وارد میکنه یا بعد از هر نقطه اینتر خواهد زد.
    پاسخ:
    سلام ممنون
    کاربر همه ی جمله ها رو وارد می کنه و بعد Enter رو می زنه.
    موفق باشید
    سلام استاد، خسته نباشید
    میشه متن رو از   "."  اسپلیت کرد و بعد آرایه از رشته ها داریم که تو هر عنصر یک جمله است و بعد با استفاده از متد contains رشته ها ببینه اگه شامل کلمه مورد نظر بود، چاپش کنه و اینجوری دیگه نیازی به استفاده از map , set  نیست.
    اگر به نظر شما نیاز هست لطفا راهنمایی کنید آخه map فقط برای یک کلمه میشه نه تعدادی کلمه
    با تشکر
    پاسخ:
    سلام ممنون
    ۵۰ درصدش درسته. بقیه اش رو از Map و Set استفاده کنید.
    یه خرده فکر کنید حله.
    موفق باشید.
    بخش‌هایی از این نظر که با * مشخص شده، توسط مدیر سایت حذف شده است
    سلام استاد
    خسته نباشید
    **** *** ***** ** ** *** **** ***** ******
    هفته ی دیگه امتحاناته
    ریاضی و معادلات و فیزیک.
    استاد یکم سخته.
    خواهش میکنم
    پاسخ:
    سلام، ممنون
    سخت نیست.
    انجام بدهید.
    موفق باشید.
    سلام.
    خسته نباشید
    برنامه رو باید در bluej  انجام داد یا netbeans ؟

    پاسخ:
    سلام، ممنون
    مثل همیشه با هر کدام که دوست داشتید.
    دقت کنید که در netbeans یک کلاس اضافه تر باید بنویسید که فقط شامل متد main است.
    موفق باشید.