Array 2 Dimensi

13
LAPORAN AKHIR ARRAY 2 DIMENSI AP VI SUNNY INEZA PUTRI 140310110017 I. Tugas Program Buatlah program C untuk mengalikan dua buah matriks, dengan rumus sebagai berikut : Cij=Aik x Bkj. Dengan A adalah matriks berukuran m× p dan B adalah matriks berukuran p×n . List program: #include <stdio.h> #include <conio.h> main() { int i,j,k,b1,b2,k1,k2; int a[10][10],b[10][10],c[10][10]; ulang: printf("jumlah baris matriks A: ");scanf("%d", &b1); printf("jumlah kolom matriks A: ");scanf("%d", &k1); printf("\n"); printf("jumlah baris matriks B: ");scanf("%d", &b2); printf("jumlah kolom matriks B: ");scanf("%d", &k2); if (k1 != b2) {printf("perkalian matriks tidak dapat dilakukan\n"); goto ulang;} // a printf("memasukkan nilai matriks A:\n"); for(i=0;i<b1;i++) { for(j=0;j<k1;j++) { printf("A(%d,%d)=",i+1,j+1); scanf("%d", &a[i][j]); } printf("\n"); }

description

Praktikum Algoritma dan Pemrograman Jurusan Fisika FMIPA Unpad

Transcript of Array 2 Dimensi

Page 1: Array 2 Dimensi

LAPORAN AKHIR

ARRAY 2 DIMENSI – AP VI

SUNNY INEZA PUTRI

140310110017

I. Tugas Program

Buatlah program C untuk mengalikan dua buah matriks, dengan rumus sebagai berikut :

Cij=Aik x Bkj.

Dengan A adalah matriks berukuran m× p dan B adalah matriks berukuran

p×n .

List program:

#include <stdio.h>

#include <conio.h>

main()

{

int i,j,k,b1,b2,k1,k2;

int a[10][10],b[10][10],c[10][10];

ulang:

printf("jumlah baris matriks A: ");scanf("%d", &b1);

printf("jumlah kolom matriks A: ");scanf("%d", &k1);

printf("\n");

printf("jumlah baris matriks B: ");scanf("%d", &b2);

printf("jumlah kolom matriks B: ");scanf("%d", &k2);

if (k1 != b2)

{printf("perkalian matriks tidak dapat dilakukan\n");

goto ulang;}

// a

printf("memasukkan nilai matriks A:\n");

for(i=0;i<b1;i++)

{

for(j=0;j<k1;j++)

{

printf("A(%d,%d)=",i+1,j+1);

scanf("%d", &a[i][j]);

}

printf("\n");

}

Page 2: Array 2 Dimensi

//b

printf("memasukkan nilai matriks B:\n");

for(j=0;j<k1;j++)

{

for(k=0;k<k2;k++)

{

printf("B(%d,%d)=",j+1,k+1);

scanf("%d", &b[j][k]);

}

printf("\n");

}

//proses

for(i=0;i<b1;i++)

{

for(k=0;k<k2;k++)

{

c[i][k]=0;

for(j=0;j<k1;j++)

c[i][k]+=a[i][j]*b[j][k];

}

}

//hasil

printf("hasil perkalian matriks:\n");

for(i=0;i<b1;i++)

{

for(k=0;k<k2;k++)

printf("%7d", c[i][k]);

printf("\n");

}

printf("\n");

getch();

}

Tampilan:

Page 3: Array 2 Dimensi

Analisa:

Dalam perkalian kita melakukan proses perulangan. Pertama kita melakukan

perulangan untuk nilai baris dan kolom yang sama sampai batas yang

dimasukkan. Kemudian dilakukan pengulangan untuk mengisi kolom-

kolomnya dan kemudian perulangan untuk mengisi baris-barisnya.

II. Tugas Akhir

1. Buatlah program C untuk menguji sifat simetris dari sebuah matriks

bujursangkar. Sebuah matriks disebut simetris apabila A=AT

List program:

#include <stdio.h>

#include <conio.h>

main()

{

int A[10][10], B[10][10];

int b, k, i, j,C;

ins:

printf("\nInput jumlah baris : ");

scanf("%d", &b);

printf("Input jumlah kolom : ");

scanf("%d", &k);

printf("\n");

if (b!=k)

{

printf("Jumlah baris dan Kolom tidak

sama!");

goto ins;

}

else{

Page 4: Array 2 Dimensi

for (i=1; i<=b; i++)

{

for (j=1; j<=k; j++)

{

printf("Masukkan elemen matriks A[%d][%d]

: ", i, j);

scanf("%d", &A[i][j]);

}

}

printf("\n\n");

printf("Matriks A \n\n");

for (i=1; i<=b; i++)

{

printf("\t");

for (j=1; j<=k; j++)

{

printf("%d\t", A[i][j]);

}

printf("\n");

}

printf(" \nTranspose Matriks A \n\n");

for (i=1; i<=k; i++)

{

printf("\t");

for (j=1; j<=b; j++)

{

B[i][j]=A[j][i];

printf("%d\t", B[i][j]);

}

printf("\n");

}

int x=0;

for (i=1; i<=b; i++)

{

for (j=1; j<=k; j++)

{

if(A[i][j]==B[i][j])

x=x+1;

else

x=0;

}

}

int h;

h=b*k;

if(x==h)

Page 5: Array 2 Dimensi

printf("Matriks A termasuk Matriks Simetris");

else

printf("Matriks A bukan Matriks Simetris");

}

getch();

}

Tampilan:

Analisa:

Dalam program ini harus menggunakan matriks bujursangkar, jika tidak

maka akan diminta kembali jumlah baris dan kolomnya. Jika jumlah

baris dan kolom sudah benar akan menginput elemen-elemen matriks

tersebut. Setelah itu dilakukan transpose terhadap matriks tersebut.

Kemudian akan dilakukan pengencekan terhadap posisi matriks agar

dapat ditentukan apakah termasuk matriks simetris atau bukan.

2. Buatlah program C yang bertujuan untuk menghitung nilai trace matriks

bujursangkar yang didefinisikan sebagai berikut : tr (A)=Σaii

List program:

#include<stdio.h>

#include<conio.h>

main ()

{

int i, j, b, k, trace, A[10][10];

lagi:

printf("Input Jumlah Baris : "); scanf("%d",

&b);

Page 6: Array 2 Dimensi

printf("Input Jumlah Kolom : "); scanf("%d",

&k);

printf("\n");

if(b != k)

{

printf("Matriks Yang Anda Masukkan

Bukan Matriks Bujur Sangkar \n");

printf("\n");

goto lagi;

}

else

{

for(i=1; i<=b; i++)

{

for(j=1; j<=k; j++)

{

printf("Masukkan Elemen

Matriks A[%d][%d] : ", i, j);

scanf("%d", &A[i][j]);

}

}

printf("\n");

printf("Matriks A adalah \n");

for (i=1; i<=b; i++)

{

for (j=1; j<=k; j++)

{

printf("%d\t", A[i][j]);

}

printf("\n");

}

printf("\n");

trace=0;

for(i=1; i<=b; i++)

{

j=i;

trace += A[i][j];

}

printf("Nilai Trace Matriks A adalah %d \n",

trace);

}

getch();

}

Tampilan:

Page 7: Array 2 Dimensi

Analisa:

Dalam program ini tentunya harus matriks bujursangkar, karena kita akan

menentukan trace (jumlah bilangan diagonal). Proses dalam program ini

adalah penjumlahan elemen yang memiliki indeks baris dan kolom yang

sama.

3. Buatlah program C untuk perkalian sebuah matriks dengan skalar, yang

didefinisikan sebagai berikut : B=c A , dengan c merupakan bilangan

skalar. List program:

#include<stdio.h>

#include<conio.h>

main ()

{

int i, j, C, b, k, A[10][10], B[10][10];

printf("Input Jumlah Baris : "); scanf("%d", &b);

printf("Input Jumlah Kolom : "); scanf("%d", &k);

printf("\n");

printf("Input Bilangan Skalar : "); scanf("%d",

&C);

printf("\n");

for(i=1; i<=b; i++)

{

for(j=1; j<=k; j++)

{

printf("Masukkan Elemen Matrik

A[%d][%d] : ", i, j);

scanf("%d", &A[i][j]);

}

}

printf("\n");

printf("Matriks A adalah \n");

Page 8: Array 2 Dimensi

for (i=1; i<=b; i++)

{

for (j=1; j<=k; j++)

{

printf("%d\t", A[i][j]);

}

printf("\n");

}

printf("\n");

printf("Hasil perkalian matriks A dengan

bilangan skalar %d adalah \n", C);

for (i=1; i<=k; i++)

{

for (j=1; j<=b; j++)

{

B[i][j]= C*A[i][j];

printf("%d\t", B[i][j]);

}

printf("\n");

}

getch();

}

Tampilan:

Analisa:

Dalam program ini kita dapat menentukan matriks yang dikali dengan bilangan scalar. Dalam prosesnya kita mengalikan bilangan scalar dengan

setiap elemen matriks tersebut.

III. Tugas Tambahan

1. Buatlah program C untuk menentukan matriks invers yang didefinisikan

sebagai berikut : A=A-1

List program:

#include<stdio.h>

Page 9: Array 2 Dimensi

#include<conio.h>

main()

{

int b, k, A[10][10], K[10][10];

int det, in[10][10];

printf("Berikut ini akan menentukan invers

matriks 2x2\n");

printf("Masukkan Elemen-elemen Matrik A\n");

for(b=1; b<=2; b++)

{

for(k=1; k<=2; k++)

{

printf("Masukkan Elemen Matrik

A[%d][%d] : ", b, k);

scanf("%d", &A[b][k]);

}

}

printf("\n");

printf("Matriks A adalah \n");

for (b=1; b<=2; b++)

{

for (k=1; k<=2; k++)

{

printf("%d \t", A[b][k]);

}

printf("\n");

}

printf("\n");

det =((A[1][1]*A[2][2])-(A[1][2]*A[2][1]));

printf("Determinan Matriks A adalah %d \n", det);

printf("\n");

if(det==0)

printf("Matriks Tidak Memiliki Invers Karena

Determinannya 0");

else

{

K[1][1] = A[2][2];

K[1][2] = -1*A[2][1];

K[2][1] = -1*A[1][2];

K[2][2] = A[1][1];

printf("Matriks Kofaktornya adalah \n");

for(b=1; b<=2; b++)

{

for(k=1; k<=2; k++)

Page 10: Array 2 Dimensi

{

printf("%d \t", K[b][k]);

}

printf("\n");

}

printf("\n");

printf("Matriks Adjointnya adalah \n");

for (b=1; b<=2; b++)

{

for (k=1; k<=2; k++)

{

printf("%d \t", K[k][b]);

}

printf("\n");

}

printf("Invers Matriks A adalah \n");

for(b=1; b<=2; b++)

{

for(k=1; k<=2; k++)

{

in[b][k] = K[k][b]/det;

printf("%d \t", in[b][k]);

}

printf("\n");

}

}

getch();

}

Tampilan:

Analisa:

Page 11: Array 2 Dimensi

Dalam program ini akan dilakukan invers matriks 2x2. Pertama kita

masukkan elemen-elemen matriks tersebut. Kemudian dilakukan

perhitungan determinan. Kemudian matriks transpose dari matriks

kofaktornya yang disebut adjoin. Kemudian adjoin dibagi dengan

determinan maka didapat matriks inversnya.

2. Buatlah program C untuk menentukan matriks termasuk segitiga atas /

bawah atau bukan

List program:

#include<stdio.h>

#include<conio.h>

main()

{

int i, j, b, k, A[10][10];

lagi:

printf("Input Jumlah Baris : "); scanf("%d",

&b);

printf("Input Jumlah Kolom : "); scanf("%d",

&k);

printf("\n");

if(b != k)

{

printf("Matriks Yang Anda Masukkan

Bukan Matriks Bujur Sangkar \n");

printf("\n");

goto lagi;

}

else

{

for(i=1; i<=b; i++)

{

for(j=1; j<=k; j++)

{

printf("Masukkan Elemen

Matrik A[%d][%d] : ", i, j);

scanf("%d", &A[i][j]);

}

}

printf("\n");

printf("Matriks A adalah \n");

for (i=1; i<=b; i++)

{

for (j=1; j<=k; j++)

Page 12: Array 2 Dimensi

{

printf("%d\t", A[i][j]);

}

printf("\n");

}

printf("\n");

printf("Jenis Matriks A adalah \n");

i=1;

j=k;

if(A[i][j]==0)

printf("MATRIKS SEGITIGA");

else if(A[j][i]==0)

printf("MATRIKS SEGITIGA");

else

printf("BUKAN MATRIKS SEGITIGA");

if(A[i][j-1]==0 && A[i+1][j]==0)

printf(" ATAS");

else if(A[j-1][i]==0 && A[j][i+1]==0)

printf(" BAWAH");

else

printf(" ");

}

getch();

}

Tampilan:

Analisa:

Untuk menentukan matriks segitiga atas atau bawah harus menggunakan

matriks bujursangkar. Pertama kita menentukan terlebih dahulu

Page 13: Array 2 Dimensi

diagonalnya 0 atau bukan, jika benar maka termasuk matriks segitiga.

Kemudian menentukan letak 0 lainnya apakah diatas atau dibawah

diagonal. Jika diatas diagonal termasuk matriks segitiga atas, dan jika

dibawah diagonal maka termasuk matriks segitiga bawah.

IV. Analisa Umum

Dalam array dua dimensi kita dapat melakukan banyak operasi yang dapat

dilakukan oleh matriks. Sperti penjumlahan, pengurangan, perkalian,

transpose, invers, kofaktor, menentukan determinan, menentukan segitiga

atas/bawah, dsb.

V. Kesimpulan

Array 2 dimensi adalah matriks, sehingga dapat dilakukan bermacam-macam

operasi yang dapat dilakukan oleh matriks.

VI. Resume Kuis

Dalam perkalian kita melakukan proses perulangan. Pertama kita melakukan

perulangan untuk nilai baris dan kolom yang sama sampai batas yang

dimasukkan. Kemudian dilakukan pengulangan untuk mengisi kolom-

kolomnya dan kemudian perulangan untuk mengisi baris-barisnya.

Dalam menentukan invers, matriks yang digunakan harus matriks

bujursangkar. Kemudian dilakukan pencarian matriks adjoin, yaitu matriks

kofaktor yang ditranspose. Setelah itu kita mencari determinan dari matriks

awal. Setelah itu, adjoin dibagi determinan maka akan didapat matriks

inversnya.

Untuk menentukan matriks segitiga atas atau bawah harus menggunakan

matriks bujursangkar. Pertama kita menentukan terlebih dahulu diagonalnya

0 atau bukan, jika benar maka termasuk matriks segitiga. Kemudian

menentukan letak 0 lainnya apakah diatas atau dibawah diagonal. Jika diatas

diagonal termasuk matriks segitiga atas, dan jika dibawah diagonal maka

termasuk matriks segitiga bawah.