Thursday, December 12, 2019

Contoh program algoritma greedy bahasa c (knapsack problem)

Contoh program algoritma greedy bahasa c (knapsack problem)

contoh program algoritma greedy bahasa c (knapsack problem)

kasus : barang yang akan diangkut pada mobil pengangkut barang

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

int jumlah = 0;
int kapasitas;

int beratMasuk[20];
char namaMasuk[20][20];
int jumlahMasuk = 0;
void freightCar(char nama[20], int berat, int index){
    kapasitas = kapasitas - berat;
    strcpy(namaMasuk[index],nama);
    beratMasuk[index] = berat;
    jumlahMasuk = jumlahMasuk + 1;
}

int main(){
    printf("kasus : barang yang akan dimasukkan ke mobil pengangkut barang\n");
    printf("Masukkan jumlah Barang (max 20 hehe): ");scanf("%d",&jumlah);
    if(jumlah > 20){
        printf("max 20 yak\n");
        main();
    }
    printf("Masukkan kapasitas penampung : ");scanf("%d",&kapasitas);
    int berat[jumlah];
    char nama[jumlah][20];
    for(int i = 0; i < jumlah;  i++){
        printf("Nama Barang : ");scanf("%s",&nama[i]);
        printf("Berat : ");scanf("%d",&berat[i]);
    }
  
    //shorting
    for (int i = 0; i < jumlah; i++) {
      for (int j = i + 1; j < jumlah; j++) {
         if (berat[i] < berat[j]) {
             int temp = berat[j];
             berat[j] = berat[i];
            berat[i] = temp;
          
            char temp1[20];
            strcpy(temp1,nama[j]);
            strcpy(nama[j],nama[i]);
            strcpy(nama[i],temp1);
         }
      }
   }
 
   //masukkan barang
   int i = 0;
   while(i < jumlah && kapasitas >= berat[i]){
        freightCar(nama[i],berat[i],i);
        i = i+1;
   }
  
    //printout
    printf("==Barang Masuk==\n");
    for(int i = 0; i < jumlahMasuk; i++){
        printf("Nama Barang : %s \n",namaMasuk[i]);
        printf("Berat : %d \n",beratMasuk[i]);
        printf("----------------\n");
    }
    printf("================\n");
    printf("Sisa Kapasitas : %d",kapasitas);
}
Share:

Thursday, December 5, 2019

Contoh stack menggunakan array bahasa c

gambar dari contoh stack menggunakan array bahasa c dengan kasus menyimpan tumpukkan baju

Contoh stack menggunakan array bahasa c

Kasus : Menyimpan tumpukkan baju


#include <iostream>
#include <stdlib.h>
#include <cstring>
#include <windows.h>
#include<conio.h>

using namespace std;

struct {
    int top;
    char baju[5][20];
}tumpukan;

void push(char tempBaju[20]);
void pop();
void awal();
int isEmpty();
int isFull();

int main(){
    int pilih,doHapus;
    char data[20];
    string i;
    awal();
    do{
        system("cls");
        cout<<"================================================="<<endl;
        cout<<"============= Program Tumpukan Baju ============="<<endl;
        cout<<" 1. PUSH (Untuk memasukkan baju ke tumpukkan)    "<<endl;
        cout<<" 2. POP  (Untuk mengeluarkan baju dari tumpukkan)"<<endl;
        cout<<" 3. EXIT                                         "<<endl;
        cout<<"================================================="<<endl;
        cout<<"=========== maximal hanya 5 tumpukan ============"<<endl;
     
        if(!isEmpty()){
            for(int i = tumpukan.top; i >= 0; i--){
                cout<<"["<<tumpukan.baju[i]<<"]"<<endl;
            }
        } else {
            cout<<"[tumpukan baju dalam kondisi kosong]";
        }
        cout<<"\nMasukkan Pilihan : ";cin>>pilih;
        switch(pilih){
            case 1:
                cout<<"Masukkan Baju kedalam tumpukkan [contoh: kemeja] : ";cin>>data;
                push(data);
                break;
            case 2:
                cout<<"Yakin akan mengeluarkan tumpukkan ? (input 1 for yes) : ";cin>>doHapus;
                if(doHapus == 1){
                    pop();
                } else {
                    main();
                }
                break;
            case 3:
                cout<<"Tekan enter untuk keluar :";
                break;
            default:
                cout<<"ERROR!";
                break;
        }
        printf("\nPress any key to continue...");
        getch();
    } while(pilih != 3);
}

void push(char data[5]){
    if (!isFull()){
        tumpukan.top = tumpukan.top + 1;
        strcpy(tumpukan.baju[tumpukan.top],data);
        cout<<"Baju berhasil masuk kedalam tumpukkan";
    } else {
        cout<<"Baju dalam tumpukan penuh";
    }
}

void pop(){
    if(!isEmpty()){
        tumpukan.top--;
        cout<<"Baju pada tumpukan ke-"<<tumpukan.top+2<<" sudah diambil";
    } else {
        cout<<"Baju dalam tumpukan kosong";
    }
}

void awal(){
    tumpukan.top = -1;
}

int isEmpty(){
    if(tumpukan.top == -1){
        return 1;
    } else {
        return 0;
    }
}

int isFull(){
    if(tumpukan.top==5-1){
        return 1;
    } else {
        return 0;
    }
}

link terkait :
contoh queue menggunakan linked list bahasa c
contoh stack menggunakan linked list bahasa c
contoh queue menggunakan array bahasa c 
Share:

Wednesday, December 4, 2019

Contoh stack menggunakan linked list bahasa c

gambar dari contoh stack menggunakan linked list bahasa c

Contoh stack menggunakan linked list Bahasa c

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

typedef struct Data {
    int value;
} Data;

typedef struct Elemen {
    struct Data Data;
    struct Elemen *next;
} Elemen;

typedef struct Stack {
    struct Elemen *top;
} Stack;

void display(Stack);
void push(int value, Stack *Stack);
void pop(Stack *Stack);

int main(){
    Elemen *current = (Elemen*) malloc(sizeof(Elemen));;
    int menu;
    char opsi;
    int value;
    Stack Stack;
    Stack.top = NULL;

    do {
        printf("===============menu===============\n");
        printf("1. Push\n");
        printf("2. Pop\n");
        printf("3. Display\n");
        printf("4. Exit\n");
        printf("==================================\n");


        printf("Pilih menu : ");scanf("%d", &menu);
        printf("----------------------------------------\n");

        if (menu == 1){
            printf("Push \n");
            printf("----------------------------------------\n");
            do {
                printf("Value  : ");
                scanf("%d", &value);fflush(stdin);
                push(value, &Stack);
                printf("berhasil !\n");
                printf("Push again ? [Y/N] : ");
                scanf("%c", &opsi);fflush(stdin);
                printf("\n");
            } while (opsi == 'Y' || opsi == 'y');
        } else if (menu == 2){
            printf("Pop \n");
            printf("----------------------------------------\n");
            if (Stack.top == NULL){
                printf("\nData belum ada !\n");
            } else {
                pop(&Stack);
                printf("\n berhasil !\n");
            }
        } else if (menu == 3){
            display(Stack);
        } else if (menu == 4){
            printf("Keluar\n");
        } else {
            printf("Menu tidak tersedia !\n");
        }
    } while (menu != 4);
}

void display(Stack Stack){
    if(Stack.top == NULL){
        printf("\nData Kosong !\n");
    } else {
                printf("-> Isi Data : \n");
                Elemen *current = Stack.top;
                while(current != NULL){
               printf("%d \n",current->Data.value);
               current = current->next;
                                }
    }
}

void push(int value, Stack *Stack){
    Elemen *current = (Elemen*) malloc(sizeof(Elemen));
    current->Data.value = value;

    if(Stack->top == NULL){
        Stack->top = current;
        current->next = NULL;
        current = NULL;
    } else {
        current->next = Stack->top;
        Stack->top = current;
                                current = NULL;
    }
}

void pop(Stack *Stack){
    Elemen *current = (Elemen*) malloc(sizeof(Elemen));
    if(Stack->top->next != NULL){
                    current = Stack->top;
                    Stack->top = current->next;
                } else {
                                Stack->top = NULL;
                }
                free(current);
    current = NULL;
}

link terkait:
contoh queue menggunakan linked list bahasa c
contoh queue menggunakan array bahasa c
contoh stack menggunakan array bahasa c

Share:

Contoh queue menggunakan linked list bahasa c

gambar dari contoh queue menggunakan linked list bahasa c

Contoh queue menggunakan linked list Bahasa c


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

typedef struct Data {
    int value;
} Data;

typedef struct Elemen {
    struct Data Data;
    struct Elemen *next;
} Elemen;

typedef struct Queue {
    struct Elemen *front;
    struct Elemen *rear;
} Queue;

void display(Queue);
void insert(int value, Queue *Queue);
void deleteQueue(Queue *Queue);

int main(){
    Elemen *current = (Elemen*) malloc(sizeof(Elemen));;
    int menu;
    char opsi;
    int value;
    Queue Queue;
    Queue.front = NULL;

    do {
        printf("===============menu===============\n");
        printf("1. Insert\n");
        printf("2. Delete\n");
        printf("3. Display\n");
        printf("4. Exit\n");
        printf("==================================\n");


        printf("Pilih menu : ");scanf("%d", &menu);
        printf("----------------------------------------\n");

        if (menu == 1){
            printf("Insert \n");
            printf("----------------------------------------\n");
            do {
                printf("Value  : ");
                scanf("%d", &value);fflush(stdin);
                insert(value, &Queue);
                printf("berhasil !\n");
                printf("Insert again ? [Y/N] : ");
                scanf("%c", &opsi);fflush(stdin);
                printf("\n");
            } while (opsi == 'Y' || opsi == 'y');
        } else if (menu == 2){
            printf("Delete \n");
            printf("----------------------------------------\n");
            if (Queue.front == NULL){
                printf("\nData belum ada !\n");
            } else {
                deleteQueue(&Queue);
                printf("\n berhasil !\n");
            }
        } else if (menu == 3){
            display(Queue);
        } else if (menu == 4){
            printf("Keluar\n");
        } else {
            printf("Menu tidak tersedia !\n");
        }
    } while (menu != 4);
}

void display(Queue Queue){
    if(Queue.front == NULL){
        printf("\nData Kosong !\n");
    } else {
        printf("-> Isi Data : \n");
        Elemen *current = Queue.front;
        while(current != NULL){
            printf("%d \n",current->Data.value);
            current = current->next;
        }
    }
}

void insert(int value, Queue *Queue){
    Elemen *current = (Elemen*) malloc(sizeof(Elemen));
    current->Data.value = value;

    if(Queue->front == NULL){
        Queue->front = current;
        Queue->rear = current;
        current->next = NULL;
        current = NULL;
    } else {
        Queue->rear->next = current;
        Queue->rear = current;
        current->next = NULL;
        current = NULL;
    }
}

void deleteQueue(Queue *Queue){
    Elemen *current = (Elemen*) malloc(sizeof(Elemen));
    if(Queue->front->next != NULL){
        current = Queue->front;
        Queue->front = current->next;
    } else {
        Queue->front = NULL;
    }
    free(current);
    current = NULL;
}

link terkait:
contoh stack menggunakan array bahasa c
contoh stack menggunakan linked list bahasa c
contoh queue menggunakan array bahasa c 
Share:

Tuesday, December 3, 2019

Contoh queue menggunakan array bahasa c

tampilan awal dari contoh queue menggunakan array bahasa c dengan kasus antrian mobil di gerbang tol

Contoh queue menggunakan array bahasa c

Kasus : antrian mobil di gerbang tol

== program ==
#include <iostream>
#include <string.h>
#include <string>
#include<conio.h>
#define MAX 5
using namespace std;
struct Queue{
    int front, rear, gerbang[MAX];
} Q;

struct Queue1{
    int front, rear, gerbang[MAX];
} Q1;
int label;

bool isFull(int a){
    if(a == 1){
        return Q.rear == MAX;
    } else if(a == 2){
        return Q1.rear == MAX;
    } else {
        return false;
    }
}

bool isEmpty(int a){
    if(a == 1){
        return Q.rear == 0;
    } else if(a == 2){
        return Q1.rear == 0;
    } else {
        return false;
    }
}

void printQueue(){
    cout << "+--------------------------------------+"<<endl;
    cout << "|   Gerbang Tol 1 Tersedia "<< MAX - Q.rear <<" Antrian   |"<<endl;
    cout << "+======================================+"<<endl;
    if(isEmpty(1)){
        cout << "          Antrian kosong              "<<endl;
    } else {
        for (int i = Q.front; i < Q.rear; i++){
            cout<<"+----+  ";
        }
        cout<<endl;
        for (int i = Q.front; i < Q.rear; i++){
            cout<<"| "<<Q.gerbang[i]<<((Q.gerbang[i] < 10) ? " " : "")<<" |  ";
        }
        cout <<endl;
        for (int i = Q.front; i < Q.rear; i++){
            cout<<"+----+  ";
        }
        cout<< endl;
    }
    cout << "+======================================+"<<endl<<endl;
  
    cout << "+--------------------------------------+"<<endl;
    cout << "|   Gerbang Tol 2 Tersedia "<< MAX - Q1.rear <<" Antrian   |"<<endl;
    cout << "+======================================+"<<endl;
    if(isEmpty(2)){
        cout << "          Antrian kosong              "<<endl;
    } else {
        for (int i = Q1.front; i < Q1.rear; i++){
            cout<<"+----+  ";
        }
        cout<<endl;
        for (int i = Q1.front; i < Q1.rear; i++){
            cout<<"| "<<Q1.gerbang[i]<<((Q1.gerbang[i] < 10) ? " " : "")<<" |  ";
        }
        cout <<endl;
        for (int i = Q1.front; i < Q1.rear; i++){
            cout<<"+----+  ";
        }
        cout<< endl;
    }
    cout << "+======================================+"<<endl;
}

void enqueue(){
    int pilihGerbang;
    cout<<"----------------------\n"
        <<"1. Gerbang Tol 1      \n"
        <<"2. Gerbang Tol 2      \n"
        <<"----------------------\n";
    cout<<"Pilih Gerbang Tol : ";cin>>pilihGerbang;
    switch(pilihGerbang){
        case 1:
            if(isFull(1)){
                cout<<"----------------------\n"
                    <<" Gerbang Tol 1 Penuh  \n"
                    <<"----------------------\n";
            } else {
                label = label + 1;
                Q.gerbang[Q.rear] = label;
                Q.rear++;
                cout<<"----------------------------------\n"
                    <<"Mobil telah masuk ke gerbang tol 1\n"
                    <<"----------------------------------\n";
            }
            break;
        case 2:
            if(isFull(2)){
                cout<<"----------------------\n"
                    <<" Gerbang Tol 2 Penuh  \n"
                    <<"----------------------\n";
            } else {
                label = label + 1;
                Q1.gerbang[Q1.rear] = label;
                Q1.rear++;
                cout<<"----------------------------------\n"
                    <<"Mobil telah masuk ke gerbang tol 2\n"
                    <<"----------------------------------\n";
            }
            break;
        default:
            cout<<"--------------------------\n"
                <<"Gerbang Tol tidak tersedia\n"
                <<"--------------------------\n";
            break;
    }
}

void dequeue(){
    int pilihGerbang;
    cout<<"----------------------\n"
        <<"1. Gerbang Tol 1      \n"
        <<"2. Gerbang Tol 2      \n"
        <<"----------------------\n";
    cout<<"Pilih Gerbang Tol : ";cin>>pilihGerbang;
    switch(pilihGerbang){
        case 1:
            if(isEmpty(1)){
                cout<<"------------------------------------\n"
                    <<" Antrian Gerbang Tol 1 Masih Kosong \n"
                    <<"------------------------------------\n";
            } else {
                cout<<"-------------------------------------------------\n"
                    <<" Mobil Nomor '"<< Q.gerbang[Q.front]<<"' telah selesai dari Gerbang Tol 1\n"
                    <<"-------------------------------------------------\n";
                for(int i = Q.front; i < Q.rear; i++){
                    Q.gerbang[i] = Q.gerbang[i+1];
                }
                Q.rear--;
            }
            break;
        case 2:
            if(isEmpty(2)){
                cout<<"------------------------------------\n"
                    <<" Antrian Gerbang Tol 2 Masih Kosong \n"
                    <<"------------------------------------\n";
            } else {
                cout<<"-------------------------------------------------\n"
                    <<" Mobil Nomor '"<< Q1.gerbang[Q1.front]<<"' telah selesai dari Gerbang Tol 2\n"
                    <<"-------------------------------------------------\n";
                for(int i = Q1.front; i < Q1.rear; i++){
                    Q1.gerbang[i] = Q1.gerbang[i+1];
                }
                Q1.rear--;
            }
            break;
        default:
            cout<<"--------------------------\n"
                <<"Gerbang Tol tidak tersedia\n"
                <<"--------------------------\n";
            break;
    }
}

int main(){
    int choose;
    do{
        system("cls");
        cout<<"----------------------\n"
            <<"     Menu Pilihan     \n"
            <<"----------------------\n"
            <<" [1] Enqueue \n"
            <<" [2] Dequeue \n"
            <<" [3] Keluar \n"
            <<"----------------------\n\n";
            printQueue();
        cout<<"Masukkan pilihan : "; cin >> choose;
     
        switch(choose){
            case 1:
                enqueue();
                break;
            case 2:
                dequeue();
                break;
            case 3:
                cout<<"Keluar...";
                break;
            default:
                cout<<"----------------------\n"
                    <<"Pilihan tidak tersedia\n"
                    <<"----------------------\n";
                break;
        }
        printf("\nPress any key to continue...");
        getch();
    } while(choose != 3);
    return 0;
}

link terkait :
contoh queue menggunakan linked list bahasa c
contoh stack menggunakan linked list bahasa c
contoh stack menggunakan array bahasa c 
Share:
Powered by Blogger.

Labels

Pages

Pages

Featured Post

Penulisan Kata dalam Ejaan Bahasa Indonesia

Penulisan Kata dalam Ejaan Bahasa Indonesia Kata Dasar Kata dasar ditulis sebagai satu kesatuan. Contoh: Kantor pajak penuh sesak. Kat...