Matris İşlemleri Uygulaması Uygulama Konusu Uygulama 3x3 boyutlu matrislerle toplama, çıkarma ve çarpma işlemleri üzerinedir. Toplama İşlemi AA = aa iiii mmmmmm ve BB = bb iiii mmmmmm aynı tipte iki matris iken, elemanları ii = 1,2,, mm ve jj = 1,2,, nn iken cc iiii = aa iiii + bb iiii şeklinde oluşturulan CC = cc iiii mmmmmm matrislerinin toplamı denir. matrisine A ve B Çıkarma İşlemi Çıkarma işlemi toplamaya göre ters matris ile gerçekleştirilir. Buna göre AA = aa iiii mmmmmm, BB = bb iiii mmmmmm ve rr, ss RR olmak üzere, elemanları ii = 1,2,, mm ve jj = 1,2,, nn iken CC matrisinin elemanları cc iiii = rr aa iiii + ss bb iiii şeklindedir. rr = 1 ve ss = 1 alındığında, CC matrisine AA ile BB matrislerinin farkı denir. Çarpma İşlemi AA = aa iiii mmmmmm ve BB = bb iiii pppppp iken, elemanları ii = 1,2,, mm ve jj = 1,2,, nn iken pp cc iiii = kk=1 aa iiii bb kkkk şeklinde oluşturulan CC = cc iiii matrisine A ve B matrislerinin mmmmmm çarpımı denir. Program Yapısı Bilgi Girişi A ve B matrisleri ve aritmetik işlem seçimi İşlem Yapılan seçime göre matris işlemi Bilgi Çıkış C Matrisi Algoritma ve Akış Şeması Detaylı algoritma öğrenciye bırakılmıştır. Yardımcı olması amacıyla genellenmiş algoritma örneği aşağıda verilmiştir. 1. Adım: Başla 2. Adım: A matrisini gir 3. Adım: B matrisini gir 4. Adım: İşlem seçimi yap 5. Adım: Eğer seçim 1 ise C=A+B 6. Adım: Eğer seçim 2 ise C=A-B 7. Adım: Eğer seçim 3 ise C=A*B 8. Adım: Eğer seçim hatalı ise 4. Adım a git 9. Adım: C matrisini yaz 10. Adım: Bitir 1 - Bilgi Girişi 2 - İşlem 3 Bilgi Çıkışı Sayfa1
Başla 1 a[i][j] 1 - Bilgi Girişi 3 Bilgi Çıkışı i=1, n Bitir i=1, n c[i][j] ve \t \n b[i][j] ==1 ==2 c[i][j]+=a[i][j]+b[i][j] ==3 c[i][j]+=a[i][j]-b[i][j] 2 - İşlem k=1, <3 c[i][j]+=a[i][k]*b[k][j] 1 Sayfa2
Kaynak Program Kodu /* C Dili ile Matris İşlemleri */ #include<stdio.h> #include<conio.h> main() int a[3][3],b[3][3],c[3][3]=0,0,0,0,0,0,0,0,0,; int i,j,k; char cevap; /* BİLGİ GİRİŞİ */ printf("a Matrisini Giriyorsunuz!\n"); for(j=0;j<3;j++) scanf("%d",&a[i][j]); printf("b Matrisini Giriyorsunuz!\n"); for(j=0;j<3;j++) scanf("%d",&b[i][j]); : printf("toplama Islemi icin 1\nCikartma Islemi icin 2\n"); printf("carpma Islemi icin 3 giriniz\n"); scanf("%d",&cevap); /* İŞLEM */ switch(cevap) case 1: for(j=0;j<3;j++) c[i][j]+=a[i][j]+b[i][j]; break; case 2: for(j=0;j<3;j++) c[i][j]+=a[i][j]-b[i][j]; break; case 3: for(j=0;j<3;j++) for(k=0;k<3;k++) c[i][j]+=a[i][k]+b[k][j]; break; default: printf("yanlis Secim Yaptiniz!\n"); goto ; /* BİLGİ ÇIKIŞI */ for(j=0;j<3;j++) printf("%d\t",c[i][j]); printf("\n"); getch(); return 0; Sayfa3
Hedef Program Çıktısı (Derlenmiş Program) Kaynak programın çalışma akışı ve her yapılan işlem seçimine göre Bilgi girişi ve çıkışları aşağıdaki gibidir. Şekil 1. Hedef Programın Toplama İşlemi için Bilgi Girişi ve Çıkışı Akış diyagramımızı takip ederek, hedef programımızı yorumlarsak, ilk girilen bilgi A matrisinin elemanlarıdır (a[i][j]). İkinci girilen bilgi ise B matrisinin elemanlarıdır (b[i][j]). Son girilen bilgi ise hangi matris işleminin yapılacağının belirlendiği seçim bilgisidir (). Şekil 2. Hedef Programın Çıkarma İşlemi için Bilgi Girişi ve Çıkışı Sayfa4
Şekil 3. Hedef Programın Çarpma İşlemi için Bilgi Girişi ve Çıkışı Bilgi girişi gerçekleştiğinde, programımız Bilgi Girişi bölümünden İşlem bölümüne geçerek, yapılan matris işlemi seçimine göre A ve B matrislerinin toplamı Şekil 1 deki gibi, farkı Şekil 2 deki gibi veya çarpımı Şekil 3 deki gibi hesaplanmaktadır. Son adım olan Bilgi Çıkışı bölümünde, programımızın İşlem bölümünde hesapladığı C matrisi elemanlarını (c[i][j]) ekrana yazdırılmaktadır. Şekil 4. Hedef Programın yanlış seçim durumu için Bilgi Girişi ve Çıkışı Ancak yanlış seçim yapılması durumunda, Şekil 4 de görüleceği gibi, seçimin tekrar yapılması için işlem seçimi adımına geri dönülmektedir. Doğru seçim yapıldığında ise girilmiş olan A ve B matrisleri için seçilen işlem, İşlem Bölümü ve Bilgi Çıkışı bölümleri tekrarlanarak yerine getirilmekte ve Şekil 5 de görüldüğü gibi ekrana yazdırılmaktadır. Sayfa5
Şekil 5. Hedef Programın yanlış seçim durumu için Bilgi Girişi ve Çıkışı Öğrenci Uygulaması Bu uygulama FOR ve SWITCH yapıları kullanılarak hazırlanmıştır. Uygulamayı IF ve GOTO, WHILE ve/veya DO WHILE yapıları ile deneyiniz. Sayfa6