Rabu, 26 Juli 2023

UAS Structur Data C++

UAS STRUKTUR DATA INSERTION

 

1. Insetion Short

Source Code :

//Nama : Ikhsan Ferry Pratama
//NIM : 21144005

#include <iostream>

using namespace std;

//Nama    : Ikhsan Ferry Pratama

//NIM      : 21144005            

int main(){

int y;

            cout<<"Masukkan Banyak Bilangan :";

            cin>>y;

            int x[y];

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

                                    cout<<"Elemen Ke  -"<<i<<" :";

                                    cin>>x[i];

                        }

                        cout<<"Data Sebelum di urutkan : ";

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

                                    cout<<x[i]<<" ";

                        }

                        cout<<endl;

                        for(int i=1; i<y; i++){

                                    int key = x[i];

                                    int j = i-1;

                                    while(j>=0 && x[j] > key){

                                                x[j+1] = x[j];

                                                j--;

                                    }

                                    x[j+1] = key;

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

                                    cout<<x[m]<<" ";

                            }

                            cout<<endl;

                        }

                        cout<<"Data Setelah di urutkan : ";

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

                                    cout<<x[m]<<" ";

                        }

            }

Tampilan Run




2. Buble Short

Source Code

//Nama : Ikhsan Ferry Pratama
//NIM : 21144005

#include <iostream>

#include <conio.h>

using namespace std;

    int data[10], data2[10];

    int n;

               

int tukar (int a,int b){

    int t;

    t=data[b];

                data[b]=data[a];

                data[a]=t;

            }

           

            int input(){

                cout<<"Masukan Jumlah Data = ";

                        cin>>n;

           

                        cout<<endl;

               

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

                        cout<<"Masukan Data Ke-"<<i+1<<" = ";

                        cin>>data[i];

                       

                        data2[i]=data[i];

                        }

                        cout<<endl;    

            }

           

            int tampil(){

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

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

                        }

                        cout<<endl;

            }

           

            int bubble_sort(){

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

                                                }

                                    }

                                    tampil();

                        }

                        cout<<endl;

            }

           

           

            int main()

              {

                        cout<<"ALGORITMA BUBBLE SORT"<<endl;

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

                        input();

                        cout<<"Proses Bubble Sort"<<endl;

                        tampil();

                        bubble_sort();

              getch();

              }

Tampilan Run




3. Queue

Source Code :


#include <iostream>
#include <conio.h>
#include <stdlib.h> 
#define MAX 1000 

using namespace std;
//Nama : Ikhsan Ferry Pratama
//NIM : 21144005
int nomer[MAX];
int head=-1;
int tail=-1;
bool IsEmpty(){ 
   if(tail == -1){
       return true;
   }else{
       return false;
   }
}
bool IsFull(){ 
   if(tail == MAX-1){
       return true;
   }else{
       return false;
   }
}
void AntrianMasuk(int no){
    if (IsEmpty()){
        head=tail=0;
    }else {
        tail++;
    }
    nomer[tail]=no;
}

void AntrianKeluar(){
    if(IsEmpty()){
        cout<<"Antrian sudah kosong ! ";
        getch();
    }else {
        for(int a=head;a<tail;a++){
            nomer[a]=nomer[a+1];
        }
        tail--;
        if(tail == -1){
            head = -1;
        }
    }
}

void Clear(){
     head=tail=-1;
}
void View(){
     if(IsEmpty()){
         cout<<"Antrian kosong ! ";

     }else {
         system("cls");
         for(int a=head;a<=tail;a++){
              cout << "==============================="
                   << "\n >> No. Antri : [" << nomer[a] << "]"
                   << "\n==============================="<< endl;
         }
     }
}

int main(){
    system("color 2");
    int choose, p=1, urut; 
    do{
        system("cls");
        cout << "\n\n===== PROGRAM ANTRIAN C++ ====="
             << "\n==============================="
             << "\n|1. Tambah Antrian            |"
             << "\n|2. Panggil Antrian           |"
             << "\n|3. Lihat daftar antrian      |"
             << "\n|4. Format                    |"
             << "\n|5. Exit                      |"
             << "\n===============================";
        cout << "\nChoose ! "; cin >> choose;
        cout << "\n\n";
        if(choose == 1){
            if(IsFull()) {
                cout<<"Antrian sudah penuh, mohon tunggu beberapa saat lagi ";
            }
            else{
                urut=p;
                AntrianMasuk(urut);
                cout << "---------------------------------" << endl;
                cout << "|          NO. ANTRIAN          |" << endl;
                cout << "|               " << p << "              ||" << endl;
                cout << "---------------------------------" << endl;
                cout << "|       Silahkan Mengantri      |" << endl;
                cout << "|      Menunggu " << tail << " Antrian      ||" << endl;
                cout << "---------------------------------" << endl;
                p++;
            }
        }
        else if(choose == 2){
            cout << "=================================" << endl;
            cout << "No. Antri : [" << nomer[head] << "]";
            cout << "\n=================================" << endl;
            AntrianKeluar();
            cout << "Silahkan Dipanggil !" << endl;
        }
        else if(choose == 3){
            View();
        }
        else if(choose == 4){
            Clear();
            cout<<"Antrian dikosongkan ! ";
        }
        else if(choose == 5){
        }
        else{
            cout << "Masukan anda salah ! \n"<< endl;
        }
        getch();
    }while(choose!=5);
}

Tampilan Run





 

4. Program Mengurutkan

Source Code :

//Nama : Ikhsan Ferry Pratama
//NIM : 21144005

#include <iostream>

void bubbleSort(int arr[], int n) {

    for (int i = 0; i < n - 1; i++) {

        for (int j = 0; j < n - i - 1; j++) {

            if (arr[j] > arr[j + 1]) {

                int temp = arr[j];

                arr[j] = arr[j + 1];

                arr[j + 1] = temp;

            }

        }

    }

}

int main() {

    const int jumlahData = 10;

    int data[jumlahData];

    std::cout << "Masukkan " << jumlahData << " nilai data:" << std::endl;

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

        std::cout << "Data ke-" << i + 1 << ": ";

        std::cin >> data[i];

    }

    std::cout << "Data sebelum diurutkan: ";

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

        std::cout << data[i] << " ";

    }

    bubbleSort(data, jumlahData);

    std::cout << "\nData setelah diurutkan: ";

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

        std::cout << data[i] << " ";

    }

    std::cout << std::endl;

    return 0;

}

#include <iostream>

void bubbleSort(int arr[], int n) {

    for (int i = 0; i < n - 1; i++) {

        for (int j = 0; j < n - i - 1; j++) {

            if (arr[j] > arr[j + 1]) {

                int temp = arr[j];

                arr[j] = arr[j + 1];

                arr[j + 1] = temp;

            }

        }

    }

}

int main() {

    const int jumlahData = 10;

    int data[jumlahData];

    std::cout << "Masukkan " << jumlahData << " nilai data:" << std::endl;

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

        std::cout << "Data ke-" << i + 1 << ": ";

        std::cin >> data[i];

    }

    std::cout << "Data sebelum diurutkan: ";

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

        std::cout << data[i] << " ";

    }

    bubbleSort(data, jumlahData);

    std::cout << "\nData setelah diurutkan: ";

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

        std::cout << data[i] << " ";

    }

    std::cout << std::endl;

    return 0;

}


Tampilan Run



Kamis, 20 Juli 2023

Membuat Program Searching C++

 #include <iostream>

#include<conio.h>

#include <stdio.h>

#include<iomanip>

using namespace std;

main()

{

int nilai[20];

int i,j,n;

int temp,awal,akhir,tengah,bilangan;

cout<<"Banyak Bilangan : ";cin>>n;

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

{

cout<<"\tElemen ke-"<<i<<" : ";cin>>nilai[i];

}

cout<<"\nElemen sebelum diurutkan : ";

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

cout<<setw(3)<<nilai[i];

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

{

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

{

if(nilai[i]>nilai[j])

{

temp=nilai[i];

nilai[i]=nilai[j];

nilai[j]=temp;

}

}

}

cout<<"\nElemen setelah diurutkan : ";

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

cout<<setw(3)<<nilai[i];

cout<<"\nIndeks Elemen : ";

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

cout<<setw(3)<<i;

cout<<"\nMasukkan bilangan yang akan anda cari : ";cin>>bilangan;

awal=0;

akhir=n-1;

do

{

tengah=(akhir+awal)/2;

if(bilangan<nilai[tengah])

akhir=tengah-1;

else

awal=tengah+1;

}

while((akhir>=awal)&&(nilai[tengah]!=bilangan));

if(nilai[tengah]==bilangan)

{

cout<<"\nData "<< bilangan <<" Ada dalam Array ";

cout<<"Pada indeks Elemen "<<tengah;

}

else

cout<<"\nData "<< bilangan <<" Tidak ada dalam Array\n";

getch();

}

Hasil Run:




Membuat Program Short C++

Contoh 1


#include <iostream>

#include<conio.h>

#include <stdio.h>

using namespace std;

main()

{

int i,j,n,temp;

int data[20];

printf("Berapa data yang akan diurutkan? ");

scanf("%i",&n);

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

{

printf("Masukkan data ke-%i=",i+1);

scanf("%i",&data[i]);

}

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

{

temp=data[i];

j=i-1;

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

{

data[j+1]=data[j];

j=j-1;

}

if(temp>=data[j])

data[j+1]=temp;

else

{

data[j+1]=data[j];

data[j]=temp;

}

}

printf("\nSetelah Pengurutan\n");

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

{

printf("Elemen ke-%i=%i\n",i+1,data[i]);

}

getch();

}


Output :






Contoh 2

Source Code :
#include <iostream>
#include<conio.h>
#include <stdio.h>
#include<iomanip>
using namespace std;
void cetak(int data[],int n)
{
int i;
for(i=0;i<n;i++)
{
cout<<setw(3)<<data[i];
}
};
int partisi(int data[], int p, int r)
{
int x,i,j,temp;
x=data[p];
i=p;
j=r;
while(1)
{
while(data[j]>x)
j--;
while(data[i]<x)
i++;
if(i<j)
{
temp=data[i];
data[i]=data[j];
data[j]=temp;
}
else
return j;
}
};
void quick_sort(int data[], int p, int r)
{
int q;
if(p<r)
{
q=partisi(data,p,r+1);
quick_sort(data,p,q);
quick_sort(data,q+1,r);
}
};
main()
{
int nilai[20];
int i,n;
cout<<"Masukkan banyak bilangan : ";cin>>n;
for(i=0;i<n;i++)
{
cout<<"Element ke-"<<i<<" : ";cin>>nilai[i];
}
cout<<"\nData sebelum diurutkan : ";
cetak(nilai,n);
cout<<endl;
quick_sort(nilai,0,n-1);
cout<<"\nData setelah diurutkan : ";
cetak(nilai,n);
getch();
}

Ouput :



Membuat Binary Tree C++

 #include <stdio.h>

#include <conio.h>
#include <stdlib.h>

//pendeklarasian struct sebuah tree awal
struct Node{
      int data;
      Node *kiri;
      Node *kanan;
};

//fungsi untuk menambahkan node baru
void tambah(Node **root, int databaru)
{
      //jika root masih kosong
      if((*root) == NULL)
      {
            //pembuatan node baru
            Node *baru;
            //pengalokasian memori dari node yang telah dibuat
            baru = new Node;
            //inisialisasi awal node yang baru dibuat
            baru->data = databaru;
            baru->kiri = NULL;
            baru->kanan = NULL;
            (*root) = baru;
            (*root)->kiri = NULL;
            (*root)->kanan = NULL;
            printf("Data bertambah!");
      }
     //jika data yang akan dimasukkan lebih kecil daripada elemen root, maka akan diletakkan di node sebelah kiri.
      else if(databaru<(*root)->data)
            tambah(&(*root)->kiri, databaru);
     //jika data yang akan dimasukkan lebih besar daripada elemen root, maka akan diletakkan di node sebelah kanan
      else if(databaru>(*root)->data)
            tambah(&(*root)->kanan, databaru);
     //jika saat dicek data yang akan dimasukkan memiliki nilai yang sama dengan data pada root
      else if(databaru == (*root)->data)
            printf("Data sudah ada!");
}

//fungsi yang digunakan untuk mencetak tree secara preOrder
void preOrder(Node *root)
{
      if(root != NULL){
            printf("%d ", root->data);
            preOrder(root->kiri);
            preOrder(root->kanan);
      }
}

//fungsi yang digunakan untuk mencetak tree secara inOrder
void inOrder(Node *root)
{
      if(root != NULL){
            inOrder(root->kiri);
            printf("%d ", root->data);
            inOrder(root->kanan);
      }
}

//fungsi yang digunakan untuk mencetak tree secara postOrder
void postOrder(Node *root)
{
      if(root != NULL){
            postOrder(root->kiri);
            postOrder(root->kanan);
            printf("%d ", root->data);
      }
}

//fungsi utama
int main()
{
      //deklarasikan variabel
      int pil, data;// c;
      Node *pohon; //*t;
      pohon = NULL; //inisialisasi node pohon
      //perulangan do-while
      do
      {
            system("cls"); //bersihkan layar
            printf("\t#PROGRAM TREE C++#");
            printf("\n\t==================");
            printf("\nMENU");
            printf("\n----\n");
            printf("1. Tambah\n");
            printf("2. Lihat pre-order\n");
            printf("3. Lihat in-order\n");
            printf("4. Lihat post-order\n");
            printf("5. Exit\n");
            printf("Pilihan : ");
            scanf("%d", &pil);
            switch(pil)
            {
            //jika pil bernilai 1
            case 1 :
                  printf("\nINPUT : ");
                  printf("\n-------");
                  printf("\nData baru : ");
                  scanf("%d", &data);
                  //panggil fungsi untuk menambah node yang berisi data pada tree
                  tambah(&pohon, data);
                  break;
                 
            //jika pil bernilai 2
            case 2 :
                  printf("\nOUTPUT PRE ORDER : ");
                  printf("\n------------------\n");
                  if(pohon!=NULL)
                       //panggil fungsi untuk mencetak data secara preOrder
                        preOrder(pohon);
                  else
                        printf("Masih kosong!");
                  break;
                 
            //jika pil bernilai 3
            case 3 :
                  printf("\nOUTPUT IN ORDER : ");
                  printf("\n------------------\n");
                  if(pohon!=NULL)
                       //panggil fungsi untuk mencetak data secara inOrder
                        inOrder(pohon);
                  else
                        printf("Masih kosong!");
                  break;
           
            //jika pil bernilai 4
            case 4 :
                  printf("\nOUTPUT POST ORDER : ");
                  printf("\n------------------\n");
                  if(pohon!=NULL)
                       //panggil fungsi untuk mencetak data secara postOrder
                        postOrder(pohon);
                  else
                        printf("Masih kosong!");
                  break;
            }
            _getch();
      }while(pil != 5); //akan diulang jika input tidak samadengan 5
      return EXIT_FAILURE;
}

Hasil Run :


UAS Structur Data C++

UAS STRUKTUR DATA INSERTION   1. Insetion Short Source Code : //Nama : Ikhsan Ferry Pratama //NIM : 21144005 #include <iostream> u...