Anda di halaman 1dari 38

LAPORAN PRAKTIKUM

ALGORITMA DAN STRUKTUR DATA


Modul Praktikum 1

Disusun oleh:

Nama : Ariful Fikri


NIM : 2207125090
Dosen : T. Yudi Hadiwandra, S.Kom, M.Kom
Asisten : 1. Nadia Gaesya
2. Imperia Prestise Sinaga

PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS RIAU
GENAP 2022/2023
1. Tujuan Praktikum
Praktikum ini bertujuan agar mahasiswa memahami :

a. Memahami konsep struktur data array dalam Bahasa C


b. Memahami konsep pointer dalam Bahasa C
c. Memahami konsep struktur dalam Bahasa C
d. Mengerti perbedaan penggunaan array dan pointer
e. Mengerti perbedaan array dan struktur

2. Dasar Teori

a. Array
Array adalah struktur yang terdiri dari beberapa elemen dengan tipe data
yang sama. Elemen array disusun secara berurutan dalam memori
komputer. Semua elemen array memiliki tipe yang sama. Array berguna
untuk mengatur kumpulan data homogen di mana ukuran maksimum atau
jumlah elemen yang diketahui sejak awal. Homogen berarti bahwa setiap
elemen dari array yang diberikan harus memiliki tipe data yang sama.

b. Struktur Data
Struktur Data adalah bagan organisasi, sepeti struktur dan array, yang
diterapkan pada data untuk menginterpretasikan data dan melakukan
operasi tertentu padanya. Menggunakan struktur data yang tepat dalam
proses pemrograman menghasilkan algoritma yang lebih jelas dan akurat
yang membuat program lebih sederhana secara keseluruhan.

c. Pointer
Dalam ilmu komputer, pointer adalah tipe data dalam bahasa pemrograman
yang nilainya mengacu pada penggunaan alamat yang ada untuk menunjuk
langsung ke nilai lain yang disimpan di tempat lain di memori komputer.
Pointer dapat sangat meningkatkan kinerja data untuk operasi berulang
seperti traversing string, lookup tabel, control tabel dan tree structure.
1.

2
3. Pembahasan
A. Tugas Pendahuluan
Flowchart Latihan 1 :

START

Mendeklarasikan
char nama; char balik
int jumlah; int i; int k=0

Mendapatkan jumlah karakter nama

Membalikkan dan menyimpan string

Mencetak string sebelum


dan sesudah dibalik

END

3
Flowchart Latihan 3 :

START

Mendeklarasikan
Nilai count, pointer temp, dan nilai sum

Mengubah data, menunjuk data,


dan mengkalikan data

Mencetak nilai akhir count, temp, dan sum

END

B. Percobaan
Percobaan 1 : Cara memberikan nilai pada array dan mengakses array
#include <stdio.h>

int main ()
{
int n [ 10 ];
int i,j;

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


{
n [ i ] = i + 100;
}

4
for (j = 0; j < 10; j++ )
{
printf("Element[%d] = %d\n", j, n[j] ) ;
}
}

Percobaan 2 : Menghitung total dari nilai yang terdapat pada array


#include <stdio.h>
#define SIZE 12

int main ()
{
int a [ SIZE ] = { 1, 3, 5, 4, 7, 2, 99, 16, 45,
67, 89, 45 };
int i = 0;
int total = 0;
for ( int i = 0; i < SIZE; ++i)
{
total+=a[i];
}

printf( "Total elemen yang terdapat di array :


%d\n", total );
}

Percobaan 3 : Penggunaan Array pada Bilangan Fibonaci


#include <stdio.h>
#define MAX 20

int fibo[MAX];

int main ()
{
int i;

fibo [1] = 1;
fibo [2] = 1;

for (i = 3; i < MAX; i++)


fibo [i] = fibo [i-2] + fibo [i-1];

printf("%d Bilangan Fibonaci Pertama adalah :


\n", MAX);
for (i = 1; i < MAX; i++)
printf("%d", fibo [i]);
}

Percobaan 4 : Cara mengakses array dua dimensi


#include <stdio.h>

5
int main()
{
int a[5][2] = {{0,0},{1,2},{2,4},{3,6},{4,8}};
int i,j;

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


{
for (j = 0; j < 2; j++)
{
printf("a[%d][%d] = %d\n", i,j,
a[i][j] );
}
}
}

Percobaan 5 : Program Merubah Isi Variabel melalui Pointer


#include <stdio.h>

main()
{
int y, x = 87;
int *px;

x = 87;

px = &x;
y = *px;

printf("Alamat x = %p\n", &x);


printf("Isi px = %p\n", px);
printf("Isi x = %d\n", x);
printf("Nilai yang ditunjuk oleh px= %d\n",
*px);
printf("Nilai y = %d\n", y);
}

Percobaan 6 : Program Mengakses & Mengubah Isi Suatu Variabel Pointer


#include <stdio.h>

main()
{
float d = 54.5f, *pd;

printf("Isi d mula-mula = %g\n", d);

pd = &d;
*pd += 10;

printf("Isi d sekarang = %g\n", d);


}

6
Percobaan 7 : Mengakses elemen array dengan pointer.
#include <stdio.h>

int main()
{
int my_array[] = {1, 23, 17, 4, -5, 100};
int *ptr;

int i;
ptr = &my_array[0];

printf("\n\n");
for (i = 0; i < 6; i++)
{
printf("my_array[%d] =
%d",i,my_array[i]);
printf("ptr + %d = %d\n",i,
*(ptr+i));
}
}

Percobaan 8 : Mengkopi string menggunakan pointer.


#include <stdio.h>

char strA[80] = "ABCDE";


char strB[80];

int main()
{
char *pA;
char *pB;
puts(strA);
pA = strA;
puts(pA);
pB = strB;
putchar('\n');
while(*pA != '\0')
{
*pB++ = *pA++;
}
*pB = '\0';
puts(strB);
}

Percobaan 9 : Penggunaan Pointer untuk Bilangan Fibonaci


#include <stdio.h>
#include <stdlib.h>
#define MAX 20

int main()
{

7
int *fibo;
int i;

fibo = (int*) malloc(MAX * sizeof(int));

*(fibo + 1) = 1;
*(fibo + 2) = 1;

for (i=3;i<=MAX;i++)
*(fibo + i)= (*(fibo + i - 2) + *(fibo + i -
1));
printf("%d Bilangan Fibonaci Pertama adalah : \
n",MAX);
for (i=1;i<MAX;i++)
printf("%d",*(fibo+i));
}

Percobaan 10 : Penggunaan Struktur pada Konversi Koordinat Polar ke


Koordinat Cartesian
#include <stdio.h>
#include <math.h>

struct polar {
double r;
double alpha;
};

struct kartesian {
double x;
double y;
};

int main()
{
struct polar p1;
struct kartesian k1;

printf("Masukkan nilai r untuk koordinat polar


: ");
scanf("%lf",&p1.r);

printf("Masukkan nilai alpha untuk koordinat


polar : ");
scanf("%lf",&p1.alpha);

k1.x = p1.r * cos(p1.alpha);


k1.y = p1.r * sin(p1.alpha);

printf("Nilai koordinat kartesian untuk


koordinat polar r = %2.2lf alpha = %2.2lf
adalah:\n",p1.r,p1.alpha);
printf("x = %2.2lf y = %2.2lf",k1.x,k1.y);

8
}

Percobaan 11 : Program Struktur dalam Array


#include <stdio.h>
#include <string.h>

struct dtnilai
{
char nrp[10];
char nama[20];
double nilai;
};

struct dtnilai data[10];


int j=0;

void tambah_data()
{
char jawab[2];
while(1)
{
fflush(stdin);
printf("NRP :");scanf("%s",&data[j].nrp);

printf("Nama :");scanf("%s",&data[j].nam
a);
printf("Nilai
Test:");scanf("%lf",&data[j].nilai);

printf("Ada data
lagi(y/t):");scanf("%s",&jawab);

if((strcmp(jawab,"Y")==0)||
(strcmp(jawab,"y")==0))
{
j++;continue;
}
else if ((strcmp(jawab,"T")==0)||
(strcmp(jawab,"t")==0))
break;
}
}

void tampil()
{
int i;
printf("Data Mahasiswa yang telah diinputkan:\
n");
printf("NRP\tNama\tNilai\n");

for (i=0;i<=j;i++)
{

9
printf("%s\t%s\t%6.2f\
n",data[i].nrp,data[i].nama,data[i].nilai);
}
}

int main()
{
tambah_data();
tampil();
}

Percobaan 12 : Mengakses Struktur dengan Pointer


#include <stdio.h>
#include <string.h>

struct dtnilai
{
char nrp[10];
char nama[20];
double nilai;
};

struct dtnilai my_struct;

int main()
{
strcpy(my_struct.nrp,"01");
printf("\n%s ",my_struct.nrp);
strcpy(my_struct.nama,"Arini");
printf("%s ",my_struct.nama);
my_struct.nilai = 63.6;
printf("%g\n",my_struct.nilai);
}

int tampil(struct dtnilai my_struct)


{
printf("\n%s ", my_struct.nrp);
printf("%s ", my_struct.nama);
printf("%g\n", my_struct.nilai);
}

C. Latihan
Latihan 1 : Terdapat array dengan tipe char yang berisi {'p', 'e', 'n', 's', 'i', 't'},
baliklah array tersebut menjadi tisnep.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char nama[]={'p','e','n','s','i','t'};

10
char balik[6];
int jumlah;
jumlah=strlen(nama);
int i;
int k=0;
for(i=jumlah-1;i>=0;i--)
{
balik[k]=nama[i];
k++;
}

printf("Sebelum String di balik :%s", nama);


printf("\nSetelah String di balik :%s", balik);
return 0;
}

Latihan 2 : Terdapat dua buah matrik dengan ordo n yang direpresentasikan


dengan array dimensi dua, lakukan operasi penjumlahan, pengurangan dan
perkalian.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 2

void tambah(int A[N][N],int B[N][N],int C[N][N])


{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
C[i][j]=A[i][j]+B[i][j];
}
}
}

void kurang(int A[N][N],int B[N][N],int C[N][N])


{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
C[i][j]=A[i][j]-B[i][j];
}
}
}

void kali(int A[N][N],int B[N][N],int C[N][N])


{
int i, j, k, jumlah; jumlah=0;

11
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
for(k=0;k<N;k++)
{
jumlah+=A[i][k]*B[k][j];
C[i][j]=jumlah;
jumlah=0;
}
}
}
}

int main()
{
int M1[N][N]={1,2,3,4};
int M2[N][N]={5,6,7,8};
int hasil[N][N];
char lagi='y';
int i,j,pilih;
do
{
printf("\n");
printf("1.Penjumlahan\n");
printf("2.Pengurangan\n");
printf("3.Perkalian\n");
printf("Pilihan : ");
scanf("%d",&pilih);
switch(pilih)
{
case 1:tambah(M1,M2,hasil);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",hasil[i]
[j]);
}
printf("\n");
}
break;

case 2:kurang(M1,M2,hasil);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",hasil[i]
[j]);
}
printf("\n");
}

12
break;

case 3:kali(M1,M2,hasil);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",hasil[i]
[j]);
}
printf("\n");
}
break;

default:printf("\nTerimakasih
telah menggunakan program");
exit(1);
}

printf("Lagi? (y/t)");
fflush(stdin);
scanf("%c",&lagi);
}

while(lagi=='y');
printf("\nTerimakasih telah Menggunakan
Program");
}

Latihan 3 : Bagaimana output program di bawah ini?


#include <stdio.h>
#include <stdlib.h>

main()
{
int count = 10, *temp, sum = 7;
temp = &count;
*temp = 32;
temp = &sum;
*temp = count;
sum = *temp * 4;
printf("count = %d, *temp = %d, sum = %d\n",
count,*temp, sum );
}

Latihan 4 : Program Aritmatika Polinom


#include <iostream>

using namespace std;

int main()
{

13
cout<<"------------------ Aritmatika Polinomial
------------------"<<endl;
cout<<"Diketahui : "<<endl;
cout<<"P1 = 6x8 + 8x7 + 5x5 + x3 + 15"<<endl;
cout<<"P2 = 3x9 + 4x7 + 3x4 + 2x3 + 2x2 +
10"<<endl;
cout<<"P3 = X2 + 5"<<endl;

cout<<endl<<"==================================
===================="<<endl;

int P1[11]={15,0,0,1,0,5,0,8,6,0,0};
int P2[11]={10,0,2,2,3,0,0,4,0,3,0};
int P3[11]={5,0,1,0,0,0,0,0,0,0,0};
int bil[12]={0,0,0,0,0,0,0,0,0,0,0,0};
int a, b;

cout<<"- Penjumlahan \n";


cout<<"P1 + P2 = (6x8 + 8x7 + 5x5 + x3 + 15) +
(3x9 + 4x7 +3x4 + 2x3 + 2x2 + 10)"<<endl;
cout<<"P1 + P2 = ";
for(int a=0;a<10;a++)
{
bil[a]+=*(P1+a)+*(P2+a);
}

for (int a=11;a>=0;a--)


{
if (bil[a]==0)
{
cout<<"";
}
else
{
if (a>1)
cout<<""<<bil[a]<<"x"<<a<<" + ";
else if(a==1)
cout<<""<<bil[a]<<"x"<<" + ";
else if (a>=0) cout<<""<<bil[a];
}
}

cout<<"\n\n- Pengurangan \n";


cout<<"P1 - P2 = (6x8 + 8x7 + 5x5 + x3 + 15) -
(3x9 + 4x7 +3x4 + 2x3 + 2x2 + 10)"<<endl;
cout<<"P1 - P2 = ";
for(int a=0;a<10;a++)
{
bil[a]=*(P1+a)-*(P2+a);
}

for (int a=11;a>=0;a--)


{

14
if (bil[a]==0)
{
cout<<"";
}
else
{
if (a>1)
{
if (bil[a]>1) cout<<" +
"<<bil[a]<<"x"<<a;
else if (bil [a]<0) cout<<"
"<<bil[a]<<"x"<<a;
}
else if(a==1)
cout<<""<<bil[a]<<"x"<<" " ;
else if (a>=0) cout<<" +
"<<bil[a];
}
}

int bil2[12]={0,0,0,0,0,0,0,0,0,0,0,0};
cout<<"\n\n- Perkalian \n";
cout<<"P1 * P3 = (6x8 + 8x7 + 5x5 + x3 + 15) *
(X2 +5)"<<endl;
cout<<"P1 * P3 = ";
for(int a=0;a<10;a++)
{
for(int b=0;b<4;b++)
{
bil2[a+b] += *(P1+a) * *(P3+b);
}
}

for(int a=11;a>=0;a--)
{
if (bil2[a]==0)
{
cout<<" ";
}
else
{
if(a>1)
{
cout<<""<<bil2[a]<<"x"<<a<<"+";
}
else if (a==1)
{
cout<<""<<bil2[a]<<"x"<<" + ";
}
else if (a==0)
{
cout<<""<<bil2[a];
}

15
}
}

int bil3[12]={0,0,0,0,0,0,0,0,0,0,0,0};
cout<<"\n\n- Turunan \n";
cout<<"P2' = (3x9 + 4x7 + 3x4 + 2x3 + 2x2 +
10)'"<<endl;
cout<<"P2' = ";
for(int a=0;a<10;a++)
{
bil3[a] = P2[a+1]* (a+1);
}

for (int a=11;a>=0;a--)


{
if (bil3[a]==0)
{
cout<<"";
}
else
{
if (a>=1)
{
cout<<"+"<<bil3[a]<<"x"<<a;
}
}
}

return 0;
}

Latihan 5 : Program Bilangan Kompleks


#include <iostream>
#include <conio.h>

using namespace std;

struct bil
{
int riil[2];
int imajiner[2];
}
kompleks;

void penjumlahan (bil &kompleks)


{
int r,i;
r = kompleks.riil[0] + kompleks.riil[1];
i = kompleks.imajiner[0]+ kompleks.imajiner[1];

cout << "Maka Hasil Penambahan Dua Bilangan


Kompleks : " <<r<< " + " <<i<< " i ";

16
}

void pengurangan (bil &kompleks)


{
int r,i;
r = kompleks.riil[0] - kompleks.riil[1];
i = kompleks.imajiner[0]- kompleks.imajiner[1];

cout << "\nMaka Hasil Pengurangan Dua Bilangan


Kompleks : " <<r<< " + " <<i<< " i ";
}

void perkalian (bil &kompleks)


{
int a,a2,b,b2;
a = kompleks.riil[0] * kompleks.riil[1];
a2 = kompleks.imajiner[0] *
kompleks.imajiner[1];
b = kompleks.riil[0] * kompleks.imajiner[1];
b2 = kompleks.imajiner[0] * kompleks.riil[1];

cout << "\nMaka Hasil Perkalian Dua Bilangan


Kompleks : " << "("<<a<<"-"<<a2<<")" << "+"
<< "("<<b<<"+"<<b2<<")" << "i";
}

void pembagian (bil &kompleks)


{
int a,a2,b,b2,c,c2,d,d2;
a = kompleks.riil[0] / kompleks.riil[1];
a2 = kompleks.imajiner[0] /
kompleks.imajiner[1];
b = kompleks.riil[0] / kompleks.imajiner[1];
b2 = kompleks.imajiner[0] / kompleks.riil[1];
c = kompleks.riil[0] / kompleks.riil[0];
c2 = kompleks.imajiner[0] /
kompleks.imajiner[0];
d = kompleks.riil[1] / kompleks.riil[1];
d2 = kompleks.imajiner[1] /
kompleks.imajiner[1];

cout<<"\nMaka Hasil Pembagian Dua Bilangan


Kompleks :
"<<"["<<"("<<a<<"+"<<a2<<")"<<"/"<<"("<<c<<"+"<<
c2<<")"<<"]"<<"+"<<"["<<"("<<b<<"-"<<b2<<")"<<"/
"<<"("<<d<<"+"<<d2<<")"<<"]"<<"i" << endl;
}

int main()
{

cout<<"----------------------------------------
-------";

17
cout<<"\n PROGRAM OPERASI PEMBACA DUA BILANGAN
KOMPLEKS" << endl;

cout<<"----------------------------------------
-------";

bil kompleks;
for (int a=0;a<2;a++)
{
cout <<"\nIsi Bilangan Kompleks Ke- "<<
a+1 << endl;
cout <<"1). Bilangan Riil : ";cin >>
kompleks.riil[a];
cout <<"2). Bilangan Imajiner :
";cin >> kompleks.imajiner[a];
}

for (int a=0;a<2;a++)


{
cout <<"\nBilangan Kompleks yang ke " <<
a+1 << " : "<< kompleks.riil[a] << " + "
<< kompleks.imajiner[a] << "i";
}

cout<<endl<<endl;

penjumlahan(kompleks);
pengurangan(kompleks);
perkalian(kompleks);
pembagian(kompleks);
}

4. Hasil
A. Percobaan
Percobaan 1 : Cara memberikan nilai pada array dan mengakses array

Penjelasan : Pemrograman ini memanfaatkan perulangan (loop) dan array.


Dengan mendeklarasikan array dengan jumlah elemen sebanyak 10.
Kemudiam dilakukan perulangan sebanyak 10 kali. Dimana setiap
perulangan diberikan nilai i+ 100, sehingga memiliki nilai berbeda pada

18
setiap elemen. Hasil dari program ini menampilkan 10 baris output yang
menunjukkan nilai yang berbeda-beda.

Percobaan 2 : Menghitung total dari nilai yang terdapat pada array

Penjelasan : Pemrograman ini menggunakan perulangan (looping) dan


pengoperasian array. Dengan memberikan definisi bernilai 12, kemudian
dibuat sebuat array dengan 12 elemen dan nilai yang berbeda. Kemudian
dilakukan perulangan dan berhenti ketika nilai akhir sudah sama dengan
definisi yang diberikan. Kemudian hasil akhir akan menampilkan total
elemen yang terdapat pada array.

Percobaan 3 : Penggunaan Array pada Bilangan Fibonaci

Penjelasan : Program ini di gunakan untuk menentukan 20 bilangan


fibonacci pertama. Tipe data yang digunakan adalah int (integer) yang
merupakan bilangan bulat dengan menggunakan variabel i. Header yang
digunakan adalah <stdio.h> untuk perintah printf.

19
Percobaan 4 : Cara mengakses array dua dimensi

Penjelasan : Program ini adalah contoh dari multidimensional array.


Dimana pertama-tama dideklarasikan array multidimensional yang
memiliki 5 baris dan 2 kolom. Kemudian dilakukan looping untuk
membaca setiap baris dan kolom. Setelah itu ditampilkan nilai elemen
array dan kita menambahkan indeks baris dan kolom dalam output-nya.

Percobaan 5 : Program Merubah Isi Variabel melalui Pointer

Penjelasan : Program ini memperlihatkan bagaimana sebuah variabel


ditunjuk oleh sebuah pointer. Pertama, dideklarasikan variabel x dengan
nilai 87. Kemudian, pointer dideklarasikan dengan alamat variabel x.
Setelah itu dideklarasikan juga variabel y dengan diisi dengan nilai pointer
px yaitu 87. Kemudian ditampilkan pencetakan dari nilai variabel yang
sudah dideklarasikan dengan pointer tadi.

20
Percobaan 6 : Program Mengakses & Mengubah Isi Suatu Variabel Pointer

Penjelasan : Program ini memiliki tujuan untuk menampilkan nilai float


yang disimpan dalam variabel. Kemudian, nilai yang ada diubah dengan
memanfaatkan pointer. Setelah itu ditampilkan nilai varibel sebelum dan
sesudah diubah dengan memanfaatkan pointer.

Percobaan 7 : Mengakses elemen array dengan pointer.

Penjelasan : Program ini menunjukkan penggunaan pointer dan array.


Pertama, dibuat sebuah array dan dimasukkan 6 elemen. Kemudian,
pointer digunakan untuk mengambil alamat pada elemen pada array.
Kemudian, dilakukan loop sebanyak 6 kali. Setelah itu ditampilkan nilai
pada array dan nilai yang ditunjukkan pointer.

21
Percobaan 8 : Mengkopi string menggunakan pointer.

Penjelasan : Program ini bertujuan untuk mengkopi string. Dalam


program terdapat dua variabel. Kemudian digunakan pointer untuk
menunjuk dan mengakses alamat masing-masing variabel. Kemudian
dilakukan loop while untuk memindahkan varibel melalui pointer. Setelah
itu akan ditampilkan hasil dari variabel yang telah dipindahkan
menggunakan pointer tadi.

Percobaan 9 : Penggunaan Pointer untuk Bilangan Fibonaci

Penejelasan : Program ini memanfaatkan fungsi malloc untuk membuat


array fibo. Kemudian dilakukan perulangan untuk menghitung deret
fibonacci dan menyimpannya dalam array fibo. Kemudian setiap angka
ditampilkan dalam output-nya.

Percobaan 10 : Penggunaan Struktur pada Konversi Koordinat Polar ke


Koordinat Cartesian

Penjelasan : Program ini mengkonversi koordinat polar ke koordinat

22
cartesian. Program ini menggunakan dua struct, dengan 2 variabel di
setiap struct. Kemudian user diminta untuk memasukkan nilai untuk
koordinat polar. Kemudian nilai disimpan dan dilanjutkan dengan
menggunakan rumus untuk mencari nilai koordinat cartesian. Setelah
konversi selesai, program menampilkan nilai hasil porses yang telah
dilakukan.

Percobaan 11 : Program Struktur dalam Array

Penjelasan : Program diatas digunakan untuk menentukan nilai


koordinaat cartesian untuk koordinat polar dengan memasukkan nilai r
dan alpha dengan berdasarkan rumus kl.x = pl.r* cos (pl.alpha) dan kl.y=
pl.r* sin(pl.alpha)

Percobaan 12 : Mengakses Struktur dengan Pointer

Penjelasan : Program ini menggunakan struktur data. Kemudian


dideklarasikan variabel sebagai tipe data. Kemudian nilai dari elemen diisi
secara langsung dari elemen-elemen yang sudah ada. Kemudian hasil akan
berupa data yang ditampilkan pada output.

23
B. Latihan
Latihan 1 : Terdapat array dengan tipe char yang berisi {'p', 'e', 'n', 's', 'i', 't'},
baliklah array tersebut menjadi tisnep.

Penjelasan : Program diatas berfungsi untuk membalikkan huruf - huruf


yang kita input. Untuk membalikkan suatu huruf dari kata, maka kita
harus membuat agar masing – masing huruf suatu kata tersebut memiliki
masing masing indeks atau array

Latihan 2 : Terdapat dua buah matrik dengan ordo n yang direpresentasikan


dengan array dimensi dua, lakukan operasi penjumlahan, pengurangan dan
perkalian.

Penejelasan : Program ini bertujuan untuk melakukan penjumlahan,


pengurangan, ataupun perkalian menggunakan array multidimensional.
Pertama, mendeklarasikan array multidimensional sebanyak 2 baris 4
kolom. Kemudian, user memilih rumus penjumlahan, pengurangan, ataupun

24
perkalian sesuai dengan pilihan user untuk mengolah array. Kemudian, hasil
dari pengolahan rumus tadi ditampilkan pada output. Dan user juga dapat
memilih rumus pengolahan array yang lainnya.

Latihan 3 : Bagaimana output program di bawah ini?


#include <stdio.h>
#include <stdlib.h>

main()
{
int count = 10, *temp, sum = 7;
temp = &count;
*temp = 32;
temp = &sum;
*temp = count;
sum = *temp * 4;
printf("count = %d, *temp = %d, sum = %d\n",
count,*temp, sum );
}

Output :

Penjelasan : Program ini berjalan dengan cara memanipulasi variabel dan


pointer. Pertama, mendeklarasikan beberapa variabel dan nilainya.
Kemudian, alamat memori variabel diubah dengan pointer. Kemudian,
pada perintah terakhir variabel tidak diubah melainkan dikalikan dan
menghasilkan nilai baru. Setelah itu hasil perubahan ditampilkan pada
output.

25
Latihan 4 : Program Aritmatika Polinom

Penjelasan : Program ini berfungsi untuk menjalankan operasi aritmatika


pada polinomial. Polinomial telah dideklarasikan dengan 3 bentuk.
Kemudian terdapat operasi penjumlahan, pengurangan, perkalian, dan
turunan pada polinomial. Setelah operasi dilakukan, hasil akan ditampilkan
pada output.

26
Latihan 5 : Program Bilangan Kompleks

Penjelasan : Program ini berfungsi melakukan operasi matematika pada


dua bilangan kompleks. Pertama, user dapat menginput dua buah bilangan
kompleks yang disimpan sebagai data. Kemudian bilangan yang diinput
user akan diolah dalam operasi penjumlahan, pengurangan, perkalian, dan
pembagian. Hasil dari operasi tersebut akan ditampilkan pada output.

5. Kesimpulan

a. Struktur data adalah cara menyimpan, menyusun, dan mengatur data

27
pada media penyimpanan komputer agar dapat digunakan secara
efisien.
b. Algoritma adalah serangkaian langkah untuk memecahkan masalah
dengan cara yang sistematis dan logis untuk menyelesaikan masalah.
c. Jika kita membuat program dengan data yang batasnya sudah kita
ketahui, kita dapat menggunakan array (tipe data statis), tetapi jika kita
tidak mengetahui batasan datanya, kita dapat menggunakan pointer (tipe
data dinamis).
d. Untuk sekumpulan data dengan tipe data yang berlainan, namun
merupakan satu-kesatuan, kita dapat menggunakan struktur untuk
merepresentasikannya.

6. Listing Program
Latihan 1 : Terdapat array dengan tipe char yang berisi {'p', 'e', 'n', 's', 'i', 't'},
baliklah array tersebut menjadi tisnep.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char nama[]={'p','e','n','s','i','t'};
char balik[6];
int jumlah;
jumlah=strlen(nama);
int i;
int k=0;
for(i=jumlah-1;i>=0;i--)
{
balik[k]=nama[i];
k++;
}

printf("Sebelum String di balik :%s", nama);


printf("\nSetelah String di balik :%s", balik);
return 0;
}

Output :

28
Latihan 2 : Terdapat dua buah matrik dengan ordo n yang direpresentasikan
dengan array dimensi dua, lakukan operasi penjumlahan, pengurangan dan
perkalian.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 2

void tambah(int A[N][N],int B[N][N],int C[N][N])


{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
C[i][j]=A[i][j]+B[i][j];
}
}
}

void kurang(int A[N][N],int B[N][N],int C[N][N])


{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
C[i][j]=A[i][j]-B[i][j];
}
}
}

void kali(int A[N][N],int B[N][N],int C[N][N])


{
int i, j, k, jumlah; jumlah=0;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
for(k=0;k<N;k++)
{
jumlah+=A[i][k]*B[k][j];
C[i][j]=jumlah;

29
jumlah=0;
}
}
}
}

int main()
{
int M1[N][N]={1,2,3,4};
int M2[N][N]={5,6,7,8};
int hasil[N][N];
char lagi='y';
int i,j,pilih;
do
{
printf("\n");
printf("1.Penjumlahan\n");
printf("2.Pengurangan\n");
printf("3.Perkalian\n");
printf("Pilihan : ");
scanf("%d",&pilih);
switch(pilih)
{
case 1:tambah(M1,M2,hasil);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",hasil[i]
[j]);
}
printf("\n");
}
break;

case 2:kurang(M1,M2,hasil);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",hasil[i]
[j]);
}
printf("\n");
}
break;

case 3:kali(M1,M2,hasil);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",hasil[i]

30
[j]);
}
printf("\n");
}
break;

default:printf("\nTerimakasih
telah menggunakan program");
exit(1);
}

printf("Lagi? (y/t)");
fflush(stdin);
scanf("%c",&lagi);
}

while(lagi=='y');
printf("\nTerimakasih telah Menggunakan
Program");
}

Output :

Latihan 3 : Bagaimana output program di bawah ini?


#include <stdio.h>
#include <stdlib.h>

main()
{
int count = 10, *temp, sum = 7;
temp = &count;
*temp = 32;

31
temp = &sum;
*temp = count;
sum = *temp * 4;
printf("count = %d, *temp = %d, sum = %d\n",
count,*temp, sum );
}

Output :

Latihan 4 : Program Aritmatika Polinom


#include <iostream>

using namespace std;

int main()
{
cout<<"------------------ Aritmatika Polinomial
------------------"<<endl;
cout<<"Diketahui : "<<endl;
cout<<"P1 = 6x8 + 8x7 + 5x5 + x3 + 15"<<endl;
cout<<"P2 = 3x9 + 4x7 + 3x4 + 2x3 + 2x2 +
10"<<endl;
cout<<"P3 = X2 + 5"<<endl;

cout<<endl<<"==================================
===================="<<endl;

int P1[11]={15,0,0,1,0,5,0,8,6,0,0};
int P2[11]={10,0,2,2,3,0,0,4,0,3,0};
int P3[11]={5,0,1,0,0,0,0,0,0,0,0};
int bil[12]={0,0,0,0,0,0,0,0,0,0,0,0};
int a, b;

cout<<"- Penjumlahan \n";


cout<<"P1 + P2 = (6x8 + 8x7 + 5x5 + x3 + 15) +
(3x9 + 4x7 +3x4 + 2x3 + 2x2 + 10)"<<endl;
cout<<"P1 + P2 = ";
for(int a=0;a<10;a++)
{
bil[a]+=*(P1+a)+*(P2+a);
}

32
for (int a=11;a>=0;a--)
{
if (bil[a]==0)
{
cout<<"";
}
else
{
if (a>1)
cout<<""<<bil[a]<<"x"<<a<<" + ";
else if(a==1)
cout<<""<<bil[a]<<"x"<<" + ";
else if (a>=0) cout<<""<<bil[a];
}
}

cout<<"\n\n- Pengurangan \n";


cout<<"P1 - P2 = (6x8 + 8x7 + 5x5 + x3 + 15) -
(3x9 + 4x7 +3x4 + 2x3 + 2x2 + 10)"<<endl;
cout<<"P1 - P2 = ";
for(int a=0;a<10;a++)
{
bil[a]=*(P1+a)-*(P2+a);
}

for (int a=11;a>=0;a--)


{
if (bil[a]==0)
{
cout<<"";
}
else
{
if (a>1)
{
if (bil[a]>1) cout<<" +
"<<bil[a]<<"x"<<a;
else if (bil [a]<0) cout<<"
"<<bil[a]<<"x"<<a;
}
else if(a==1)
cout<<""<<bil[a]<<"x"<<" " ;
else if (a>=0) cout<<" +
"<<bil[a];
}
}

int bil2[12]={0,0,0,0,0,0,0,0,0,0,0,0};
cout<<"\n\n- Perkalian \n";
cout<<"P1 * P3 = (6x8 + 8x7 + 5x5 + x3 + 15) *
(X2 +5)"<<endl;
cout<<"P1 * P3 = ";
for(int a=0;a<10;a++)

33
{
for(int b=0;b<4;b++)
{
bil2[a+b] += *(P1+a) * *(P3+b);
}
}

for(int a=11;a>=0;a--)
{
if (bil2[a]==0)
{
cout<<" ";
}
else
{
if(a>1)
{
cout<<""<<bil2[a]<<"x"<<a<<"+";
}
else if (a==1)
{
cout<<""<<bil2[a]<<"x"<<" + ";
}
else if (a==0)
{
cout<<""<<bil2[a];
}
}
}

int bil3[12]={0,0,0,0,0,0,0,0,0,0,0,0};
cout<<"\n\n- Turunan \n";
cout<<"P2' = (3x9 + 4x7 + 3x4 + 2x3 + 2x2 +
10)'"<<endl;
cout<<"P2' = ";
for(int a=0;a<10;a++)
{
bil3[a] = P2[a+1]* (a+1);
}

for (int a=11;a>=0;a--)


{
if (bil3[a]==0)
{
cout<<"";
}
else
{
if (a>=1)
{
cout<<"+"<<bil3[a]<<"x"<<a;
}
}

34
}

return 0;
}

Output :

Latihan 5 : Program Bilangan Kompleks


#include <iostream>
#include <conio.h>

using namespace std;

struct bil
{
int riil[2];
int imajiner[2];
}
kompleks;

35
void penjumlahan (bil &kompleks)
{
int r,i;
r = kompleks.riil[0] + kompleks.riil[1];
i = kompleks.imajiner[0]+ kompleks.imajiner[1];

cout << "Maka Hasil Penambahan Dua Bilangan


Kompleks : " <<r<< " + " <<i<< " i ";
}

void pengurangan (bil &kompleks)


{
int r,i;
r = kompleks.riil[0] - kompleks.riil[1];
i = kompleks.imajiner[0]- kompleks.imajiner[1];

cout << "\nMaka Hasil Pengurangan Dua Bilangan


Kompleks : " <<r<< " + " <<i<< " i ";
}

void perkalian (bil &kompleks)


{
int a,a2,b,b2;
a = kompleks.riil[0] * kompleks.riil[1];
a2 = kompleks.imajiner[0] *
kompleks.imajiner[1];
b = kompleks.riil[0] * kompleks.imajiner[1];
b2 = kompleks.imajiner[0] * kompleks.riil[1];

cout << "\nMaka Hasil Perkalian Dua Bilangan


Kompleks : " << "("<<a<<"-"<<a2<<")" << "+"
<< "("<<b<<"+"<<b2<<")" << "i";
}

void pembagian (bil &kompleks)


{
int a,a2,b,b2,c,c2,d,d2;
a = kompleks.riil[0] / kompleks.riil[1];
a2 = kompleks.imajiner[0] /
kompleks.imajiner[1];
b = kompleks.riil[0] / kompleks.imajiner[1];
b2 = kompleks.imajiner[0] / kompleks.riil[1];
c = kompleks.riil[0] / kompleks.riil[0];
c2 = kompleks.imajiner[0] /
kompleks.imajiner[0];
d = kompleks.riil[1] / kompleks.riil[1];
d2 = kompleks.imajiner[1] /
kompleks.imajiner[1];

cout<<"\nMaka Hasil Pembagian Dua Bilangan


Kompleks :
"<<"["<<"("<<a<<"+"<<a2<<")"<<"/"<<"("<<c<<"+"<<
c2<<")"<<"]"<<"+"<<"["<<"("<<b<<"-"<<b2<<")"<<"/

36
"<<"("<<d<<"+"<<d2<<")"<<"]"<<"i" << endl;
}

int main()
{

cout<<"----------------------------------------
-------";
cout<<"\n PROGRAM OPERASI PEMBACA DUA BILANGAN
KOMPLEKS" << endl;

cout<<"----------------------------------------
-------";

bil kompleks;
for (int a=0;a<2;a++)
{
cout <<"\nIsi Bilangan Kompleks Ke- "<<
a+1 << endl;
cout <<"1). Bilangan Riil : ";cin >>
kompleks.riil[a];
cout <<"2). Bilangan Imajiner :
";cin >> kompleks.imajiner[a];
}

for (int a=0;a<2;a++)


{
cout <<"\nBilangan Kompleks yang ke " <<
a+1 << " : "<< kompleks.riil[a] << " + "
<< kompleks.imajiner[a] << "i";
}

cout<<endl<<endl;

penjumlahan(kompleks);
pengurangan(kompleks);
perkalian(kompleks);
pembagian(kompleks);
}

Output :

37
38

Anda mungkin juga menyukai