Anda di halaman 1dari 36

TUGAS 1 TI 1

IMAM CIPTARJO – 6307130

STRUKTUR DATA
POINTER
SORTING

SEARCHING

20 S OAL P O I N T E R – D A R I T I N G K AT 3

1. Buat program yang membedakan antara penunjuk dan alamat pointer ?


-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>

Praktek Struktur Data


int a=4;
void getAGlobal(){
cout << "A Global adalah " << a << " alamatnya " << &a;
}

void fungsi_by_value(int a){


a = a * 3;
cout << "\nA By Value adalah = " << a << " alamatnya adalah " << &a;
}

void main(){
clrscr();
int a = 5;

getAGlobal();
cout << "\nA Main adalah = " << " alamatnya adalah " << &a;
fungsi_by_value(a);
cout << "\nA Main setelah fungsi dipanggil adalah = " << a << "
alamatnya adalah " << &a;

getch();
}

2. Buat program membesarkan kata, misal: imam menjadi IMAM dan


tampilkan alamat memorinya ?
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>

void gokil(char *);


void main(){
clrscr();
char string[1];
cout << "Masukkan Kata : "; cin >> string;
cout << "String sebelum proses adalah " << string;
gokil(string);
cout << "\nString setelah proses adalah " << string << " berada pada
alamat " << &string;

getch();

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

void gokil(char *s) {


while ( *s != '\0' ) {
if ( *s >= 'a' && *s <= 'z' )
*s -= 32;
++s;
}
}

3. Buat program membalikkan besar dan kecil huruf, misal: iMaM menjadi
ImAm, dan tampilkan alamatnya memorinya ?
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <conio.h>
#include <iostream.h>

Praktek Struktur Data


void Balik_Huruf(char s[]){
int n;
for(n=0;s[n]!='\0';n++);
for(int i=0;i<n;i++){
if(s[i]>='a' && s[i]<='z') s[i] = s[i] - 'a' + 'A';
else if(s[i]>='A' && s[i]<='Z') s[i] = s[i] - 'A' + 'a';
}
}

void main(){
clrscr();
char *s;

cout << "Masukkan kalimat dengan huruf besar dan kecil : ";
cin.getline (s,100);

cout << "String mula-mula = " << s;


cout << "\nString hasil = ";
Balik_Huruf(s);
cout << s << " berada pada alamat " << &s;
getch();
}

4. Buat program menukarkan 2 angka


misal: angka1=5, angka2=7 berubah jadi angka1=7, angka2=5 ?
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>

void tukar(int *ptr1, int *ptr2);

int main() {
clrscr();
int input, num1, num2;

cout << "Masukkan angka pertama : "; cin >> num1;


cout << "Masukkan angka kedua : "; cin >> num2;

tukar(&num1,&num2);
cout << "\nAngka akan tertukar menjadi " << num1 << " dan " << num2;
getch();

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

void tukar(int *ptr1, int *ptr2) {


int temp;
temp = *ptr1; // 1
*ptr1 = *ptr2; // 2
*ptr2 = temp; // 3
}

5. Buat program mengganti nilai array, misal: nama[0]=Angel, setelah


dirubah menjadi nama[0]=Bambang ?
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>

main()

Praktek Struktur Data


{ char *nama[3] = {"Angel","Cheryl","Jasmine"};
clrscr();
cout << "Menampilkan nama Awal : \n";

for (int i=0; i<3; i++)


{ cout << nama[i] << endl;
}

nama[0] = "Bambang";
nama[1] = "Sutarman";
nama[2] = "Imat";
cout << "\nMenampilkan nama setelah diubah : \n";

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


{ cout << *(nama+i) << endl;
}
getch();
}

6. Buat program menginputkan angka lalu ditampilkan lagi beserta alamat


dengan menggunakan array-pointer? (karena menggunakan array, semua
angka berada pada alamat yang sama)
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>

void main(){
clrscr();
int a[5], input, *p;

cout << "Masukkan Jumlah Data : "; cin >> input;

for(int i=0; i<input; i++){


cout << "Masukkan Nilai ke-" << 1+i << " : "; cin >> a[i];
}
p=a;

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


cout << *p << " alamatnya adalah : " << &p << endl;
p++;
}

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

getch();
}

7. Buat program menampilkan array 2 dimensi dengan bantuan pointer?


-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>

void main(){
clrscr();
char a[3][5] = { "ABCDE","FGHIJ","KLMNO" };
char *p;

p=&a[0][0];
for(int i=1; i<=3; i++){
for(int j=1; j<=5; j++){

Praktek Struktur Data


cout << *p;
p++;
}
cout << "\n";
}
getch();
}

8. Buat program menghitung jumlah kata atau kalimat ?


-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <conio.h>
#include <iostream.h>
#include <string.h>

void hitung_char(char data[]);


void main()
{ clrscr();
char data[100], *teks;
int x;

cout << "Masukkan teks : "; cin.getline (data,100);

hitung_char(data);
teks=data;

getch();
}

void hitung_char(char data[])


{ int jumlah=0;
for (int i=0; data[i]; i++)
{
jumlah++;
}
cout << "jumlah karakter : " << jumlah << endl;
}

9. Buat program membalikkan kata atau kalimat ?


-----------------------------------------------------------------------------------------------------------
------------
CODING:

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

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

void terbalik(char s[]){


int n;
for(n=0;s[n]!='\0';n++);
for(int i=n-1;i>=0;i--) cout << s[i];
}

void main(){
clrscr();
char *s;

cout << "Masukkan kalimat : "; cin.getline (s,100);


cout << "String mula-mula = " << s;
cout << "\nString terbalik = ";
terbalik(s);
getch();
}

Praktek Struktur Data


10. Buat program menampilkan nilai terbesar dari jumlah data yang
diinputkan ?
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <stdio.h>
#include <conio.h>

void main()
{ clrscr();
int nil[x], i, x, a=0, *p, kecil, in;

for (i=0;i<x;i++)
{
scanf("%d", &nil[i]);
}
p=&nil[0];

for (i=0;i<x;i++)
{ if (*p>=nil[i])
{
p=&nil[a];
in=a;
}else{
p++;
i=0;
}
}

printf("Angka terbesar:%d\n", *p);


printf("pada alamat ke:%p\n", p);
printf("Pada index ke :%d", in+=1);
getch();
}

11. Buat program fungsi LEFT, atau mengambil karakter dari kiri, misal:
ASMIRANDAH, diambil 4 menjadi ASMI
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <stdio.h>

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

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

main()
{ char *kata;
int x,y,ambil;
kata = new char;

clrscr();
cout << "Masukkan kata : ";
gets(kata);
y = strlen(kata) - 1;
cout << "Jumlah yang di ambil : "; cin >> ambil;
cout << "Hasilnya adalah : ";

for (x=0; x<ambil; x++)


{
cout << *(kata+x);

Praktek Struktur Data


}
getch();
}

12. Buat program fungsi RIGHT, atau mengambil karakter dari kiri, misal:
ASMIRANDAH, diambil 5 menjadi ANDAH
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>

main()
{ char *kata;
int x,y,ambil;
kata = new char;

clrscr();
cout << "Masukkan kata : ";
gets(kata);
y = strlen(kata) - 1;
cout << "Jumlah yang di ambil : "; cin >> ambil;
cout << "Hasilnya adalah : ";
ambil=ambil-1;

for (x=y-ambil;x<=y;x++)
{
cout << *(kata+x);
}
getch();
}

13. Buat program mengkonversi dari biner ke desimal, serta tampilkan alamat ?
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>
#include <string.h>

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

main()
{ char *bil;
int banyak, nilai=1, hasil=0, mundur;

clrscr();

cout<<"MASUKAN BILANGAN BINER : "; cin>>bil;

banyak = strlen(bil);

mundur = banyak;
for (int x=0; x<banyak; x++)
{
mundur--;
if (bil[mundur] == '1')
{
hasil = hasil + nilai;
}
nilai = nilai + nilai;

Praktek Struktur Data


}

cout<<"Bilangan Desimalnya adalah : "<<hasil;


cout<<"Alamat Bilangan Desimal adalah : "<<&hasil;
getch();
}

14.Buat program statistik, menghitung rata-rata, nilai minimum dan maksimum


?
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <stdio.h>
#include <math.h>
#include <conio.h>

double rata2(double *data, int n);


double min(double *data, int n);
double max(double *data, int n);

void main()
{ clrscr();
double *x;
int i,j,k,n;

printf("Banyaknya data ");


scanf("%d",&n);

x = new double [n];//maksimum array

for(i=0;i<n;i++)
{
printf("Data [%3d] = ",i+1);
scanf("%lf",&x[i]);
}

printf("Rata-rata = %6.3f\n",rata2(x,n));
printf("Minimum = %6.3f\n",min(x,n));
printf("Maximum = %6.3f\n",max(x,n));

getch();
}

double rata2(double *data, int n)

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

{ int i;
double sum=0;

for(i=0;i<n;i++)
{ sum+=data[i]; }
return sum/(double)n;
}

double min(double *data, int n)


{ int i;
double min=data[0];

for(i=1;i<n;i++)
{ if(data[i]<min)
min=data[i];
}
return min;
}

Praktek Struktur Data


double max(double *data, int n)
{ int i;
double max=data[0];

for(i=1;i<n;i++)
{ if(data[i]>max)
max=data[i];
}
return max;
}

15. Buat program dengan 10 array lalu tampilkan masing-masing alamat index ?
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>

void main()
{ int a[10], *p, i;

clrscr();
p=a;
for(i=1; i<=10; i++){
*p=i;
p++;
}
for(i=0; i<10; i++)
cout << a[i] << " alamatnya berapda di memori " << &a[i] << endl;
getch();
}

16. Buat program untuk menampilkan bulan sesuai dengan angka, misal 3
bulan Maret ?
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include<stdio.h>
#include<conio.h>

char *nama_bulan(int n);


main()
{ int bl;

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

clrscr();
printf("Bulan (1..12): ");
scanf("%d",&bl);
printf("%s\n",nama_bulan(bl) );
getch();
}

char *nama_bulan(int n)
{
static char *bulan[]= {"Kode bulan Salah","Januari","Februari","Maret",
"April","Mei","Juni","Juli","Agustus","September",
"Oktober","November","Desember"};
return ( (n<1||n>12) ? bulan[0] : bulan[n] );
}

17.Buat program Jumlah dan Selisih dari 2 angka yang diinputkan ?


-----------------------------------------------------------------------------------------------------------
------------

Praktek Struktur Data


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

void jumlahselisih(int a, int b, int *j, int *s) {


*j=a+b;
if (a>=b) *s=a-b;
else *s=b-a;
}

int main() {
clrscr();
int bil1, bil2, jumlah, selisih;

cin >> bil1;


cin >> bil2;
jumlahselisih(bil1, bil2, &jumlah, &selisih);

cout << "Jumlah = " << jumlah;


cout << "\nSelisih = " << selisih;
getch();
}

18. Buat program yang tipe datanya char dan menampilkan kalimat sebanyak
10 kali, tetapi dengan menggunakan pointer dan fungsi ?
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>

void ubah(char *nama);

void main()
{ char *char_ptr="Jasmine";
clrscr();
ubah(char_ptr);
getch();
}

void ubah(char *nama)


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

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

cout << "Imam Pacarnya " << nama << endl;


}
}

19.Buat program menjumlahkan angka yang diinputkan ?


-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <stdio.h>
#include <conio.h>

int main() {
int arr[5], jumlah=0, i;

clrscr();

for (i=0; i<5; i++) scanf("%d", arr+i);


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

Praktek Struktur Data


jumlah += *(arr+i);
if (i<4) printf("%d + ", *(arr+i));
else printf("%d = %d", *(arr+i) << jumlah);
}
getch();
}

20. Buat program Jumlah Kali 2, misal : 2 x (5+6)=22 ?


-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>

int jumlahganda(int a, int b) {


int c;
c=2*(a+b);
return c;
}

int main() {
int bil1, bil2, bil3;

clrscr();
cout << "Masukkan bilangan 1 : "; cin >> bil1;
cout << "Masukkan bilangan 2 : "; cin >> bil2;

bil3=jumlahganda(bil1, bil2);
cout << "2 x (" << bil1 << " + " << bil2 << ") = " << bil3;
getch();
}

20 S OAL SORTING – D A R I T I N G K AT 2

1. Buat program mengurutkan angka dari terkecil sampai terbesar


menggunakan QUICK SORT ?
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <stdio.h>
#include <conio.h>

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

#define N 20

int quick(int bawah, int atas);


int i, j, A[N];

main()
{ int jml;
clrscr();
printf("Masukkan jumlah bilangan (maks 20) : ");
scanf("%d",&jml);

// input data

for (i=0;i<jml;i++)
{
printf("Bilangan ke %d : ",i+1);
scanf("%d",&A[i]);
}

Praktek Struktur Data


quick(0,jml-1);

printf("Data yang telah terurut : \n");


for (i=0;i<jml;i++)
{
printf("%d\n",A[i]);
}
getch();
}

int quick(int bawah, int atas)


{
int pivot, temp;

if (bawah<atas)
{
i = bawah;
j = atas;
pivot = A[j];
do
{
while (i<j && A[i]<=pivot)
{
i++;
}
while (j>i && A[j]>=pivot)
{
j--;
}
if (i<j)
{
temp = A[i];
A[i] = A[j];
A[j] = temp;
}
}
while (i<j);
temp = A[j];
A[j] = A[atas];
A[atas] = temp;
if (j-bawah<atas-i)
{
quick(bawah,j-1);
quick(i+1,atas);
}

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

else
{
quick(i+1,atas);
quick(bawah,j-1);
}
}
}

2. Buat program mengurutkan angka dari terkecil sampai terbesar


menggunakan BUBBLE SORT ?
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <stdio.h>
#include <conio.h>
#define N 20

int bubble(int n);

Praktek Struktur Data


int i,j,A[N];

main()
{
int jml;
clrscr();
printf("Masukkan jumlah bilangan (maks 20) : ");
scanf("%d",&jml);
printf("\n");

for (i=0;i<jml;i++)
{
printf("Bilangan ke %d : ",i+1);
scanf("%d",&A[i]);
}
printf("\n");

bubble(jml);

printf("Data yang sudah terurut : \n");


for (i=0;i<jml;i++)
{
printf("%d\n",A[i]);
}
getch();
}

int bubble(int n)
{
int temp;
for (i=1;i<=n-1;i++)
{
for (j=i;j<n;j++)
{
if (A[i-1]>A[j])
{
temp = A[i-1];
A[i-1] = A[j];
A[j] = temp;
}
}
}
}

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

3. Buat program mengurutkan Disk DLDLDLDLDLDLDL menjadi


DDDDDDDLLLLLLL
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include<stdio.h>
#include<conio.h>

main()
{ clrscr();
char disk[50];
char tmp;
int n,i,j,count;

gotoxy(10,10);
printf("masukkan jumlah disk [max=50] ");
scanf("%d",&n);

Praktek Struktur Data


for(i=0;i<n;i++)
{
if (i%2)
disk[i]='L';
else
disk[i]='D';
}

gotoxy(10,11);printf("kondisi awal ");


for(i=0;i<n;i++)
printf("%c",disk[i]);
count=0;
for(i=0;i<n;i++)
for(j=i;j<n-1;j++)
if (disk[j]!= disk[j+1])
{
tmp=disk[j];
disk[j]=disk[j+1];
disk[j+1]=tmp;
count++;
}
gotoxy(10,12);printf("kondisi urut ");
for(i=0;i<n;i++)
printf("%c",disk[i]);
gotoxy(10,13);
printf("jumlah pertukaran dari input %d adalah %d ",n,count);
getch();
}

4. Buat program mengurutkan pilihan Ascending atau Descending ?


-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <stdio.h>
#include <conio.h>

void main()
{ clrscr();
double *ar,tmp;
int n,i,ad,urut;

printf("Masukan banyaknya data : ");


scanf("%d",&n);

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

printf("Urutkan secara : \n1. Ascending \n2. Descending \nPilihan no 1


atau 2 : ");
scanf("%d",&ad);

ar = new double[n];//set ukuran array

for(i=0;i<n;i++)
{
printf("Data ke %3d : ",i+1),
scanf("%lf",&ar[i]);//input data
}

printf("Sebelum diurutkan\n");
for(i=0;i<n;i++)
printf("ar[%2d] = %f\n",i,ar[i]);

ulang:
urut = 1;
for(i=0;i<(n-1);i++)

Praktek Struktur Data


{
if( ((ar[i]>ar[i+1])&&ad==1) || ((ar[i]<ar[i+1])&&ad==2) )
{

tmp=ar[i];
ar[i]=ar[i+1];
ar[i+1]=tmp;
urut=0;
}
} if(!urut)
goto ulang;

printf("\nSetelah diurutkan\n");
for(i=0;i<n;i++)
printf("ar[%2d] = %f\n",i,ar[i]);
getch();
}

5. Buat contoh program menggunakan Taly Sort?


-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <stdio.h>
#include <conio.h>

int main()
{ int a[5] = {2, 6, 3, 9, 5};
int bit[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

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


{
bit[a[i]]=1;
}

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


{
if (bit[i]) printf("%d\n", i);
}

return 0;
}

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

6. Buat contoh program menggunakan Heap Sort, dengan menampilkan


langkah-langkah?
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>

int heapSize = 10;


void print(int a[]) {
for (int i = 0; i <= 9; i++) {
cout << a[i] << "-";
}
cout << endl;
}

int parent(int i) {
if(i==1)

Praktek Struktur Data


return 0;

if(i%2==0)
return ( (i / 2)-1);
else
return ( (i / 2));
}

int left(int i) {
return (2 * i) + 1;
}

int right(int i) {
return (2 * i) + 2;
}

void heapify(int a[], int i) {


int l = left(i), great;
int r = right(i);
if ( (a[l] > a[i]) && (l < heapSize)) {
great = l;
}
else {
great = i;
}
if ( (a[r] > a[great]) && (r < heapSize)) {
great = r;
}
if (great != i) {
int temp = a[i];
a[i] = a[great];
a[great] = temp;
heapify(a, great);
}
}

void BuildMaxHeap(int a[]) {


for (int i = (heapSize - 1) / 2; i >= 0; i--) {
heapify(a, i);
print(a);
}
}

void HeapSort(int a[]) {


BuildMaxHeap(a);

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

for (int i = heapSize; i > 0; i--) {


int temp = a[0];
a[0] = a[heapSize - 1];
a[heapSize - 1] = temp;
heapSize = heapSize - 1;
heapify(a, 0);
}
}

void main() {
int arr[] = {
2, 9, 3, 6, 1, 4, 5, 7, 0, 8};
HeapSort(arr);
print(arr);
}

7. Buat contoh program menggunakan Merge Sort, dan tampilkan langkah-


langkahnya?
-----------------------------------------------------------------------------------------------------------

Praktek Struktur Data


------------
CODING:
#include <iostream.h>
#include <conio.h>
#include <stdio.h>

void print(int * a) {
for (int i = 0; i < 10; i++) {
cout << a[i] << "-";
}
cout << endl;
}

void mergeConquer(int * a, int left, int mid, int right) {


int lno = mid - left + 1, rno = right - mid;
int * L = new int[lno], * R = new int[rno];

for (int y = 0; y < lno; y++) {


L[y] = a[left + y];
cout << L[y] << "l";
}
cout << endl;
for (int z = 0; z < rno; z++) {
R[z] = a[mid + z + 1];
cout << R[z] << " r "; ;
}
cout << endl;
y = 0;
z = 0;

for (int i = left; i <= right; i++) {


if ( (y < lno) && (z < rno)) {
if (L[y] <= R[z]) {
a[i] = L[y];
y++;
}
else {
a[i] = R[z];
z++;
}
}
else if ( (y < lno) && (z >= rno)) {
a[i] = L[y];
y++;

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

}
else if ( (y >= lno) && (z < rno)) {
a[i] = R[z];
z++;
}
}
}

void mergeDivide(int * a, int left, int right) {


int mid = (left + right) / 2;
if (left < right) {
cout << "============";
mergeDivide(a, left, mid);
mergeDivide(a, mid + 1, right);
mergeConquer(a, left, mid, right);
}

Praktek Struktur Data


void main() {
clrscr();
int a[] = {5, 24, 6, 48, 9, 40, 42, 3, 1, 7};
mergeDivide(a, 0, 9);
print(a);
getch();
}

8. Buat contoh program mengurutkan nama Pacar, sesuai dengan abjad dan
huruf besar dan kecil, menggunakan Bubble Sort?
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include<conio.h>
#include<iostream.h>
#include<string.h>
#define byk 5

void main()
{ char pacar[byk][40],nitip[40];
int x,y,z;
clrscr();
for(x=0;x<byk;x++)
{
cout<<"Masukan Nama Pacar Anda ke "<<x+1<<" : "; cin>>pacar[x];
}
for(x=0;x<byk-1;x++)
{
for(y=x+1;y<byk;y++)
{
if(pacar[x][0]>pacar[y][0])
{
strcpy(nitip, pacar[x]);
strcpy(pacar[x],pacar [y]);
strcpy(pacar[y],nitip);
}
else if(pacar[x][0]==pacar[y][0])
{
for(z=1;z<strlen(pacar[x]);z++)
{
if(pacar[x][z]>pacar[y][z])
{
strcpy(nitip,pacar[x]);
strcpy(pacar[x],pacar[y]);

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

strcpy(pacar[y],nitip);
break;
}
else if(pacar[x][z]<pacar[y][z])
break;
}
}
}
}

for(x=0;x<byk;x++)
{
cout<<endl<<pacar[x];
}
getch();
}

9. Buat contoh program Heap Sort, dengan menampilkan secara kolom?


-----------------------------------------------------------------------------------------------------------

Praktek Struktur Data


------------
CODING:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#define SIZE 100

float A[SIZE], MAX_VALUE, temp;


int i,N;

void HPSORT(int n, float *RA) {


int i,ir,j,l;
float rra;

l=(n/2)+1;
ir=n;
e10:
if (l > 1) {
l--;
rra=RA[l];
}
else {
rra=RA[ir];
RA[ir]=RA[1];
ir--;
if (ir==1) {
RA[1]=rra;
return;
}
}
i=l;
j=l+l;
e20:
if (j <= ir) {
if (j < ir)
if (RA[j] < RA[j+1]) j++;
if (rra < RA[j]) {
RA[i]=RA[j];
i=j; j=j+j;
}
else
j=ir+1;
goto e20;

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

}
RA[i]=rra;
goto e10;
}

void TWRIT(int N, float *ARR) {


int i; float tmp;
printf("\n");;
for (i=1; i<N+1; i++) {
tmp=ARR[i];
printf("%6.0f",tmp);
if ((i % 10)==0) printf("\n");
}
}

void main() {
N=80;
MAX_VALUE = 1000.0;

Praktek Struktur Data


clrscr();
for (i=1; i<N+1; i++) {
temp = (float) rand();
A[i] = MAX_VALUE*(temp/RAND_MAX);
}

printf("\n Data Awal :\n");


TWRIT(N,A);

HPSORT(N,A);

printf("\n Data Setelah di Sort (Heapsort method):\n");


TWRIT(N,A);

printf("\n");
getch();
}

10. Buat contoh program Shell Sort, dengan menampilkan secara kolom ?
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#define SIZE 100

float A[SIZE], MAX_VALUE, temp;


int i,N;

void SHELL(int n, float *ARR) {

#define ALN2I 1.0/0.69314718


#define TINY 1e-5

float LOGNB2, t;
int i,j,k,l,m,nn;

LOGNB2=(float) floor(log(N)*ALN2I+TINY);
m=n;
for (nn=1; nn<=floor(LOGNB2); nn++) {
m=m / 2; k=n-m;
for (j=1; j<k+1; j++) {

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

i=j;
e10: l=i+m;
if (ARR[l] < ARR[i]) {
t=ARR[i];
ARR[i]=ARR[l];
ARR[l]=t;
i=i-m;
if (i >= 1) goto e10;
}
}
}
}

void TWRIT(int N, float *ARR) {


int i; float tmp;
printf("\n");;
for (i=1; i<N+1; i++) {
tmp=ARR[i];
printf("%6.0f",tmp);

Praktek Struktur Data


if ((i % 10)==0) printf("\n");
}
}

void main() {
clrscr();
N=80;
MAX_VALUE = 1000.0;

for (i=1; i<N+1; i++) {


temp = (float) rand();
A[i] = MAX_VALUE*(temp/RAND_MAX);
}

printf("\n Data Awal :\n");


TWRIT(N,A);

SHELL(N,A);

printf("\n Data Setelah di Sort (Shell method):\n");


TWRIT(N,A);

printf("\n");
getch();
}

11.Buat contoh program menggunakan Insertion Sort dengan tampilan kolom ?


-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#define SIZE 100

float A[SIZE], MAX_VALUE, temp;


int i,N;

void PIKSRT(int N, float *ARR) {


int i,j; float a;
for (j=2; j<N+1; j++) {
a=ARR[j];
for (i=j-1; i>0; i--) {

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

if (ARR[i]<=a) goto e10;


ARR[i+1]=ARR[i];
}
i=0;
e10: ARR[i+1]=a;
}
}

void TWRIT(int N, float *ARR) {


int i; float tmp;
printf("\n");;
for (i=1; i<N+1; i++) {
tmp=ARR[i];
printf(" %6.0f",tmp);
if ((i % 5)==0) printf("\n");
}
}

void main() {

Praktek Struktur Data


N=25;
MAX_VALUE = 1000.0;

clrscr();
for (i=1; i<N+1; i++) {
temp = (float) rand();
A[i] = MAX_VALUE*(temp/RAND_MAX);
}

printf("\n Data Awal :\n");


TWRIT(N,A);

PIKSRT(N,A);

printf("\n Data Setelah di Sort (Insertion Sort):\n");


TWRIT(N,A);

printf("\n");
getch();
}

12. Buat contoh program menggunakan Merge Sort dengan tampilan kolom ?
Input
4.00 3.00 1.00 67.00 55.00 8.00 0.00 4.00
-5.00 37.00 7.00 4.00 2.00 9.00 1.00 -1.00

Output
-5.00 -1.00 0.00 1.00 1.00 2.00 3.00 4.00
4.00 4.00 7.00 8.00 9.00 37.00 55.00 67.00
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <stdio.h>
#include <conio.h>
#include <math.h>

void sort(double *a, int lo, int hi) {

if (lo>=hi) return;
int mid = (lo + hi) / 2;

sort(a, lo, mid);


sort(a, mid + 1, hi);

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

int start_hi = mid + 1;


int end_lo = mid;
while ((lo <= end_lo) && (start_hi <= hi)) {
if (a[lo] < a[start_hi])
lo++;
else {
double T = a[start_hi];
for (int k = start_hi - 1; k >= lo; k--) {
a[k+1] = a[k];
}
a[lo] = T;
lo++;
end_lo++;
start_hi++;
}
}
}

void main() {

Praktek Struktur Data


clrscr();
int i,n=16;
static double a[] = {4,3,1,67,55,8,0,4,-5,37,7,4,2,9,1,-1};

printf("\n\n Data Asal :\n");


for(i=0; i<n; i++) {
printf(" %5.2f ",a[i]);
if(i==7) printf("\n");
}

sort(a,0, n-1);

printf("\n\n Data Setelah di Sort :\n");


for(i=0; i<n; i++) {
printf(" %5.2f ",a[i]);
if(i==7) printf("\n");
}
printf("\n\n");
getch();
}

13.Buat contoh program menggunakan Selection Sort?


-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>

int SelectionSort(int [], int);


int main()
{ clrscr();
const int GOKILZ = 10;
int angka[GOKILZ] = {22,5,67,98,45,32,101,99,73,10};
int i, pindah;

pindah = SelectionSort(angka, GOKILZ);

cout << "Angka yang telah si sorting Ascending :\n";


for (i = 0; i < GOKILZ; i++)
cout << " " << angka[i];

cout << '\n' << pindah << " angka pindah untuk mengurutkan angka\n";

getch();

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

int SelectionSort(int num[], int GOKILZ)


{ int i, j, min, minidx, grade, pindah = 0;

for ( i = 0; i < (GOKILZ - 1); i++)


{
min = num[i];
minidx = i;
for(j = i + 1; j < GOKILZ; j++)
{
if (num[j] < min)
{
min = num[j];
minidx = j;
}
}
if (min < num[i])
{

Praktek Struktur Data


grade = num[i];
num[i] = min;
num[minidx] = grade;
pindah++;
}
}
return pindah;
}

Buat program mengurutkan angka dengan pilihan menu dan jenis sorting :
14. Buble Sort, Quick Sort, Insert Sort
15. Selection Max Sort & Selection Min Sort
16.Tree & Heap Sort
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <stdio.h>
#include<iostream.h>
#include<conio.h>
#include<dos.h>
#define p 100

void buble( int jmlh, int larik[p] );


void quick( int bts_bawah, int bts_atas, int larik[p] );
void insert( int jmlh, int larik[p] );
void max( int jmlh, int larik[p] );
void min( int jmlh, int larik[p] );
void heap( int jmlh, int larik[p] );
void varian();
void varian2();

void main()
{
lagi:

clrscr();

int qty,a,array[p],pil;
textbackground(BLUE);
textcolor(YELLOW);
varian();

clrscr();

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

gotoxy(28,20);cout<<"Input berapa data : ";


cin>>qty;

delay(250);
clrscr();

cout<<"Silahkan inputkan data yang anda inginkan"<<endl<<endl;

for ( a=0; a<qty; a++)


{
cout<<"Data ke "<<a+1<<" : ";
cin>>array[a];
}
//blok input data end

delay(500);
ulang :
clrscr();

Praktek Struktur Data


gotoxy(28,15); cout<<" Metode Pengurutan"<<endl;
gotoxy(28,17); cout<<"1. Buble Sort"<<endl;
gotoxy(28,18); cout<<"2. Quick Sort"<<endl;
gotoxy(28,19); cout<<"3. Insert Sort"<<endl;
gotoxy(28,20); cout<<"4. Selection Max Sort"<<endl;
gotoxy(28,21); cout<<"5. Selection Min Sort"<<endl;
gotoxy(28,22); cout<<"6. Tree & Heap Socrt"<<endl;
gotoxy(28,24); cout<<" pilihan : ";
cin>>pil;

switch (pil)
{
case 1 : buble(qty,array); break;
case 2 : quick(0,qty-1,array); break;
case 3 : insert(qty,array); break;
case 4 : max(qty,array); break;
case 5 : min(qty,array); break;
case 6 : heap(qty,array); break;
default: goto ulang;
}

delay(250);
clrscr();

cout<<"Data setelah diurutkan adalah sebagai berikut"<<endl;

//blok output data


for ( a=0; a<qty; a++)
{
cout<<"\nData ke "<<a+1<<" : "<<array[a];
}
char jawab;

gotoxy(22,47); cout<<"Apakah proses akan diulang (y/n) ? ";


cin>>jawab;

if (jawab=='y' || jawab=='Y')
goto lagi;
else
{
clrscr();
varian2();
}
getch();
}

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

void buble(int jmlh, int larik[p] )


{ int tampung;

for(int i=1; i<=jmlh-1; i++)


{
for(int k=i; k<jmlh; k++)
{
if( larik[i-1] > larik[k] )
{
tampung = larik[i-1];
larik[i-1] = larik[k];
larik[k] = tampung;
}
}
}
}

void quick(int bts_bawah, int bts_atas, int larik[p])

Praktek Struktur Data


{ int pivot, temp;
int i,j;

if(bts_bawah < bts_atas)


{
i = bts_bawah;
j = bts_atas;
pivot = larik[j];

do
{
while ( i<j && larik[i] <= pivot )
i++;
while ( j>i && larik[j] >= pivot )
j--;

if( i<j )
{
temp = larik[i];
larik[i] = larik[j];
larik[j] = temp;
}

} while ( i<j );

temp = larik[j];
larik[j] = larik[bts_atas];
larik[bts_atas] = temp;

if( j - bts_bawah < bts_atas - 1 )


{
quick(bts_bawah, j-1,larik);
quick(i+1, bts_atas,larik);
}
else
{
quick(i+1, bts_atas,larik);
quick(bts_bawah, j-1,larik);
}
}
}

void insert(int jmlh, int larik[p])


{ int temp,j;

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

for(int i=1; i<jmlh; i++)


{
temp=larik[i];
j=i-1;

while( larik[j] > temp && j>=0 )


{
larik[j+1] = larik[j];
j=j-1;
}

larik[j+1] = temp;
}
}

void max(int jmlh, int larik[p])


{ int i, j, imaks, temp;

Praktek Struktur Data


for(i=jmlh-1; i>=0; i--)
{ imaks = 0;

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


{
if ( larik[j] > larik[imaks] )
{
imaks=j;
}
}

temp = larik[i];
larik[i] = larik[imaks];
larik[imaks] = temp;
}
}

void min(int jmlh, int larik[p])


{ int i, j, imin, temp;

for(i=0; i<jmlh-1; i++)


{
imin = i;

for(j=i+1; j<jmlh; j++)


{
if ( larik[j] < larik[imin] )
{
imin=j;
}
}

temp = larik[i];
larik[i] = larik[imin];

larik[imin] = temp;
}
}

void sift(int aray[p], int x, int jumlah);


void heap(int jmlh, int larik[p] )
{ int i, temp;
for( i=(jmlh/2)-1 ; i>=0 ; i-- )
{

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

sift(larik,i,jmlh);
}

for( i=jmlh-1 ; i>=1; i-- )


{
temp = larik[0];
larik[0] = larik[i];
larik[i] = temp;
sift(larik,0,i-1);
}
}

void sift(int aray[p], int x, int jumlah)


{

int done, max, temp;


done=0;

while ( (x*2 <= jumlah) && (done==0) )

Praktek Struktur Data


{ if( x*2 == jumlah )
max = x*2;
else if ( aray[x*2] > aray[x*2+1] )
max = x*2;
else
max = x*2+1;

if( aray[x] < aray[max] )


{
temp = aray[x];
aray[x] = aray[max];
aray[max] = temp;

x=max;
}
else done = 1;
}
}

void varian()
{ gotoxy(32,15);cout<<"L O A D I N G";
for(int x=20;x<=55;x++)
{
gotoxy(x,16);
cout<<"Û";
delay(100);
}
}

void varian2()
{ gotoxy(22,20);cout<<"--- preparing unload process ---";
for(int x=20;x<=55;x++)
{ gotoxy(x,21);
cout<<"Û";
delay(100);
}
gotoxy(23,23);cout<<"Press Any Key to Unload Process";
}

Buat program mengurutkan angka dengan pilihan menu dan jenis sorting :
17.Bubble Sort
18.Exchange Sort
19.Selection Sort

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

20.Insertion Sort
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <stdio.h>
#include <conio.h>

int data[100], data2[100];


int n;

void tukar(int a,int b){


int t;
t = data[b];
data[b] = data[a];
data[a] = t;
}

void bubble_sort(){

Praktek Struktur Data


for(int i=1;i<n;i++){
for(int j=n-1;j>=i;j--){
if(data[j]<data[j-1]) tukar(j,j-1);
}
} printf("bubble sort selesai!\n");
}

void exchange_sort(){
for (int i=0; i<n-1; i++){
for(int j = (i+1); j<n; j++){
if (data [i] > data[j]) tukar(i,j);
}
} printf("exchange sort selesai!\n");
}

void selection_sort(){
int pos,i,j;
for(i=0;i<n-1;i++){
pos = i;
for(j = i+1;j<n;j++){
if(data[j] < data[pos]) pos = j;
}
if(pos != i) tukar(pos,i);
}
printf("selection sort selesai!\n");
}

void insertion_sort(){
int temp,i,j;
for(i=1;i<n;i++){
temp = data[i];
j = i -1;
while(data[j]>temp && j>=0){
data[j+1] = data[j];
j--;
}
data[j+1] = temp;
}
printf("insertion sort selesai!\n");
}

void Input(){
printf("Masukkan jumlah data = ");scanf("%d",&n);
for(int i=0;i<n;i++){
printf("Masukkan data ke-%d =",(i+1));scanf("%d",&data[i]);

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

data2[i] = data[i];
}
}

void AcakLagi(){
for(int i=0;i<n;i++){
data[i] = data2[i];
} printf("Data sudah teracak!\n");
}

void Tampil(){
printf("Data : ");
for(int i=0;i<n;i++){
printf("%d ",data[i]);
} printf("\n");
}

void main(){
clrscr();

Praktek Struktur Data


int pil;
do{
clrscr();
printf("1. Input Data\n");
printf("2. Bubble Sort\n");
printf("3. Exchange Sort\n");
printf("4. Selection Sort\n");
printf("5. Insertion Sort\n");
printf("6. Tampilkan Data\n");
printf("7. Acak\n");
printf("8. Exit\n");
printf("Pilihan = ");scanf("%d",&pil);

switch(pil){
case 1:Input();break;
case 2:bubble_sort();break;
case 3:exchange_sort();break;
case 4:selection_sort();break;
case 5:insertion_sort();break;
case 6:Tampil();break;
case 7:AcakLagi();break;
} getch();
} while(pil!=8);
}

10 S OAL SEARCHING – D A R I T I N G K AT 2

1. Buat program mencari index dari array kelipatan 5 ?


-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>

int main()
{ double target;
int array[10] = {5,10,15,20,25,30,35,40,45,50};
int flag;

clrscr();

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

flag = 0;

cout << "Masukkan angka kelipatan 5 dari (5-50): "; cin >> target;

for(int cntr = 0; cntr < 10; cntr++)


{
if(array[cntr] == target)
{
cout << "Target berada pada array index " << cntr << "."
<< endl;
flag += 1;
}
}

if(flag < 1)
{
cout << "Target tidak ada" << endl;
}
getch();

Praktek Struktur Data


}

2. Buat program “Kontes Menyanyi”, Memasukkan No.Peserta dan Nama, cari


berdasarkan nomor ?
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>
#include <dos.h>

void main()
{
clrscr();

char* nama[100], jwb;


long double peserta[100], x;
int n;

cout << "\n Masukan Banyak Nama : ";


cin >> n;

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


{
clrscr();
cout<< "\n Masukan Nomor Peserta : ";
cin >> peserta[a];
cout << " Masukan Nama Peserta : ";
cin >> nama[a];
}
do
{
clrscr();
cout << "\n Masukan Nomor Peserta : ";
cin >> x;

if (x==peserta[x-1])
{
cout << " Nomor Peserta Atas Nama " << nama[x-1];
} else {
cout << " Nomor Peserta Yang Anda Masukkan Tidak Terdaftar";
}

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

cout << "\n\n Anda Ingin Mencari Lagi (y/t)? ";


cin >> jwb;
} while(jwb=='y');

getch();
}

3. Buat program mencari angka -5 sampai 5 menggunakan SEARCHING ?


-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>

int search(int [], int, int);

int main()
{ clrscr();

Praktek Struktur Data


const int OKE = 11;
int array[OKE] = {-5,-4,-3,-2,-1,0,1,2,3,4,5};
int cari, lokasi;

cout << "\n Masukkan angka yang ingin dicari : "; cin >> cari;
lokasi = search(array, OKE, cari);
if (lokasi > -1)
cout << " Angka yang dicari berada pada index ke-" << lokasi <<
endl;
else
cout << " Angka yang dicari tidak ada\n";
getch();
}

int search(int daftar[], int ukuran, int kunci)


{ int kiri, kanan, xxx;
kiri = 0;
kanan = ukuran - 1;

while (kiri <= kanan)


{
xxx = (int) ((kiri + kanan) / 2);
if (kunci == daftar[xxx])
{
return xxx;
}
else if (kunci > daftar[xxx])
kiri = xxx + 1;
else
kanan = xxx - 1;
}
return -1;
}

4. Buat program mencari nama cewek kinclong, beserta alamat, no.telpp, dan
uang jajan?
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include"iostream.h"
#include"conio.h"
#include"string.h"
#include"stdlib.h"

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

#include"iomanip.h"
void main()
{
char nama [4][10]={"jasmine","leona","anggie","gina"};
char alamat [4][25]={"Buah Batu, BANDUNG","Pondok Indah, JAKARTA","Mekar
Indah, BANDUNG","Kenari, BOGOR"};
char telephon [4][15]={"085624246442","021-1234-5678","022-7836613","021-
8232642"};
char jajan [4][15]={"Rp.15.000.000,-","Rp.2.500,-","Rp.5
Miliar,-","Rp.123.456,"};
char *cari, *pilih;
int x;

clrscr();

if(strcmp(cari,nama[x])!=0)
{
gotoxy(10,2);cout<<"\"Mohon Maaf Jika data yang anda input tidak
terdapat dalam di Pointer kami :)\n\n"<<endl;

Praktek Struktur Data


}
gotoxy(15,14);cout<<"Nama : ";
gotoxy(15,16);cout<<"Alamat : ";
gotoxy(15,18);cout<<"No.telp : ";
gotoxy(15,20);cout<<"Jajan : ";
gotoxy(12,9);cout<<"Silahkan Input nama yang anda akan cari : ";
cin>>cari;

for(x=0;x<10;x++)
{
if(strcmp(cari,nama[x])==0)
{
gotoxy(24,14);cout<<nama[x];
gotoxy(24,16);cout<<alamat[x];
gotoxy(24,18);cout<<telephon[x];
gotoxy(24,20);cout<<jajan[x];
}
}
getch();
}

5. Buat program mencari index dari array bervariasi ?


-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>
void main()
{ clrscr();
int data[10] = {3,17,9,-4,21,6,-3,44,56,1};
int cari,i;

cout << "Masukkan data yang ingin dicari : "; cin >> cari;

data[10] = cari;
i=0;
while(data[i] != cari) i++;
if(i<10)
cout << "Data ada " << endl;
else
cout << "Data tidak ada ";
getch();
}

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

6. Buat program mencari index dengan flag ?


-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>

int main()
{ double target;
int array[10] = {9,18,27,36,45,54,63,72,81,90};
int flag;

clrscr();
flag = 0;

cout << "Masukkan angka kelipatan 9 : "; cin >> target;

for(int cntr = 0; cntr < 10; cntr++)

Praktek Struktur Data


{
if(array[cntr] == target)
{
cout << "Target berada pada array index " << cntr << "."
<< endl;
flag += 1;
}
}

if(flag < 1)
{
cout << "Target tidak ditemukan" << endl;
}
getch();
}

7. Buat program Phonebook, masukkan nama dan no.telp, lalu cari dengan
memasukkan nomor ?
-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>
#include <dos.h>

void main()
{
clrscr();

char* nama[100],jwb;
long double nomor[100],tuju;
int n;

cout<<"Masukan Banyak Nama : ";


cin>>n;

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


{
clrscr();
cout<<"Masukan Nama : ";
cin>>nama[a];
cout<<"Masukan Nomor: ";
cin>>nomor[a];

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

}
do
{
clrscr();
cout<<"Masukan Nomor Tujuan : ";
cin>>tuju;

if (tuju==nomor[tuju-1])
{
cout<<"No Yang Anda Tuju Atas Nama "<<nama[tuju-1];
} else {
cout<<"No Yang Anda Masukkan Tidak Terdaftar";
}

cout<<"\nCari Lagi (y/t)? ";


cin>>jwb;
} while(jwb=='y');

getch();

Praktek Struktur Data


}

8. Buat program contoh Binary Search ?


-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>

int binarysearch(int [], int, int);

int main()
{ clrscr();
const int GOKILZ = 10;
int array[GOKILZ] = {5,10,22,32,45,67,73,98,99,101};
int cari, lokasi;

cout << "Masukkan angka yang ingin dicari : "; cin >> cari;
lokasi = binarysearch(array, GOKILZ, cari);
if (lokasi > -1)
cout << "Angka yang kamu cari berada pada index ke-" << lokasi <<
endl;
else
cout << "Angka yang kamu cari tidak ada\n";
getch();
}

int binarysearch(int daftar[], int ukuran, int kunci)


{ int kiri, kanan, xxx;
kiri = 0;
kanan = ukuran - 1;

while (kiri <= kanan)


{
xxx = (int) ((kiri + kanan) / 2);
if (kunci == daftar[xxx])
{
return xxx;
}
else if (kunci > daftar[xxx])
kiri = xxx + 1;
else
kanan = xxx - 1;
}

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

return -1;
}

9. Buat program contoh Linear Search ?


-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <iostream.h>
#include <conio.h>

int LinearSearch(int [], int, int);

int main()
{ clrscr();
const int GOKILZ = 10;
int angka[GOKILZ] = {5,10,22,32,45,67,73,98,99,101};
int cari, lokasi;

Praktek Struktur Data


cout << "Masukkan angka yang ingin dicari : "; cin >> cari;

lokasi = LinearSearch(angka, GOKILZ, cari);

if (lokasi > -1)


cout << "Angka yang dicari berada pada indes ke-" << lokasi << endl;
else
cout << "Data yang dicari tidak ada\n";

getch();
}

int LinearSearch(int daftar[], int msx, int kunci)


{ int i;

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


{
if (daftar[i] == kunci)
return i;
}
return -1;
}

10.Buat program memasukkan data, diurutkan lalu cari data tersebut ?


-----------------------------------------------------------------------------------------------------------
------------
CODING:
#include <conio.h>
#include <iostream.h>
void main()
{
clrscr();
int i,j,indexmin,tengah,eltengah,n,dt,temp,ketemu=0,posisi;
int A[100];
cout<<"Banyak data : "; cin>>n;
for(i=0;i<n;i++){
cout<<"Data ke-"<<i+1<<" : "; cin>>A[i];
}
for(i=1;i<n;i++){
temp=A[i];
j=i-1;
while((A[j]>=temp)&&(j>0)){
A[j+1]=A[j];
j=j-1;

29
TUGAS 1 TI 1
IMAM CIPTARJO – 6307130

}
if(temp>=A[j])
A[j+1]=temp;
else{
A[j+1]=A[j];
A[j]=temp;
}
}
cout<<"Data setelah diurutkan : \n\n";
for(i=0;i<n;i++){
cout<<A[i]<<", ";
}
cout<<"\b\b.\n\n";

cout<<"Data yang akan dicari : "; cin>>dt;


ketemu=0;
tengah=(n/2)+1;
eltengah=A[tengah];
i=0;

Praktek Struktur Data


if(dt==eltengah){
ketemu=1;
posisi=tengah;
}
else
{
if(dt<eltengah){
i=0;
while((ketemu==0)&&(i<tengah)&&(A[i]<=dt)){
if(A[i]==dt){
ketemu=1;
posisi=1;
}
else
i=i+1;
}
}
else{
i=tengah+1;
while ((ketemu==0)&&(i<n)&&(A[i]<=dt)){
if(A[i]==dt){
ketemu=1;
posisi=i;
}
else
i=i+1;
}
}
}
if(ketemu==0){
cout<<dt<<" Tidak ditemukan";
}
else
cout<<dt<<" Ditemukan pada index : "<<posisi+1;
getch();
}

29