Anda di halaman 1dari 8

LAPORAN AKHIR POINTER (AP VII)

SUNNY INEZA PUTRI 140310110017

I.

TUGAS AKHIR 1. Penjumlahan dan pengurangan matriks dengan pointer List program:
#include <stdio.h> #include <conio.h> #define max 100 main () { typedef int matriks [max][max]; matriks A, B, C, D; int *ptrA[max][max] ,*ptrB[max][max], *ptrC[max][max], *ptrD[max][max]; int i, j, b, k; printf("\nPenjumlahan dan pengurangan matriks dengan menggunakan konsep pointer\n"); printf("\nMasukkan jumlah baris matriks : "); scanf("%d", &b); printf("Masukkan jumlah kolom matriks : "); scanf("%d", &k); printf("\n"); printf("Masukkan elemen matriks A :\n"); for(i=0; i<b; i++) { for(j=0; j<k; j++) { printf("\tA[%d][%d] = ", i+1,j+1); scanf("%d", &A[i][j] ); ptrA[i][j] = &A[i][j]; } } printf("Masukkan elemen matriks B :\n"); for(i=0; i<b; i++) { for(j=0; j<k; j++)

{ printf("\tB[%d][%d] = ", i+1,j+1); scanf("%d", &B[i][j] ); ptrB[i][j] = &B[i][j]; } } printf("\nMatriks A = \n"); for(i=0; i<b; i++) { for(j=0; j<k; j++) { printf("\t %d ", *ptrA[i][j] ); } printf("\n"); } printf("\nMatriks B = \n"); for(i=0; i<b; i++) { for(j=0; j<k; j++) { printf("\t %d ", *ptrB[i][j] ); } printf("\n"); } for(i=0; i<b; i++) { for(j=0; j<k; j++) { C[i][j] = A[i][j] + B[i][j]; ptrC[i][j] = &C[i][j]; } } printf("\nHasil penjumlahan matriks A dan B adalah \n"); for(i=0; i<b; i++) { for(j=0; j<k; j++) { printf("\t %d ", *ptrC[i][j] ); } printf("\n"); } for(i=0; i<b; i++) { for(j=0; j<k; j++) { D[i][j] = A[i][j] - B[i][j]; ptrD[i][j] = &D[i][j]; }

} printf("\nHasil pengurangan matriks A dan B adalah \n"); for(i=0; i<b; i++) { for(j=0; j<k; j++) { printf("\t %d ", *ptrD[i][j] ); } printf("\n"); } getch(); return 0; }

Tampilan:

Analisa: Dalam program ini dilakukan penjumlahan dan pengurangan matriks. Hal ini merupakan pengembangan dari konsep array dua dimensi, hanya saja ini menggunakan konsep pointer. Dalam array dua dimensi dilakukan pengulangan untuk menginput elemen-elemen matriks. Sedangkan dalam pointer digunakan langsung pointer untuk melakukan pengulangan menginput elemen-elemen matriks. Pointer menyimpan elemen-elemen matriks tersebut. Kemudian dalam proses dilakukan penjumlahan atau pengurangan pointer, sehingga didapat penjumlahan dan pengurangan matriks tersebut. 2. Transpose matriks dengan pointer

List program:
#include <stdio.h> #include <conio.h> #define max 100 main () { typedef int matriks [max][max]; matriks T; int *ptrT[max][max]; int i, j, b, k; printf("Masukkan jumlah baris matriks : ");scanf("%d", &b); printf("Masukkan jumlah kolom matriks : ");scanf("%d", &k); printf("\nelemen matriks A : \n"); printf("\n"); for(i=0; i<b; i++) { for(j=0; j<k; j++) { printf("A[%d][%d] = ", i+1,j+1);scanf("%d", &T[i][j] ); ptrT[i][j] = &T[i][j]; } } printf("\nmatriks A =\n\n"); for(i=0; i<b; i++) { for(j=0; j<k; j++) { printf(" %d ", *ptrT[i][j] ); } printf("\n"); } printf("\ntranspose matriks A =\n\n"); for(i=0; i<b; i++) { for(j=0; j<k; j++) { printf(" %d ", *ptrT[j][i] ); } printf("\n"); } getch(); return 0; }

Tampilan:

Analisa: Dalam program ini dilakukan transpose matriks. Dimana menggunakan pointer untuk menyimpan elemen-elemen matriks yang kemudian dalam prosesnya akan dilakukan pemindahan posisi baris menjadi kolom, kolom menjadi baris. 3. Perkalian matriks dengan pointer List program:
#include <stdio.h> #include <conio.h> #define max 100 main() { int A[max][max], B[max][max], C[max][max], I, J, K, b1, b2, k1, k2; int *ptrA[max][max] ,*ptrB[max][max], *ptrC[max][max]; ulang: printf("Jumlah Baris Matrik A ?");scanf("%d", &b1); printf("Jumlah Kolom Matrik A ?");scanf("%d", &k1); printf("\n"); printf("Jumlah Baris Matrik B ?");scanf("%d", &b2); printf("Jumlah Kolom Matrik B ?");scanf("%d", &k2);

printf("\n"); if (k1 != b2) {printf("Perkalian matriks tidak bisa dilakukan\n\n"); goto ulang; } else printf("Memasukkan Nilai Matrik A:\n"); for(I=0; I<b1; I++) { for(J=0; J<k1; J++) { printf("A[%3d,%3d]?",I+1,J+1); scanf("%d", &A[I][J]); ptrA[I][J] = &A[I][J]; } printf("\n"); } printf("Menampilkan Nilai Matrik A:\n"); for(I=0; I<b1; I++) { for(J=0; J<k1; J++) { printf("%5d", *ptrA[I][J]); } printf("\n"); } printf("Memasukkan Nilai Matrik B:\n"); for(J=0; J<k1; J++) { for(K=0; K<k2; K++) { printf("B[%3d,%3d]?",J+1,K+1); scanf("%d", &B[J][K]); ptrB[J][K] = &B[J][K]; } printf("\n"); } printf("Menampilkan Nilai Matrik B:\n"); for(J=0; J<k1; J++) { for(K=0; K<k2; K++)

{ printf("%5d", *ptrB[J][K]); } printf("\n"); } 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]; ptrC[I][K] = & C[I][K]; } } printf("Hasil perkalian matrik :\n"); for(I=0; I<b1; I++) { for(K=0; K<k2; K++) printf("%7d",*ptrC[I][K]); printf("\n"); } printf("\n"); getch(); }

Tampilan:

Analisa: Dalam program ini digunakan pointer untuk menginput elemen-elemen matriks dan menampilkannya. Dan prosesnya seperti perkalian dengan array dua dimensi. Hanya saja untuk menampilkan hasilnya digunankan pointer. II. ANALISA UMUM Pointer digunakan untuk menyimpan elemen-elemen dalam matriks. Yang kemudian jika dipanggil akan menampilkan elemen-elemen tersebut. Dengan pointer dapat dilakukan penjumlahan dan pengurangan. Tetapi, untuk perkalian dilakukan dahulu prosesnya kemudian baru menyatakan dengan pointer. III. KESIMPULAN Pointer adalah suatu variable penunjuk ke alamat memori tertentu. Pointer juga merupakan isi memori. Pointer sering dinamakan dengan alamat memori, walaupun sebenarnya lebih tepat bila disebut dengan pencatat atau penunjuk alamat memori.