Pointer

8

Click here to load reader

description

Praktikum Algoritma dan Pemrograman Jurusan Fisika FMIPA Unpad

Transcript of Pointer

Page 1: 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++)

Page 2: Pointer

{

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];

}

Page 3: Pointer

}

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

Page 4: 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;

}

Page 5: Pointer

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);

Page 6: Pointer

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++)

Page 7: Pointer

{

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:

Page 8: Pointer

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.