C++ Matris Çarpımı

İki matrisin çarpımını yapan program kodu aşağıda verilmiştir. Program şu şekilde çalışmaktadır: eğer kullanıcı ilk girdiği matrisin sütun sayısı ile ikinci girdiği matrisin satır sayısını eşit girmemişse program kullanıcıdan tekrar matrisi boyutlarını belirlemesini isteyecektir. Böyle olmasının nedeni iki matrisi çarpabilmek için bu şarta uyması gerekmektedir.

Matrislerin boyutlarındaki uygunluk sağlandıktan sonra  kullanıcı tarafından her iki matrisin de değerleri ayrı ayrı girilir. Bu iki matris çarpılır ve olması gereken sonuç ekrana döndürülür:
#include <iostream>

void carpma();

int main(){
    carpma();
    
    return 0;
}
void carpma(){
    bool uyari = false;
    int m1, n1, m2, n2;
    do{ 
        if(uyari) std::cout << "A'nin sutun sayisi B'nin satir sayisina esit olmali" << std::endl;
        std::cout << "A matrisi(mxn): ";
        std::cout << "m : ";
        std::cin >> m1;
        std::cout << "n : ";
        std::cin >> n1;
        std::cout << "B matrisi(mxn): ";
        std::cout << "m : ";
        std::cin >> m2;
        std::cout << "n : ";
        std::cin >> n2;
        uyari = true;
    }while (n1 != m2);
    

    float a_matris[m1][n1];
    float b_matris[m2][n2];
    float sonuc_matris[m1][n2];

    
    for(int i=0; i < m1; i++){
        for(int j=0; j < n1; j++){
            std::cout << "A matrisi[" << i+1 << "][" << j+1 << "] = ";
            std::cin >> a_matris[i][j];
        }
    }

    std::cout << std::endl;
    
    for(int i=0; i < m2; i++){
        for(int j=0; j < n2; j++){
            std::cout << "B matris[" << i+1 << "][" << j+1 << "] = ";
            std::cin >> b_matris[i][j];
        }
    }

    // çarpım işlemi	
    for (int i = 0; i < m1; i++){
        for (int j = 0; j < n1; j++){
            sonuc_matris[i][j] = 0;
            for (int s = 0; s < n1; s++){
                sonuc_matris[i][j] += a_matris[i][s] * b_matris[s][j];
            }
        }
    }

    for (int i = 0; i < m1; i++){
        for (int j = 0; j < n2; j++){
            std::cout << sonuc_matris[i][j] << " ";
        }
        std::cout << std::endl;
    }
    
}

Hiç yorum yok:

Yorum Gönderme