Pointer
Click here to load reader
-
Upload
sunny-ineza -
Category
Documents
-
view
53 -
download
0
description
Transcript of Pointer
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.