ترانهاده ی ماتریس - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

ترانهاده ی ماتریس

0 امتیاز

سلام .من یه کد زدم که ترانهاده ی 2 ماتریس و نشون بده اما نمی دونم چرا بعضی از المان های ماتریس ترانهاده صفر می شه؟؟ممنون می شم اگه کمک کنید.
اینم کدم از کامپایلر dev استفاده می کنم.

#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
int main()
{
    int i,j,p,q,c1,c2,r1,r2,k;
    char ans1,ans2,answer;
    int matrix1[100][100];
    int matrix2[100][100];
    int sum[100][100];
    int multi[100][100];
    int min[100][100];
    int trans[100][100];
    char func[80];
     
     
            cout<<"enter first matrix\n";
            cout<<"enter numbers of rows\n";
            cin>>r1;
            cout<<"enter numbers of column\n";
            cin>>c1;
     
    // getting first matrix
               for(i=0;i<r1  ; i++)
               {
               for(j=0;j<c1  ;j++)
               {
               cout<<"enter eleman   ";
               cin>>matrix1[i][j];
                 }           
                 }
                 cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~\n";
                  
               // getting second matrix
               cout<<"enter second matrix\n";
               cout<<"enter numbers of rows\n";
            cin>>r2;
            cout<<"enter numbers of column\n";
            cin>>c2;
     
               for(p=0;p<r2  ; p++)
               {
               for(q=0;q<c2  ;q++)
               {
               cout<<"enter eleman   ";
               cin>>matrix2[p][q];
                 }
                 }  
                 cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
 cout<<"\ntransposed matrix1 is  \n";                 
           for(i=0;i<r1;i++)
            for(j=0;j<c1;j++)
                   {
               trans[j][i]=matrix1[i][j];   
               }
               for(i=0;i<r1;i++)
               for(j=0;j<c1;j++)
               {       
              cout<<"    ";               
            cout<<trans[i][j];
            if(j==r1-1)
            cout<<"\n\n";
                                    }
            cout<<"\ntransposed matrix2 is  \n"  ;                                       
              for(i=0;i<r2;i++)
              for(j=0;j<c2;j++)
                   {
                     trans[j][i]=matrix2[i][j];
                      cout<<"     ";         
                       cout<<trans[i][j];
                       if(j==r2-1)
                       cout<<"\n\n";
                                    }
    getch ();
    return 0;
}

 

سوال شده دی 20, 1392  بوسیله ی Sher228 (امتیاز 167)   18 33 44
دوباره تگ گذاری شد دی 26, 1392 بوسیله ی BlueBlade

2 پاسخ

+1 امتیاز
 
بهترین پاسخ

توی خط های ۵۳ و ۵۴ داخل for ها باید جای r1 و c1 عوض بشه که درست میشه اگه این تغییر رو اعمال کنین ، من کد شما رو یک خرده ساده کردم این شد

#include <iostream>
using namespace std;
int main()
{
    int r ,c ;
    int m[100][100] ;
    cout<< "enter first matrix\n" ;
    cout<< "enter numbers of rows\n" ;
    cin >> r ;
    cout<<"enter numbers of column\n" ;
    cin >> c ;

    for ( int i = 0 ; i < r ; i++ )
    {
        for ( int j = 0 ; j < c ; j++ )
        {
            cin >> m[i][j] ;
        }
    }
    cout<<"transposed matrix is  \n";
    for ( int i = 0 ; i < c ; i++ )
    {
        for ( int j = 0 ; j < r ; j++ )
        {
            cout << m[j][i] << " " ;
        }
        cout << endl ;
    }
}

 

پاسخ داده شده دی 21, 1392 بوسیله ی Elyas74 (امتیاز 1,144)   6 14 27
انتخاب شد دی 21, 1392 بوسیله ی Sher228
0 امتیاز

در C++، می‌توانید از یک آرایه دو بعدی برای نمایش یک ماتریس و از حلقه‌ها برای انجام تبدیل‌های ماتریس استفاده کنید. در اینجا مثالی از نحوه ضرب دو ماتریس در C++ آورده شده است:

#include <iostream>
using namespace std;

const int N = 3;

void multiply(int a[][N], int b[][N], int c[][N]) {
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            c[i][j] = 0;
            for (int k = 0; k < N; k++) {
                c[i][j] += a[i][k] * b[k][j];
            }
        }
    }
}

int main() {
    int a[N][N] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    int b[N][N] = {{9, 8, 7}, {6, 5, 4}, {3, 2, 1}};
    int c[N][N];

    multiply(a, b, c);

    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            cout << c[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}

در پایتون، می‌توانید از کتابخانه numpy برای انجام تبدیل‌های ماتریسی استفاده کنید. در اینجا مثالی از نحوه ضرب دو ماتریس در پایتون آورده شده است:

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])
c = np.matmul(a, b)

print(c)

همچنین می توانید از متد numpy.dot() برای انجام ضرب ماتریس استفاده کنید.

c = np.dot(a, b)

کتابخانه numpy همچنین عملیات ماتریسی دیگری مانند معکوس، جابجایی، تعیین کننده و مقادیر ویژه، بردارهای ویژه و غیره را فراهم می کند.

 

پاسخ داده شده بهمن 4, 1401 بوسیله ی عباس مولایی (امتیاز 2,754)   1 5 13
...