Aybars Arslan

Console.WriteLine("Hello World");

C ile Matris ve Determinant İşlemleri

Arkadaşlar merhaba bugün C & C++ ile yazmış olduğum matris ve determinant işlemlerinin kodlarını paylaşacağım.

Program ile

  • 2 Matris toplamı
  • Skaler çarpım
  • 2 Matrisin çarpımı
  • Matris transpozu
  • Determinant alma

işlemleri yapılmıştır.

Matrislerim  3×3 biçimindedir.

İnceleyen arkadaşların yorumlarını bekliyorum.

 

Buyrun kodumuz :

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <conio.h>
#include <string>
#define N 3
#define M 3

/**********AYBARS*ARSLAN***********/

using namespace std;

void matrisToplamasi()
{
    /**MATRIS BOYUTUNU BURADAN AYARLAYABILIRIZ N VE M*/
    /**3 ADET MATRIS GIRISI YAPTIRACAGIZ A, B VE SONUC MATIRISIMIZ C*/
    int a[N][N],b[N][N],c[N][N];
    int i,j;
    printf("\nToplama Islemi\n");
    puts("A Matrisini Giriniz :");
    //cıkar
    /**MATRISLERIMIZI DOLDURUYORUZ*/
    for(i=0; i<N; i++)
        for(j=0; j<M; j++)
            scanf("%d",&a[i][j]);

    puts("B Matrisini Giriniz");
    for(i=0; i<N; i++)
        for(j=0; j<M; j++)
            scanf("%d",&b[i][j]);


    cout << endl << endl;
    /**A VE B MATRISLERINI YAZDIRIYORUM*/
    /******************************************/
    puts("A Matrisimiz : ");
    cout << endl;
    for(i=0; i<N; i++)
    {
        for(j=0; j<M; j++)
        {
            printf("%4d",a[i][j]);
        }
        cout << endl;
    }
    cout << endl << "\t+ " << endl;
    puts("B Matrisimiz : ");
    cout << endl;
    for(i=0; i<N; i++)
    {
        for(j=0; j<M; j++)
        {
            printf("%4d",b[i][j]);
        }
        cout << endl;
    }
    /******************************************/

    cout << endl << "\t= " << endl;
    //*****Toplam
    /**
    ONEMLI KISIM BURADA
    TOPLAMA ISLEMI YAPILIP YAZDIRILIYOR
     */

    puts("Toplam Matrisimiz : ");
    cout << endl;
    for(i=0; i<N; i++)
    {
        for(j=0; j<M; j++)
        {
            c[i][j] = a[i][j] + b[i][j];
            printf("%4d",c[i][j]);
        }
        printf("\n");
    }
}

/**SKALER CARPMA ISLEMI*/
void skalerCarpma()
{
    /**SKALER CARPMA ISLEMI YAPILACAK MATRISI TANIMILYIRUZ*/
    int a[N][N];
    int i,j;
    int sayi;
    puts("\nSkaler Carpma\n");

    /**CARPILMAK ISTENEN KATSAYIYI K DEGISKENINE ATIYORUZ*/
    printf("Matrisi Carpmak Istediginiz Katsayiyi Giriniz :");
    scanf("%d",&sayi);

    puts("A Matrisini Giriniz :");
    //cıkar
    /**MATRISIMIZI DOLDURUYORUZ*/
    for(i=0; i<N; i++)
    {
        for(j=0; j<M; j++)
        {
            scanf("%d",&a[i][j]);
            a[i][j] *= sayi;
        }
    }

    /**  BOYLEDE YAPILABILIR YUKARIDAKI GIBI SAYIYI ONCE
    ALARAKTA YAPILABILIR
        for(i=0; i<N; i++)
            for(j=0; j<M; j++)
        a[i][j] *= sayi;
    */
    printf("\nMatrisimizin %d ile Skaler Carpma Sonucu : \n",sayi);

    cout << endl;
    for(i=0; i<N; i++)
    {
        for(j=0; j<M; j++)
        {
            printf("%4d",a[i][j]);
        }
        printf("\n");
    }

}
/**SADECE KARE MATRISLER ICIN TASARLANMISTIR*/
void matrisCarpmasi()
{
    int a[N][N],b[N][N],c[N][N];
    int i,j,k;
    int top=0;
    puts("\nMatris Carpmasi\n");
    puts("A Matrisini Giriniz :");

    /**MATRISLERIMIZI DOLDURUYORUZ*/
    for(i=0; i<N; i++)
        for(j=0; j<M; j++)
            scanf("%d",&a[i][j]);

    puts("B Matrisini Giriniz");
    for(i=0; i<N; i++)
        for(j=0; j<M; j++)
            scanf("%d",&b[i][j]);


    puts("\nMatrislerimizin Carpma Sonucu : \n");
    cout << endl;

    /**MATRISIMIZI CARPIP YAZDIRIYORUZ*/
    for(i=0; i<N; i++)
    {
        for(j=0; j<M; j++)
        {
            top = 0; //toplami sifirlamamiz gerek
            for(k=0; k<3; k++)
                top=top+a[i][k]*b[k][j];
            c[i][j]=top;

            printf("%4d ",c[i][j]);
        }
        printf("\n");
    }

}
/**MANTIK COK BASİT ILERIMIZ J OLACAK
JLERIMIZ I*/
void matrisTranspozu()
{
    int a[N][N];
    int i,j;
    puts("\nMatris Transpozu\n");

    puts("A Matrisini Giriniz :");
    //cıkar
    /**MATRISLERIMIZI DOLDURUYORUZ*/
    for(i=0; i<N; i++)
        for(j=0; j<M; j++)
            scanf("%d",&a[i][j]);

    puts("A Matrisimiz : ");
    cout << endl;
    for(i=0; i<N; i++)
    {
        for(j=0; j<M; j++)
        {
            printf("%4d",a[i][j]);
        }
        cout << endl;
    }

    cout << endl << endl;
    /**I VE J YI DEGISTIRIP YAZDIGIMIZDA
    MATRISIMIZIN TRANSPOZUNU ELDE EDERIZ*/
    puts("A Matrisimizin Transpozu : ");
    cout << endl;
    for(i=0; i<N; i++)
    {
        for(j=0; j<M; j++)
        {
            printf("%4d",a[j][i]);
        }
        cout << endl;
    }
}

/**3X3 MATRIS DETERMINANTI*/
void determinant()
{
    int a[N][N];
    int i,j;
    long determinant;
    puts("\nMatris Determinanti\n");

    puts("A Matrisini Giriniz :");

    /**DETERMINANTI ALINACAK MATRISI DOLDURUYORUZ*/
    for(i=0; i<N; i++)
        for(j=0; j<M; j++)
            scanf("%d",&a[i][j]);

    puts("Matrisimiz : ");
    cout << endl;
    for(i=0; i<N; i++)
    {
        for(j=0; j<M; j++)
        {
            printf("%4d",a[i][j]);
        }
        cout << endl;
    }
    /**DETERMINANT ISLEMI*/
    determinant = a[0][0]*((a[1][1]*a[2][2]) - (a[2][1]*a[1][2]))
                  -a[0][1]*(a[1][0]*a[2][2] - a[2][0]*a[1][2])
                  + a[0][2]*(a[1][0]*a[2][1] - a[2][0]*a[1][1]);

    printf("\nDeterminant = %ld",determinant);

}
/**PROGRAM AKISINI KORUMAK ICIN YAZDIGIM
TEKRAR FONKSIYONU*/
char tekrar()
{
    char tekrar;

    printf("\n\nTekrar Islem Yapmak Icin e Tusuna Basiniz : ");
    scanf("%s",&tekrar);

    //Tekrar Oyna
    if(tekrar == 'e' || tekrar == 'E')
    {
        system("CLS");
        return tekrar;
    }
    return 0;
}

int main()
{
    //swtich secimi
    int secim;

burdan:
    printf("-----Matris Islemleri-----\n\n");
    printf("1 - Matris Toplami\n");
    printf("2 - Skaler Matris Carpimi\n");
    printf("3 - Matris Carpimi\n");
    printf("4 - Matris Transpozu\n");
    printf("5 - Matris Determinanti\n");

    printf("\nIslem Seciniz : ");
    scanf("%d",&secim);


    switch (secim)
    {
    case 1:
        matrisToplamasi();
        if(tekrar()=='e')
            goto burdan;
        break;
    case 2:
        skalerCarpma();
        if(tekrar()=='e')
            goto burdan;
        break;
    case 3:
        matrisCarpmasi();
        if(tekrar()=='e')
            goto burdan;
        break;
    case 4:
        matrisTranspozu();
        if(tekrar()=='e')
            goto burdan;
        break;
    case 5:
        determinant();
        if(tekrar()=='e')
            goto burdan;
        break;
    default:
        printf("Gecerisz bir islem girdiniz\n\n");
        if(tekrar()=='e')
            goto burdan;
        break;
    }
    return 0;
}

Kodla Kalın..

Paylaş !

, , , ,

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir