Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
Bazı durumlarda büyük miktarlarda veri dizileri kullanmak gerekebilir. Bu durumda çok boyutlu dizi olarak adlandırabileceğimiz matrisler kullanılabilir. Çok matrisler ayrıca matematiksel problem çözümlemelerinde ve görüntü saklamada ve işlemede oldukça yoğun bir biçimde kullanılmaktadır. Matrislerin her bir satırı bir dizi olarak düşünülebilir. Matrislerde de dizilerde olduğu gibi indisler kullanılmaktadır. Çok boyutlu diziler, iki, üç veya daha fazla boyutlu olabilirler. Örneğin 10 satır ve 10 sütundan meydana gelen iki boyutlu bir A matrisi A[10][10] şeklinde tanımlanır. İndis olarak i satırları ve j sütunları belirtmek üzere tanımlanır ise, bu matrisin elemanları A[i][j] şeklinde ifade edilebilir. Bu örnek matris için i ve j değerleri en fazla 10 olabilir. Matrisler tanımlanırken genel olarak boyutları tanımlanır. N M’ lik bir matris, N satır ve m sütundan oluşan ve N M elemana sahip bir matrisi ifade eder.
Bazı durumlarda büyük miktarlarda veri dizileri kullanmak gerekebilir. Bu durumda çok boyutlu dizi olarak adlandırabileceğimiz matrisler kullanılabilir. Çok matrisler ayrıca matematiksel problem çözümlemelerinde ve görüntü saklamada ve işlemede oldukça yoğun bir biçimde kullanılmaktadır. Matrislerin her bir satırı bir dizi olarak düşünülebilir. Matrislerde de dizilerde olduğu gibi indisler kullanılmaktadır. Çok boyutlu diziler, iki, üç veya daha fazla boyutlu olabilirler. Örneğin 10 satır ve 10 sütundan meydana gelen iki boyutlu bir A matrisi A[10][10] şeklinde tanımlanır. İndis olarak i satırları ve j sütunları belirtmek üzere tanımlanır ise, bu matrisin elemanları A[i][j] şeklinde ifade edilebilir. Bu örnek matris için i ve j değerleri en fazla 10 olabilir. Matrisler tanımlanırken genel olarak boyutları tanımlanır. N M’ lik bir matris, N satır ve m sütundan oluşan ve N M elemana sahip bir matrisi ifade eder.
Örnek 1: n*m boyutlu bir sayı matrisinin girişini yapan bir C/C++ programı yazalım ve akış diyagramını çizelim; #include int i,j,n,m; int A[100][100]; void main(void) {clrscr(); printf("n degerini giriniz: "); scanf("%d",&n); printf("m degerini giriniz: "); scanf("%d",&m); for(i=1;i<=n;i++) {for(j=1;j<=m;j++) { printf("A[%d][%d]: ",i,j); scanf("%d",&A[i][j]); }} getch(); }
Örnek 2: Girilen n*m boyutlu bir sayı matrisinde negatif ve pozitif elemanların sayısını ve ortalamasını bulan yapan bir C/C++ programı yazalım ve akış diyagramını çizelim;
#include int i,j,n,m,ng,poz; float A[100][100]; float ortn,ortp,tn,tp; void main(void) {clrscr(); printf("n degerini giriniz: "); scanf("%d",&n); printf("m degerini giriniz: "); scanf("%d",&m); ng=0; poz=0; tn=0; tp=0; for(i=1;i<=n;i++) {for(j=1;j<=m;j++) {printf("A[%d][%d]: ",i,j); scanf("%f",&A[i][j]); if(A[i][j]<0) {ng++; tn+=A[i][j];} else if(A[i][j]>0) {poz++; tp+=A[i][j];} }} ortn=tn/ng; ortp=tp/poz; printf("negatif sayisi:%d\n",ng); printf("negatif ortalama:%f\n",ortn); printf("pozitif sayisi:%d\n",poz); printf("pozitif ortalama:%f\n",ortp); getch(); }
Örnek Girilen n*n boyutlu bir A matrisinin transpozesini bulan n*n boyutlu bir B matrisine ve ekrana yazan bir C/C++ programı yazalım ve akış diyagramını çizelim. Bir matrisin transpozesi, mevcut matrisin satırları ile sütunlarının yer değiştirlmesi ile elde edilir. Matematiksel gösterimi ile yapılacak transpoze işlemi;
#include int i,j,n; int A[99][99],B[99][99]; void main(void) {clrscr(); printf("n degerini giriniz: "); scanf("%d",&n); for(i=1;i<=n;i++) {for(j=1;j<=n;j++) { printf("A[%d][%d]: ",i,j); scanf("%d",&A[i][j]); }} for(i=1;i<=n;i++) {for(j=1;j<=n;j++) {B[i][j]=A[j][i]; printf("%d ",B[i][j]); } printf("\n"); } getch(); }
Örnek Girilen 3*3 boyutlu bir A matrisinin determinantını bulan ve ekrana yazan bir C/C++ programı yazalım ve akış diyagramını çizelim. 3*3 boyutlu bir A matrisinin determinantı matematiksel olarak aşağıdaki şekilde ifade edilebilir;
#include int i,j,solk,sagk,det; int A[99][99]; void main(void) {clrscr(); for(i=1;i<=3;i++) {for(j=1;j<=3;j++) { printf("A[%d][%d]: ",i,j); scanf("%d",&A[i][j]); }} solk=A[1][1]*A[2][2]*A[3][3] +A[1][2]*A[2][3]*A[3][1] +A[1][3]*A[2][1]*A[3][2]; sagk=A[1][3]*A[2][2]*A[3][1] +A[1][1]*A[2][3]*A[3][2] +A[1][2]*A[2][1]*A[3][3]; det=solk-sagk; printf("determinant = %d",det); getch(); }
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz