Daftar Blog Saya

Sabtu, 03 Oktober 2020

TUGAS STRUKTUR DATA PERTEMUAN KE-4 " STACK (TUMPUKKAN) "

Bismillah, 

Assalamualaikum Wr.Wb.


Hello My Name Is Alif Yoga Prasetya 😉

Disini Saya Akan Membagikan Tugas Perkuliahan Dengan Mata Kuliah " Struktur Data "



SOAL :

1.Buatlah suatu program Animasi Stack dengan 4 buah pilihan : PUSH, POP,

CETAK STACK, QUIT.Jika dipilih

PUSH : program akan meminta user untuk menginput sebuah karakter yang

akan dimasukan ke dalam stack Jika dipilih POP : maka karakter teratas akan

dikeluarkan dari stack Jika dipilih CETAK

STACK : komputer menampilkan karakter yang ada pada stackJika dipilih

QUIT : program keluar

2. Buatlah program yang akan mengisi dan menjumlahkan isi stack.



JAWABAN :

///////////////PROGRAM KE-1//////////////

1. #include <iostream>

#include <conio.h>

#define maxstack 5

using namespace std; //untuk melegalkan header iostream

//pendeklarasian struct

struct STACK

{

 int top;

 float data[4];

};

float dta;

/*struct yang telah dibuat (STACK) dijadikan suatu Tipe data, dimana disebut

tipe data abstrak*/

struct STACK stackbaru;

//fungsi boolean untuk mengetahui apakah stack penuh

bool isfull()

{

 if(stackbaru.top == maxstack)

 return true;

 else

 return false;

}

//fungsi boolean untuk mengetahui apakah stack kosong

bool isempty()

{

 if(stackbaru.top == -1)

 return true;

 else

 return false;

}

//fungsi untuk menambahkan data pada stack

void push(float dta)

{

 if(isfull() == true) /*panggil fungsi isempty(), jika kondisi benar pernyataan

dijalankan*/

 {

 puts("Maaf, stack penuh");

 }

 else{

 stackbaru.top++;

 stackbaru.data[stackbaru.top]=dta;

 }

}

//fungsi untuk mengambil data pada stack

void pop()

{

 if(isempty() == true) //panggil fungsi isempty(), jika kondisi benar

pernyataan dijalankan

 {

 cout<<"Data telah kosong!";

 }

 else

 {

 cout<<"Data yang terambil : " <<stackbaru.data[stackbaru.top]<<endl;


 }

}

//fungsi untuk mencetak data pada stack

void print()

{

 printf("\nData yang terdapat dalam stack : \n");

 printf("--------------------------------\n");

 for(int i=0; i<=stackbaru.top; i++)

 {

 cout<<stackbaru.data[i]<<" ";

 }

}

//fungsi untuk membersihkan data dalam stack

void clear()

{

 stackbaru.top = -1;

 printf("\nSekarang stack kosong");

}

//fungsi utama

int main()

{

 stackbaru.top = -1;

 //pendeklarasian variabel

 char menu;

 char ulang;

 //perulangan dengan do-while

 do

 {

 system("cls");

 printf("\t PROGRAM STACK\n");

 printf("\t===============\n");

 printf("Menu : ");

 puts("\n1. Pop stack");

 puts("2. Push stack");

 puts("3. Cetak");

 puts("4. Bersihkan stack");

 puts("5. Exit");


 cout<<"Menu pilihan Anda : ";

 cin>>menu;


 if(menu == '1')

 {

 pop(); //panggil fungsi pop()

 ulang = 'y';

 getch();

 }

 else if(menu == '2')

 {

 cout<<"\nTambah Data";

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

 cout<<"\nData yang akan disimpan di stack : ";

 cin>>dta;

 push(dta); /*panggil fungsi push(dta)--dta sesuai dengan data ynag

diinput*/

 ulang = 'y';

 }

 else if(menu == '3')

 {

 print(); /*panggil fungsi untuk mencetak data dalam stack*/

 cout<<"\n\nUlang ? (y/t)";

 cin>>ulang;

 }

 else if(menu == '4')

 {

 clear(); //panggil fungsi untuk membersihkan stack

 cout<<"\n\nUlang ? (y/t)";

 cin>>ulang;

 }

 else if(menu == '5')

 {

 exit(0); //keluar dari program

 }

 }while(ulang == 'Y' || ulang == 'y'); /*akan selalu diulang ketika ulang ==

'y' || ulang'Y'*/

}


SOURCE CODE PROGRAM


INPUT DATA





CETAK DATA





PADA SAAT MEMILIH 1. POP STACK, DATA YG PALING TERAKHIR YAITU 100 TERAMBIL





HAPUS DATA





EXIT




///////////////////////////////PROGRAM KE-2///////////////////////////////////


2. #include<iostream>

#define maxstack 5

using namespace std;

struct STACK

{

int top;

float data[4];

};

float dta;

struct STACK stackbaru;

using namespace std;


int main()

{

int n,i, nilai, hasil=0;

cout<<"masukkan jumlah = ";

cin>>n;

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

{

cout<<"masukkan nilai ke- "<<i<<" = ";

cin>>nilai;

hasil=hasil+nilai;

}

if(hasil%2==0)

{

cout<<"\n jumlah semua nilai diatas adalah "<<hasil<<"dan merupakan bilangan genap \n";

}else{

cout<<"\n jumlah semua nilai diatas adalah "<<hasil<<"dan merupakan bilangan ganjil \n";

}

}



SOURCE DATA PROGRAM




Wa'alaikumussalam Warahmatullahi Wabarakatuh 😎

TUGAS MATA KULIAH STRUKTUR DATA Pertemuan Ke-18 " Sorting "

Bismillah, 

Assalamualaikum Wr.Wb.


Hello My Name Is Alif Yoga Prasetya 😉

Disini Saya Akan Membagikan Tugas Perkuliahan Dengan Mata Kuliah " Struktur Data "



  • SORTING

 Pengertian Sorting pada C++. Salah satu bagian penting dari struktur data adalah proses pengurutan data. Data terkadang akan berada dalam bentuk yang tidak berpola ataupun dengan pola tertentu yang tidak kita inginkan. Maka dari itu proses sorting adalah proses yang sangat penting dalam struktur data. Proses pengurutan banyak ditemukan dalam pemrosesan komputer.

     Data yang sudah terurut memiliki beberapa keuntungan. Selain mempercepat pencarian, data yang sudah terurut juga dapat dengan mudah menentukan Nilai terbesar atau terkecil.

    Pengurutan data memang sangat relevan dan merupakan aktivitas yang sangat penting berkaitan dengan pemrosesan data. Bahkan pengurutan data telah banyak dilakukan dengan bantuan alat. Adanya kebutuhan terhadap peroses pengurutan memunculkan bermacam-macam metode pengurutan yang bertujuan untuk memperoleh metode pengurutan yang optimal.

Pengurutan data (sorting) adalah suatu proses untuk menyusun kembali himpunan obyek menggunakan aturan tertentu.



Secara umum ada dua jenis pengurutan data yaitu :

a. Pengurutan secara urut naik (Ascending)

 yaitu dari data yang nilainya paling kecil sampai data yang nilainya paling besar.

b. Pengurutan secara urut turun (Descending)

yaitu dari data yang mempunyai nilai yang paling besar sampai paling kecil.


Sebagai contoh misalkan diberikan data berupa bilangan berikut ini:
3   9   1   4   0   2

Hasil sorting:
Ø   Ascending adalah 0  1   2   3   4   9
Ø  Descending adalah 9   4   3   2   1   0.


Berdasarkan media yang digunakan terdapat 2 metode sortir :

1. Sortir Internal

 Metode ini dipakai jika himpunan data yang akan disortir kecil, sehingga proses sortir tidak membutuhkan tempat yang besar di memori utama komputer.

2. Sortir Eksternal

 Metode ini dipakai jika himpunan data yang akan disortir cukup besar, sehingga dibutuhkan media atau alat tambahan seperti Magnetik Tape, Disket dan sebagainya.  

Beberapa metode yang dapat digunakan untuk pengurutan antara lain:

  1. Bubble Sort
  2. Selection Sort
  3. Quick Sort
  4. Merge Sort
  5. Heap Sort
  6. Shell Sort
  7. Radix Sort
  8. Tree Sort
  9. Maximum Sort
  10. Insertion Sort

Dua hal yang mempengaruhi kecepatan algoritma sortir adalah :
1. Jumlah operasi perbandingan yang dilakukan.
2. Jumlah operasi pemindahan data dilakukan.

Pada garis besarnya ada tiga teknik utama yang dapat dilakukan dalam
melakukan sortir yaitu :
1. Sortir Penyisipan atau Insertion Sort.
2. Sortir Pemilihan atau Selection Sort.
3. Sortir Penukaran atau Exchange Sort.





SOURCE CODE MENU SORTING :


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

using namespace std;
int main() {
 
 int pil;
cout << "======= Program Sorting (Bubble, Insertion, Selection) =========="<<endl<<endl;
cout << "1. Bubble sort" <<endl;
cout << "2. Insertion sort" <<endl;
cout << "3. Selection sort" <<endl<<endl;
cout << "==============================="<<endl<<endl;

cout << "Masukan pilihan anda = "; cin >> pil;

switch(pil) {
 
 
 
 ////////////////////////////////////

 ////  Buble start /////////////

 ////////////////////////

 case 1:
 system("cls");
 cout << endl;
 cout << "Bubble sort"<<endl;
 cout << "=============="<<endl;
 
 int t1,t2;
 
    int hold;
 int array[5];

 cout<<"Masukan 5 angka :"<<endl;

 for(int i=0; i<5; i++) {
  cout << "  angka ke " <<i+1 <<" = ";cin>>array[i];
 }
 cout<<endl;
 cout<<endl;
 t1=GetTickCount();
 cout<<"Sebelum di sortir = ";

 for(int j=0; j<5; j++) {
 cout<<array[j];
 cout<<"  ";
 }
 
 cout<<endl;
 
 cout <<endl<< "Urutan program"<<endl;
 for(int i=0; i<4; i++) {
  for(int j=0; j<4; j++) {
   if(array[j]<array[j+1]) {
    hold=array[j];
    array[j]=array[j+1];
    array[j+1]=hold;
    
    for(int i=0; i<5; i++) {
  cout<<array[i]<<"  ";
  }
  cout<<endl;
   }
  
  
  }
  
 }
cout<<endl;
 cout<<"Setelah di sortir = ";

 for(int i=0; i<5; i++) {
  cout<<array[i]<<"  ";
 }
    cout<<endl;
 t2=GetTickCount();
 cout << endl <<"Lama proses = " << (int)(t2 - t1) << " ms";
 cout<<endl;
 
 break;


//////////////////////////////////////////////////////////

///////     Insertion start               /////////

////////////////////////////////////////////////


 
 case 2:
 system("cls");
 cout << "Insertion sort";
 cout <<endl<<"============="<<endl;
 cout<<endl;
 int t3,t4;
 
 int Key;
 int array1[5];

 cout<<"Masukan 5 angka : "<<endl;

for(int i=0; i<5; i++)  {
 cout << "  angka ke " <<i+1 <<" = ";cin>>array1[i];
}

cout<<endl;
t3=GetTickCount();
cout<<"Angka sebelum di sortir = ";

for(int j=0; j<5; j++) {
 cout<<array1[j]<<"  ";
 
}

cout<<endl;
cout<<endl<< "Data proses "<<endl;
for(int j=1 ; j < 5 ; j++) {
 Key = array1[j];              
 int i = j-1;                  
 while(i >= 0 && array1[i] < Key) {
  array1[i + 1] = array1[i];
  i = i - 1;
 }
 array1[i + 1] = Key;
 
 for(int l=0; l<5; l++) {
  cout<<array1[l]<<"  ";
  
 }
 cout<<endl;
}
cout<<endl<<"Angka setelah disortir = ";

for(int i=0; i<5; i++) {
 cout<<array1[i]<<"  ";
 
}
t4=GetTickCount();
cout << endl<<endl <<"Lama proses = " << (int)(t4 - t3) << " ms";
 cout<<endl;

 break;
 
 
 
////////////////////////////////////////////////////////

//////////////   Selection start /////////////////////

/////////////////////////////////////
 
 
 case 3:
 system("cls");
 cout << "Selection sort";
 cout <<endl<< "================="<<endl<<endl;
 int t5,t6;
 int arr[5];
int mini,temp;

cout<<"masukan 5 angka ="<<endl;

for(int i=0; i<5; i++) {
 cout << "  angka ke " <<i+1 <<" = ";cin>>arr[i];
}
t5=GetTickCount();
cout<<endl;
cout<<"Angka sebelum di sortir = ";

for(int j=0; j<5; j++) {
 cout<<arr[j]<<"  ";
 
}

for(int r1=0;r1<4;r1++) {
 mini=r1;
 for(int r2=r1+1; r2<5; r2++)
   if(arr[r2]>arr[mini])
   mini=r2;
    if(mini !=r1) {
     temp=arr[r1];
     arr[r1]=arr[mini];
     arr[mini]=temp;
    }
}
cout<<endl;
cout<<endl;
cout<<"Setelah di sortir = ";
for(int q=0; q<5; q++) {
 cout<<arr[q]<< "  " ;
 
}
t6=GetTickCount();
cout << endl<<endl <<"Lama proses = " << (int)(t6 - t5) << " ms";
 cout<<endl;
 break;


//////////////////////////////////////////

//////           PILIHAN TIDAK ADA   /////////

//////////////////////////////////////////
 default:
 system("cls");
 cout << "Pilihan tidak ada";
 break;
 
}  
 
 getch();
}


TAMPILAN OUTPUT


  • TAMPILAN MENU UTAMA





  • MENU BUBBLE SORT





  • MENU INSERTION SORT





  • MENU SELECTION SORT



Wa'alaikumussalam Warahmatullahi Wabarakatuh 😎

TUGAS STRUKTUR DATA PERTEMUAN KE-4 " STACK (TUMPUKKAN) "

Bismillah,  Assalamualaikum Wr.Wb. Hello My Name Is Alif Yoga Prasetya 😉 Disini Saya Akan Membagikan Tugas Perkuliahan Dengan Mata Kuliah &...