C/C++ Matris çarpımı

piyuvv

Centipat
Katılım
20 Ocak 2024
Mesajlar
11
Daha fazla  
Cinsiyet
Kadın
Meslek
öğrenci
Matris çarpımı yapan bir kod yazdım fakat örneğin 2x3 mertebeden 1. satırı {1, 2, 3} 2. satırı {3, 2, 1} olan matrisle 3x2 mertebeden 1. satırı {3, 2} 2. satırı [1, 2} 3. satırı [1, 1} olan matrisi çarptığım zaman doğru yanıt döndürmüyor. Ama her ikisi de 3x3 mertebeden olan iki matrisi çarpınca cevap doğru çıkıyor. Sanırsam yalnızca aynı mertebeden kare matrislerin çarpımını doğru yapabiliyor. Her matrisi başarıyla çarpabilmesi için ne yapmam gerekli?

C:
#include <stdio.h>
#include <stdlib.h>

int main() {
    int a, b, c;
    int x[10][10],y[10][10],z[10][10];
    int i, j,k; 
  
    printf("ilk matrisiniz kaca kac mertebeden olsun?\n\t"); scanf("%d%d",&a,&b);//axb
    printf("ikinci matrisiniz %d x kac mertebeden olsun?\n\t",b); scanf("%d",&c);//bxc
  
    printf("\n\t-ilk matris icin-\n");
    for(i=0;i<a;i++){
        for(j=0;j<b;j++){
            printf("\n%d. satir %d. sutun:\t",i+1,j+1);
            scanf("%d",&x[i][j]);
        }
    }
    for(i=0;i<a;i++){
        for(j=0;j<b;j++){
           printf("%5d",x[i][j]);
        }
        printf("\n\n");}
    printf("\n\t-ikinci matris icin-\n");
    for(i=0;i<b;i++){
        for(j=0;j<c;j++){
            printf("\n%d. satir %d. sutun:\t",i+1,j+1);
            scanf("%d",&y[i][j]);
        }
    }
    for(i=0;i<b;i++){
        for(j=0;j<c;j++){
           printf("%5d",y[i][j]);
        }
        printf("\n\n");}
    for(i=0;i<a;i++){
        for(j=0;j<c;j++){
           z[i][j]=0;
        }
    }
    for(i=0;i<a;i++){//a satir b sutun b satir c sutun
        for(j=0;j<c;j++){
            for(k=0;k<a;k++){
                z[i][j]+=(x[i][k]*y[k][j]);
            }
        }
    }
  
    for(i=0;i<a;i++){
        for(j=0;j<c;j++){
           printf("%5d",z[i][j]);
        }
        printf("\n\n");}
  
  
    return 0;
}
 
Son düzenleyen: Moderatör:
Hocam, fonksiyonları öğrendiniz mi? Öğrendiyseniz pratik yapmak için çok güzel bir örnek olmuş.

Mesela array oluşturduğunuz for döngüsünü 2 kez yazmışsınız, onun yerine bir fonksiyon tanımlayıp fonksiyon içerisinde arrayleri oluşturabilirsiniz. Aynı mantık arrayleri print etmek için fonksiyon oluşturup, fonksiyonu çağırarak istediğiniz Array'i print edebilirsiniz.

Ek olarak "a, b, c, z" gibi değişken isimleri kullanmak yerine "matrix_1, sütun_1 (1. Matrisin sütun bilgisi), satır_1" şeklinde isimlendirme kullanabilirsiniz. Diğer türlü okunabilirlik çok düşmüş.
 
fonksiyonları öğrendim, haklısınız öyle daha kolay olurdu fakat kopyala yapıştır yaptığım için çok önemsemedim o an. daha çok matriks algoritmasını anlamak için kafa yordum. algoritmayı kavradıktan sonra ikinci kez yazsam fonksiyonları kullanırım. ayrıca tavsiyeleriniz için teşekkürler, kodun okunabilir olması önemli çok haklısınız. bundan sonra daha çok dikkat edeceğim.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…