menusearch
javapro.ir

جمع و ضرب و ترانهاده ماتریس ها به زبان جاوا

جستجو
سه شنبه ۶ اسفند ۱۳۹۸ | ۰:۴۴:۴۴
۱۳۹۸/۱۰/۱۰ سه شنبه
(5)
(0)
جمع و ضرب و ترانهاده ماتریس ها به زبان جاوا
جمع و ضرب و ترانهاده ماتریس ها به زبان جاوا

نمونه مثال پایه ای جاوا

 

 

بسم الله الرحمن الرحیم

 

 

این آموزش به همت زینب شمس از نویسندگان افتخاری سایت جاواپرو تهیه گردیده است.


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

 

 

1.    برنامه ای بنویسیدکه یه ماتریس ازکاربر بگیرد و در صفحه چاپ کند.


توضیحات:برای این کار لازم است ابتدا تعداد سطر و ستون را ازکاربر بگیریم و در متغیرهای جداگانه ای قراردهیم. بعد برای پرکردن آن باید همزمان هم شماره سطروهم ستون درایه ی مورد نظررا درنظر بگیریم و از همه مهمتر باید مقادیر درایه ها را درجایی ذخیره کنیم پس مقادیر را در یک آرایه ی دوبعدی می ریزم .خوب چرا آرایه ی دوبعدی؟چون من د وویژگی برای هر درایه دارم و این ویژگی ها منحصربفر دهست.خوب چه  جوری روی سطرها و ستون هاحرکت کنیم؟من میخوام روی درایه های  سطراول حرکت کنم و وقتی روی هر درایه که حرکت میکنم درایه های پایینی راهم پرکنم .خوب برای حرکت روی سطرها باید یک for تعریف کنم و چون باید برای هرحرکت روی یک درایه ازسطر باید روی درایه های پایینیش حرکت کنم پس یک دیگه هم برای پرکردن درایه های زیرینش قرارمیدهم.چون اینجامن یک آرایه دوبعدی راپرکردم والان می خوام چاپ کنم از deepToString استفاده میکنم.چون این متد ازکلاس Arrays هست پس لازم هست که آن راهم import کنم. اما اگه ارایه ی من تک بعدی بوداز toString استفاده میکردم.

 


package javaapplication1;
import java.util.*;

public class JavaApplication1 {

   
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        System.out.println("please ,enter row:");
        int row=input.nextInt();
        System.out.println("please ,enter column:");
        int column=input.nextInt();
        
        int[][] matrix=new int[row][column];
        for(int i=0;i<row;i++){
            for(int j=0;j<column;j++){
                 System.out.println("please ,enter derayeh:"+i+"va"+j);
                 matrix[i][j]=input.nextInt();
            }
        }
         System.out.println("matrix:"+Arrays.deepToString(matrix));
    }
    
}

 

خروجی:

 

please ,enter row:
2
please ,enter column:
3
please ,enter derayeh:0va0
13
please ,enter derayeh:0va1
15
please ,enter derayeh:0va2
17
please ,enter derayeh:1va0
14
please ,enter derayeh:1va1
16
please ,enter derayeh:1va2
18
matrix:[[13, 15, 17], [14, 16, 18]]

 

•    شما عزیزان می توانید برای تمرین بیشتر روی درایه ها ی ستون اول حرکت کنید و برای هردرایه، درایه های سمت راست آنرا هم پرکنید درواقع این ماتریس رابصورت سطربه سطرپرکنید.

 

 

 

2.    برنامه ای بنویسید که دو ماتریس را ازکاربر بگیرد اگر قابل جمع باشند ماتریس جمع آن دو را بنویسد.


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

 

 

 

 

package javaapplication1;
import java.util.*;

public class JavaApplication1 {

   
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        System.out.println("please ,enter row1:");
        int row1=input.nextInt();
        System.out.println("please ,enter column1:");
        int column1=input.nextInt();
        
        int[][] matrix1=new int[row1][column1];
        for(int i=0;i<row1;i++){
            for(int j=0;j<column1;j++){
                 System.out.println("please ,enter derayeh:"+i+"va"+j);
                 matrix1[i][j]=input.nextInt();
            }
        }
        System.out.println("please ,enter row2:");
        int row2=input.nextInt();
        System.out.println("please ,enter column2:");
        int column2=input.nextInt();
        
        int[][] matrix2=new int[row2][column2];
        for(int i=0;i<row2;i++){
            for(int j=0;j<column2;j++){
                 System.out.println("please ,enter derayeh:"+i+"va"+j);
                 matrix2[i][j]=input.nextInt();
            }
        }
        if(row1==row2&&column1==column2){
        int[][] matrixjam=new int[row2][column2];
        for(int i=0;i<row2;i++){
            for(int j=0;j<column2;j++){
              
                 matrixjam[i][j]=matrix1[i][j]+matrix2[i][j];
            }
        }
         System.out.println("matrix jam:"+Arrays.deepToString(matrixjam));
    }
        else{
        System.out.println("error");
}
    }  
}

 

خروجی:

 

please ,enter row1:
2
please ,enter column1:
2
please ,enter derayeh:0va0
3
please ,enter derayeh:0va1
4
please ,enter derayeh:1va0
5
please ,enter derayeh:1va1
6
please ,enter row2:
2
please ,enter column2:
2
please ,enter derayeh:0va0
6
please ,enter derayeh:0va1
9
please ,enter derayeh:1va0
8
please ,enter derayeh:1va1
5
matrix jam:[[9, 13], [13, 11]]

 

 

 

3) برنامه ای بنویسیدکه دو ماتریس از کاربر بگیرد اگر قابل ضرب بودند ضرب کند و چاپ کند.


توضیحات:دراینجا هم مانند قبل دو ماتریس ازکاربر میگیریم.دو ماتریس را زمانی می توان ضرب کرد که تعداد ستون    ماتریس1باتعداد سطر ماتریس2یکی باشد.و برای ماتریس ضرب هم سه تا forتو در تو مینویسیم .چراسه تا؟ چون  یکیش به تعداد سطرهای ماتریس  1هست و اون یکی به تعداد ستون های 2 هست و اخرین به تعدادستون 1و سطر2 هست.و ماتریس جواب هم به تعدادسطر1وستون 2سطروستون دارد.

 


package javaapplication1;
import java.util.*;

public class JavaApplication1 {

   
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        //matrix1 start
        System.out.println("please ,enter row1:");
        int row1=input.nextInt();
        System.out.println("please ,enter column1:");
        int column1=input.nextInt();
        int[][] matrix1=new int[row1][column1];
        for(int i=0;i<row1;i++){
            for(int j=0;j<column1;j++){
                 System.out.println("please ,enter derayeh:"+i+"va"+j);
                 matrix1[i][j]=input.nextInt();
            }
        }
        System.out.println("matrix1:"+Arrays.deepToString(matrix1));
        //matrix1 end
         //matrix2 start
        System.out.println("please ,enter row2:");
        int row2=input.nextInt();
        System.out.println("please ,enter column2:");
        int column2=input.nextInt();
        int[][] matrix2=new int[row2][column2];
        for(int i=0;i<row2;i++){
            for(int j=0;j<column2;j++){
                 System.out.println("please ,enter derayeh:"+i+"va"+j);
                 matrix2[i][j]=input.nextInt();
            }
        }
         System.out.println("matrix2:"+Arrays.deepToString(matrix2));
         //matrix2 end
        if(row2==column1){
        int[][] matrixzarb=new int[row1][column2];
        for(int i=0;i<row1;i++){
            for(int j=0;j<column2;j++){
              for(int k=0;k<row2;k++){
                 matrixzarb[i][j]=matrix1[i][k]*matrix2[k][j];
            }}
        }
         System.out.println("matrixzarb:"+Arrays.deepToString(matrixzarb));
    }
        else{
        System.out.println("error");
}
    }  
}

 

خروجی:

 

 

please ,enter row1:   
1
please ,enter column1:
3
please ,enter derayeh:0va0
4
please ,enter derayeh:0va1
7
please ,enter derayeh:0va2
9
matrix1:[[4, 7, 9]]
please ,enter row2:
3
please ,enter column2:
4
please ,enter derayeh:0va0
8
please ,enter derayeh:0va1
7
please ,enter derayeh:0va2
5
please ,enter derayeh:0va3
6
please ,enter derayeh:1va0
10
please ,enter derayeh:1va1
11
please ,enter derayeh:1va2
12
please ,enter derayeh:1va3
6
please ,enter derayeh:2va0
3
please ,enter derayeh:2va1
2
please ,enter derayeh:2va2
9
please ,enter derayeh:2va3
2
matrix2:[[8, 7, 5, 6], [10, 11, 12, 6], [3, 2, 9, 2]]
matrix zarb:[[27, 18, 81, 18]]


4.   برنامه ای بنویسید که ترانهاده یک ماتریس راحساب کند.


 توضیحات:ماتریس رامانندقبل ازکاربرمیگیریم .نکته ای که اینجامطرح میشه این هست که سطرهای ماتریس ترانهاده به تعدادستون های ماتریس اولیه وستون های آن به تعدادسطرهای ماتریس اولیه هست.ودرایه ی ijدرایه ی jiازماتریس ترانهاده میشود.

 

package javaapplication1;
import java.util.*;

public class JavaApplication1 {

   
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        //matrix1 start
        System.out.println("please ,enter row1:");
        int row1=input.nextInt();
        System.out.println("please ,enter column1:");
        int column1=input.nextInt();
        int[][] matrix1=new int[row1][column1];
        for(int i=0;i<row1;i++){
            for(int j=0;j<column1;j++){
                 System.out.println("please ,enter derayeh:"+i+"va"+j);
                 matrix1[i][j]=input.nextInt();
            }
        }
        System.out.println("matrix1:"+Arrays.deepToString(matrix1));
        //matrix1 end
        
       
        int[][] matrixT=new int[column1][row1];
        for(int i=0;i<column1;i++){
            for(int j=0;j<row1;j++){
                 matrixT[i][j]=matrix1[j][i];
            }
        }
         System.out.println("matrixT:"+Arrays.deepToString(matrixT));
        
    }  
}


خروجی:

 


please ,enter row1:
2
please ,enter column1:
3
please ,enter derayeh:0va0
6
please ,enter derayeh:0va1
8
please ,enter derayeh:0va2
6
please ,enter derayeh:1va0
9
please ,enter derayeh:1va1
4
please ,enter derayeh:1va2
0
matrix1:[[6, 8, 6], [9, 4, 0]]

matrixT:[[6, 9], [8, 4], [6, 0]]

 

 

پیروز و موفق باشید


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

 


 این جلسه آموزشی را می توانید بصورت  کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.


این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)

 

 

کانال تلگرام آموزش جاوا

 

 

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

لینک دانلود کتاب

 

 


نشر این مطلب با ذکر منبع (لینک سایت) بلامانع است.
برای با خبر شدن از جدیدترین مطالب آموزشی جاوا 
عضو کانال تلگرام ما شوید.

 

 

نظرات کاربران
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

بستن
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

0 نظر