آموزشتمرین‌های آموزشی

ماتریس (تا پایان جلسه ششم)

سطح سوال: متوسط

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

فایل Matrix.java را دانلود کرده و کلاس Matrix را ببینید. در داخل این کلاس 3 ویژگی 3 سازنده و 8 متد خالی وجود دارد. از شما می‌خواهیم با توجه به توضیحات جدول زیر، این سازنده‌ها و متدها را به درستی پیاده‌سازی کنید به گونه‌ای که با اجرای کد، رفتار مورد نظر ما را انجام دهند.

 

رفتار متد 
برای ساخت یک شی ماتریس با تعداد سطر و ستون‌های دلخواه، از این سازنده استفاده می‌شود. با توجه به ورودی‌ها، باید ویژگی‌های کلاس به درستی مقداردهی شوند. public Matrix(int row, int column)
برای ساخت یک شی ماتریس مربعی با اندازه‌ی دلخواه، از این سازنده استفاده می‌شود. با توجه به ورودی، باید ویژگی‌های کلاس به درستی مقداردهی شوند. public Matrix(int length)
برای ساخت یک شی ماتریس با استفاده از یک آرایه‌ی دو بعدی، از این سازنده استفاده می‌شود. با توجه به ورودی، باید ویژگی‌های کلاس به درستی مقداردهی شوند. public Matrix(int[][] elements)
تعداد سطرهای ماتریس را برمی‌گرداند. public int getRow()
تعداد ستون‌های ماتریس را برمی‌گرداند. public int getColumn()
یک آرایه‌ی دوبعدی شامل درایه‌های ماتریس را برمی‌گرداند. برای دسترسی به یک درایه‌ی خاص از ماتریس نیز می‌توان از آن استفاده کرد. public int[][] getElements()
یک ماتریس به عنوان ورودی می‌گیرد و اگر سایزش با سایز ماتریس شی جاری برابر بود، درایه‌هایش را نظیر به نظیر با درایه‌های ماتریس شی جاری جمع کرده و مقدار true برمی‌گرداند.
در غیراین‌صورت عمل جمع انجام نشده و مقدار false برگردانده می‌شود.
public boolean add(Matrix newMatrix)
مقدار value را در درایه‌ی سطر iام و ستون jام درج می‌کند. public void setElement(int i, int j, int value)
اگر ماتریس شی جاری مربعی باشد مقدار true و در غیراین‌صورت مقدار false برمی‌گرداند. public boolean isSquareMatrix()
 اگر مارتیس شی جاری، مربعی باشد آن را تبدیل به ماتریس پایین مثلثی می‌کند.  public void toLowerTriangular()
 اگر ماتریس شی جاری، مربعی باشد آن را تبدیل به ماتریس بالا مثلثی می‌کند.  public void toUpperTriangular()

نکات:

  • اندیس درایه‌های ماتریس را همواره صفر-base در نظر بگیرید. مثلا یک ماتریس 4*3 که  3 سطر دارد و 4 ستون، اندیس سطرها از 0 تا 2 و اندیس ستون‌ها از 0 تا 3 خواهد بود. بنابراین در متد setElement نیز مقدار i و j هم به صورت صفر-base داده می‌شود.
  • ماتریس پایین‌مثلثی، ماتریسی است که تمامی درایه‌های بالای قطر اصلی برابر با صفر هستند.
  • ماتریس بالا مثلیلی، ماتریسی است که تمامی درایه‌های پایین قطر اصلی برابر با صفر هستند.
  • متد add به این صورت عمل می‌کند که همانطور که گفته شد، اگر سایز ماتریس ورودی با سایز ماتریس شی جاری یکسان بود، مقدار درایه‌های ماتریس شی جاری برابر می‌شود با مقدار فعلی‌شان به اضافه‌ی مقدار درایه‌ی متناظر در ماتریس ورودی.

آنچه باید آپلود کنید:

فقط فایل Matrix.java را به صورت زیپ‌شده آپلود کنید. یعنی وقتی فایل زیپ را باز می‌کنیم، فقط فایل Matrix.java را ببینیم.

برای داوری تمرین، می‌توانید پاسخ خود را در سایت Quera به نحوی که در بالا گفته شد، بارگذاری کنید.

با ما همراه باشید:

آدرس کانال تلگرام: IranianJavaDevelopers@

آدرس صفحه اینستاگرام: javacup.ir

آدرس گروه لینکدین: Iranian Java Developers

نوشته های مشابه

‫22 دیدگاه ها

  1. سلام
    متاسفانه هیچکدوم ازلینک های کوئرا برای من کار نمیکنه و خطای 404 میده

  2. سلام و وقت به خیر من واقعا نمی دونم دقیقا کجا باید سوالم رو در quera مطرح کنم میشه لطفا راهنمایی کنین؟؟
    هر چقدر هم موضوع این تمرین یا تمرین های مشابه رو سرچ می کنم به نتیجه ای نمی رسم!!!

    1. سلام
      در سایت کوئرا ثبت‌نام کرده‌اید؟ به حساب کاربری‌تان وارد شده‌اید؟
      مسابقه «تمرینهای دوره آموزشی جاواکاپ» رو می‌بینید؟ https://quera.ir/contest/assignments/2584/problems
      به انتهای صفحه اسکرول کنید، سمت راست گزینه «سوال بپرسید» را انتخاب کنید و سوالتان را بپرسید.

      1. بله ثبت نام کردم وارد پروفایلم هم شدم!!!!! ولی این چیزی که شما می گین وجود نداره. حتی لینکی که فرستادین هم کار نمی کنه !!!
        با وجود اینکه بخش مسابقات امکان سرچ کردن نداره ولی تمام تب های اون رو بررسی کردم و مسابقه ای با عنوان “تمرینهای دوره آموزشی جاواکاپ” ندیدم.

        1. سلام
          بله متوجه شدیم که مسابقات ما وارد بخش مسابقات خصوصی شده و افراد جدید نمی‌تونن بهش دسترسی داشته باشن ظاهرا.
          در حال پیگیری از تیم کوئرا هستیم. ممنون که اطلاع دادید.

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

            1. سلام
              ما داریم پیگیری میکنیم و امیدواریم زودتر حل شه. اگر کمی صبر کنید و همونجا بپرسید، خیلی بهتر میشه جواب داد.

              فقط برای اینکه دقیقتر وضعیت رو بفهمیم یه سوال دیگه بپرسم ازتون. شما الان لینک سوال در کوئرا که پایین قسمت «آنچه باید آپلود کنید» گذاشتیم، براتون کار نمی‌کنه درسته؟ کلا هم تا حالا پاسخی رو در کوئرا بارگذاری نکردید برای داوری سوالات خودآزمون. درسته؟

              1. نه متاسفانه کار نمی کنه و خطای 404 می ده.
                چون تازه شروع به یادگیری جاوا کردم و با کوئرا هم آشنا نبودم تا حالا هم هیچ پاسخی رو ارسال نکردم.

              2. فعلا تا برطرف شدن کامل مشکل، با استفاده از آدرس ایمیلتون، شما رو به اعضای مسابقه اضافه کردیم.
                لطفا یه بار دیگه چک کنید ببینید که به سوالات مسابقه در کوئرا دسترسی دارید یا نه.
                ممنون

  3. در قسمت سازنده سوم که به صورت آرایه دریافت میکنه ماتریکس رو بعد مقدار row , column رو از کجا و چطوری در بیاریم از آرایه و وارد ویژگی های ردیف و ستون بکنیم..چون فقط اونجا اگ طبق سازنده سومی بخواد بده فقط آرایه رو داریم و نمیدونیم بعد اول و دوم مقادیرشون
    چقدره که بریزیم تو row , column..ممنون میشم اگ یه راهنمایی بکنید..البته من خودم با دستوری length. تونستم ردیف رو بگیرم اما ستون رو نمیدونم چکنم

    1. سلام
      لطفا سوالتون رو در قسمت سوال بپرسید کوئرا مطرح کنید تا تیم پشتیبانی راهنمایی‌تون کنند.
      ممنون

  4. تو تابع public void toLowerTriangular() و اون یکی دیگه:
    اگه ماتریس ورودی مربعی نبود چی کار کنیم؟

  5. دوتابع اول:
    public Matrix(int row, int column) و public Matrix(int length)
    آیا باید صفت [][] elements رو هم در نظر بگیرم؟ مثلا برای سطرn و ستونmای که میگه با توجه به اون صفت ماتریسی که اشاره شد باید یک ماتریس صفر m در n بسازم؟

    1. سلام
      گاهی به صورت موقتی این مشکل از طرف کوئرا پیش میاد. الان دیگه مشکلتون حل شده احتمالا. درسته؟

  6. با سلام لینک فایل دانلود matrix..java مشکل دارد لطفا بررسی شود….
    با تشکر از سایت خوبتون

    1. سلام
      خیر. شما می‌تونید طبق توضیحاتی که اینجا داده شده تا حدودی متوجه اشکالتان شوید. در غیر صورت خوشحال می‌شیم در سایت Quera در قسمت سوال بپرسید، مشکلتان را با ما در میان بگذارید تا بتوانیم شما را راهنمایی کنیم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا