Kamis, 16 Maret 2017

Stack dan Queue Pada Array


Nama : Muh Saiful   
Nim   : E1E1 15 075







           Kali ini saya akan membahas stack dan queue pada array langsung saja saya akan menjelaskan kan sedikit tentang Stack dan Queue.

1. Pengertian Stack (Tumpukan)
          Stack (Tumpukan) adalah kumpulan elemen-elemen data yang disimpan dalam satu lajur linear. Kumpulan elemen-elemen data hanya boleh diakses pada satu lokasi saja yaitu posisi ATAS (TOP) tumpukan. Tumpukan digunakan dalam algoritma pengimbas (parsing), algoritma penilaian (evaluation) dan algoritma penjajahan balik (backtrack). Elemen-elemen di dalam tumpukan dapat bertipe integer, real, record dalam bentuk sederhana atau terstruktur.
          Stack adalah suatu tumpukan dari benda. Konsep utamanya adalah LIFO (Last In First Out), benda yang terakhir masuk dalam stack akan menjadi benda pertama yang dikeluarkan dari stack. Tumpukan disebut juga “Push Down Stack” yaitu penambahan elemen baru (PUSH)ndan penghapusan elemen dari tumpukann(POP). Contoh pada PDA (Push Down Automaton). Sistem pada pengaksesan pada tumpukan menggunakn system LIFO (Last In First Out), artinya elemen yang terakhir masuk itu yang akan pertama dikeluarkan dari tumpukan (Stack). Ilustrasi tumpukan (Stack) dapat digambarkan seperti tumpukan CD atau tumpukan sate. Stack merupakan suatu susunan koleksi data dimana dapat ditambahkan dan dihapus selalu dilakukan pada bagian akhir data, yang disebut dengan Top Of Stack.
  
Operasi – operasi pada Stack (Tumpukan) :
  • Push : digunakan untuk menembah item pada Stack pada Tumpukan paling atas.
  • Pop : digunakan untuk mengambil item pada Stack pada Tumpukan paling atas.
  • Clear : digunakan untuk mengosongkan Stack.
  • Create Stack : membuat Tumpukan baru S, dengan jumlah elemen kosong.
  • MakeNull : mengosongkan Tumpukan S, jika ada elemen maka semua elemen dihapus.
  • IsEmpty : fungsi yang digunakan untuk mengecek apakah Stack sudah kosong.
  • Isfull : fungsi yang digunakan untuk mengecek apakah Stack sudah penuh.


2. Definisi Queue (Antrian)
          Queue merupakan suatu struktur data linear. Konsepnya hampir sama dengan Stack, perbedaannya adalah operasi penambahan dan penghapusan pada ujung yang bebeda. Penghapusan dilakukan pada bagian depan (front) dan penambahan berlaku pada bagian belakang (Rear). Elemen-elemen di dalam antrian dapat bertipe integer, real, record dalam bentuk sederhana atau terstruktur.
          Tumpukan disebut juga “Waiting Line” yaitu penambahan elemen baru dilakukan pada bagian belakang dan penghapusan elemen dilakukan pada bagian depan. Sistem pada pengaksesan pada Queue menggunakan sistem FIFO (First In First Out), artinya elemen yang pertama masuk itu yang akan pertama dikeluarkan dari Queue. Queue jika diartikan secara harfiah, queue berarti antrian. Queue merupakan salah satu contoh aplikasi dari pembuatan double linked list yang cukup sering kita temui dalam kehidupan sehari-hari, misalnya saat anda mengantri diloket untuk membeli tiket.
         Istilah yang cukup sering dipakai apabila seseorang masuk dalam sebuah antrian adalah enqueue. Sedang istilah yang sering dipakai bila seseorang keluar dari antrian adalah dequeue.

Operasi-operasi pada Queue :
  • Create Queue (Q) : membuat antrian baru Q, dengan jumlah elemen kosong.
  • Make NullQ (Q) : mengosongkan antrian Q, jika ada elemen maka semua elemen dihapus.
  • EnQueue : berfungsi memasukkan data kedalam antrian.
  • DeQueue : berfungsi mengeluarkan data terdepan dari antrian.
  • Clear : Menghapus seluruh Antrian
  • IsEmpty : memeriksa apakah antrian kosong
  • IsFull : memeriksa apakah antrian penuh.

Berikut codingannya , jangan lupa untuk dipahami ya setiap codingannya !!!
Semoga bermanfaat . 


1. Program Stack (Tumpukan)


Script Program :

#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define max_stack 15

using namespace std;

struct stack {//Mendefinisikan stack dengan menggunakan struct

    int top;
    string data[max_stack]; //string data untuk menampung stack yg tidak berurut
    string tampil_urut[max_stack]; //string tampil_urut untuk menampung stack yang terurut
};stack tumpuk; //stack dideklarasikan menjadi tumpuk


void push(string d){ //Fungsi push untuk memasukkan stack
    tumpuk.top++;
   tumpuk.data[tumpuk.top]=d;
    cout<<"data berhasil dimasukkan"<<endl;
}

void pop(){ // fungsi pop untuk mengeluarkan stack teratas(paling trakhir di input)
    cout<<"data "<<tumpuk.data[tumpuk.top]<<" terambil";
    tumpuk.top--;
}

bool isFull() //untuk mengecek apakah stack penuh
{
    if (tumpuk.top==max_stack-1)
        return true;
    else
        return false;
}

bool isEmpty(){ // untuk mengecek apakah stack kosong
    if (tumpuk.top==-1)
        return true;
    else
        return false;
}

void clear(){ //untuk menghapus isi stack
    tumpuk.top=-1;
    cout<<"semua data terhapus "<<endl;
}
void tukar(int a,int b) //untuk menukar nilai a dan b (mengurutkan stack)
{
    string t;
    t=tumpuk.tampil_urut[b];
    tumpuk.tampil_urut[b]=tumpuk.tampil_urut[a];
    tumpuk.tampil_urut[a]=t;
}

void print(){  //untuk menampilkan data stack
    string t;
    string pilih;
    cout<<"Tampilkan Data Yang Belum Terurut:"<<endl;
    for (int i=tumpuk.top;i>=0;i--){
        cout<<tumpuk.data[i]<<endl;
        tumpuk.tampil_urut[i]=tumpuk.data[i];
    }

    cout<<"\nPilih Sorting Ascending atau Descending(asc/desc) :"; cin>>pilih;
    if(pilih=="asc"){
        for (int i=0; i<tumpuk.top; i++){
            for(int j = (i+1); j<=tumpuk.top; j++){
                if (tumpuk.tampil_urut[i] < tumpuk.tampil_urut[j])
                    tukar(i,j);

            }
        }

    }

    else if(pilih=="desc"){
        for (int i=0; i<tumpuk.top; i++){
            for(int j = (i+1); j<=tumpuk.top; j++){
                if (tumpuk.tampil_urut[i] > tumpuk.tampil_urut[j])
                    tukar(i,j);

            }
        }
    }

    for (int i=tumpuk.top;i>=0;i--)
        cout<<tumpuk.tampil_urut[i]<<endl;


}



int main()
{
    int pil;
    string input;
    tumpuk.top=-1;

    do{

        system("cls");
        cout<<"=====MENU PROGRAM STACK====="<<endl;
        cout<<"1. Push Data Pada Stack \n";
        cout<<"2. Pop Data Pada Stack  \n";
        cout<<"3. Clear Data Pada Stack \n";
        cout<<"4. Tampilkan Data Pada Stack\n";
        cout<<"5. Keluar Dari Program Stack\n\n";

        cout<<"Pilihan : ";
        cin>>pil;

        switch(pil){
        case 1: //untuk mempush (input) stack
            if(isFull()==1)
                cout<<"Stack penuh"<<endl;
             else{
                cout<<"Masukkan data : ";
                cin>>input;
                push(input);
            }break;

        case 2: //untuk mempop (mengeluarkan) stack
            if(isEmpty()==true)
                cout<<"Stack kosong"<<endl;
            else
                pop();
            break;

        case 3: //untuk menghapus atau mengosongkan stack
            clear();
            cout<<"Stack Kosong "<<endl;
            break;

        case 4: //untuk menampilkan data
            if(isEmpty()==true)
                cout<<"Stack Kosong "<<endl;
            else{
                         print();
            }
            break;

        }
    getch ();
    }while(pil!=5);


    return 0;
}
Output:




Keterangan :
1.Saya mempush bilangan dari 4,6,5,8
2.Lalu saya mempopnya , angka 8 terpop karna angka 8 adalah angka terakhir yang saya inputkan(sesuai dengan prinsip stack/tumpukan last in first out).
3.Angka 8 hilang atau terhapus karna telah terpop

2. Program Queue (Antrian) .


Script Program :

#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define max 15

using namespace std;

struct queue {//Mendefinisikan queue dengan menggunakan struct

    int head,tail; //head adalah antrian awal dan tail adalah antrian akhir
    string data[max]; //string data untuk menampung queue yg belum diurut
    string urut[max]; //string data untuk menampung stack yg terurut
};queue antri; //queue dideklarasikan menjadi antri


void enqueue(string d){ //fungsi enqueue untuk memasukkan antrian
    antri.head=0;
    antri.tail++;
    antri.data[antri.tail]=d;

    cout<<"data berhasil dimasukkan"<<endl;
}

void dequeue(){ //fungsi dequeue untuk mengeluarkan antrian yg paling awal masuk
    cout<<"data "<<antri.data[antri.head]<<" terambil";
    for(int i=antri.head;i<antri.tail;i++){
        antri.data[i]=antri.data[i+1];

    }
    antri.tail--;
}

bool isFull() //untuk mengecek apakah antrian penuh
{
    if (antri.tail==max-1)
        return true;
    else
        return false;
}

bool isEmpty(){//untuk mengecek apakah antrian kosong
    if (antri.tail==-1)
        return true;
    else
        return false;
}

void clear(){//untuk menhapus antrian
    antri.head=antri.tail=-1;

    cout<<"semua data terhapus "<<endl;
}
void tukar(int a,int b) //untuk menukar nilai a dan b (mengurutkan antrian)
{
    string t;
    t=antri.urut[b];
    antri.urut[b]=antri.urut[a];
    antri.urut[a]=t;
}

void print(){ //untuk menampilkan antrian
    string t;
    string pilih;
    cout<<"Tampilkan Data Yang Belum Terurut:"<<endl<<endl;
    for (int i=0;i<=antri.tail;i++){
        cout<<antri.data[i]<<" ";
        antri.urut[i]=antri.data[i];
    }

    cout<<"\n\nPilih Sorting Ascending atau Descending(asc/desc) :"; cin>>pilih;
    cout<<endl;
    if(pilih=="asc"){
        for (int i=0; i<antri.tail; i++){
            for(int j = (i+1); j<=antri.tail; j++){
                if (antri.urut[i] > antri.urut[j]) tukar(i,j);
            }
        }
    }

    else if(pilih=="desc"){
        for (int i=0; i<antri.tail; i++){
            for(int j = (i+1); j<=antri.tail; j++){
                if (antri.urut[i] < antri.urut[j]) tukar(i,j);
            }
        }
    }

     for (int i=0;i<=antri.tail;i++)
        cout<<antri.urut[i]<<" ";


}



int main()
{
    int pil;
    string input;
    antri.head=antri.tail=-1;

    do{

        system("cls");
        cout<<"=====MENU PROGRAM QUEUE====="<<endl;
        cout<<"1. Enqueue Data Pada Antrian \n";
        cout<<"2. Dequeue Data Pada Antrian  \n";
        cout<<"3. Clear Data Pada Antrian \n";
        cout<<"4. Tampilkan Data Pada Antrian\n";
        cout<<"5. Keluar Dari Program Antrian\n\n";

        cout<<"Pilihan : ";
        cin>>pil;

        switch(pil){
        case 1://untuk meng enqueue/memasukan antrian
            if(isFull()==1)
                cout<<"Antrian penuh"<<endl;
            else{
                cout<<"Masukkan data : ";
                cin>>input;
                enqueue(input);
            }break;

        case 2: //untuk meng dequeue/mengeluarkan antrian yg pling pertama masuk
            if(isEmpty()==true)
                cout<<"Antrian Kosong"<<endl;
            else
                dequeue();
            break;

        case 3: //untuk menhapus smua antrian
            clear();
            cout<<"Antrian Kosong "<<endl;
            break;

        case 4: //untuk menampilkan smua antrian
            if(isEmpty()==true)
                cout<<"Antrian Kosong "<<endl;
            else{
                         print();
            }
            break;

        }
    getch ();
    }while(pil!=5);




    return 0;
}

Output :




Keterangan :

  1. Saya meng enqueue(memasukkan antrian) data dimulai dari 5,4,7,8 lalu saya menampilkannya.
  2. Lalu saya meng dequeue (mengeluarkan antrian) dan data 5 terambil karena data 5 adalah data yang paling pertama saya inputkan (sesuai dengan prinsip queue/antrian first in first out).
  3. kemudian data 5 hilang/dikeluarkan dari antrian karena telah ter dequeue dari antrian 




3. Program Konversi Infix ke Postpix dan hasil operasinya .

Script Program :


#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <stack>
#include <string.h>
#define max_stack 15


using namespace std;

struct stack1 {//Mendefinisikan stack dengan menggunakan struct

    int topx,topy;
    char x[max_stack]; //string data untuk menampung stack yg tidak berurut
    char y[max_stack];
};stack1 tumpuk; //stack dideklarasikan menjadi tumpuk




void pushx(char d){ //Fungsi push untuk memasukkan stack

    tumpuk.topx++;
    tumpuk.x[tumpuk.topx]=d;

}
void pushy(char d){ //Fungsi push untuk memasukkan stack
    tumpuk.topy++;
   tumpuk.y[tumpuk.topy]=d;

}





void popx(){ // fungsi pop untuk mengeluarkan stack teratas(paling trakhir di input)

    tumpuk.topx--;
}


void popy(){ // fungsi pop untuk mengeluarkan stack teratas(paling trakhir di input)

    tumpuk.topy--;
}


bool isEmpty(){ // untuk mengecek apakah stack kosong
    if (tumpuk.topy==-1)
        return true;
    else
        return false;
}
bool isFull(){ // untuk mengecek apakah stack kosong
    if (tumpuk.topy==max_stack-1)
        return true;
    else
        return false;
}

void convert(int jml,char postfix[15]){
    tumpuk.topx=-1;
    tumpuk.topy=-1;

    for(int i=0; i<jml;i++){
        if(postfix[i]>='0' && postfix[i]<='9'){
            pushx(postfix[i]);
            if(i==jml-1){
                if(tumpuk.topy==1){
                pushx(tumpuk.y[tumpuk.topy]);
                popy();
                pushx(tumpuk.y[tumpuk.topy]);
                popy();
                }
                else{
                    pushx(tumpuk.y[tumpuk.topy]);
                    popy();
                }
            }
        }


        else if(postfix[i]=='+' || postfix[i]=='-' || postfix[i]=='/'|| postfix[i]=='*' ){


            if(isEmpty()==true){
                pushy(postfix[i]);
            }
            else if((tumpuk.y[tumpuk.topy]=='+' || tumpuk.y[tumpuk.topy]=='-') && (postfix[i]=='/' || postfix[i]=='*')){
                pushy(postfix[i]);
            }
            else if((tumpuk.y[tumpuk.topy]=='+' || tumpuk.y[tumpuk.topy]=='-') && (postfix[i]=='-' || postfix[i]=='+')){
                pushx(tumpuk.y[tumpuk.topy]);
                popy();
                pushy(postfix[i]);
            }
            else if((tumpuk.y[tumpuk.topy]=='*' || tumpuk.y[tumpuk.topy]=='/') && (postfix[i]=='/' || postfix[i]=='*') ){
                pushx(tumpuk.y[tumpuk.topy]);
                popy();
                pushy(postfix[i]);
            }

            else if((tumpuk.y[tumpuk.topy]=='*' || tumpuk.y[tumpuk.topy]=='/') && (postfix[i]=='-' || postfix[i]=='+') ){
                pushx(tumpuk.y[tumpuk.topy]);
                popy();
                if((tumpuk.y[tumpuk.topy]=='-' ||tumpuk.y[tumpuk.topy]=='+') &&  (postfix[i]=='-' || postfix[i]=='+') ){
                    pushx(tumpuk.y[tumpuk.topy]);
                    popy();
                    pushy(postfix[i]);
                }

                else{
                        pushy(postfix[i]);
                }

            }

        }

    }

    cout<<"\n\Infix Expression               : ";
    for(int i=0;i<jml;i++){
        cout<<postfix[i]<<" ";
    }

    cout<<"\nHasil Konversi Infix ke Postfix : ";
    for(int i=0;i<=tumpuk.topx;i++){
        cout<<tumpuk.x[i]<<" ";
    }
    cout<<endl;

}
bool isOperator(char ch)
{
    if (ch=='+' || ch=='-' || ch=='*' || ch=='/')
        return true;
    else
        return false;
}
double performOperation(double op1, double op2, char op)
{
    double ans;
    switch(op){
    case '+':
        ans = op2 + op1;
        break;
    case '-':
        ans = op2 - op1;
        break;
    case '*':
        ans = op2 * op1;
        break;
    case '/':
        ans = op2 / op1;
        break;
    }
    return ans;
}


void operasi(){
    int len;
    double x,op1,op2;
    char buffer[15];

    stack <double> s;
    len = strlen(tumpuk.x);
    int j=0;
    for(int i=0; i<len;i++){
        if(tumpuk.x[i]>='0' && tumpuk.x[i]<='9'){
            buffer[j]=tumpuk.x[i];
                x = atof(buffer);
                s.push(x);
        }

        else if(isOperator(tumpuk.x[i])){
            op1 = s.top();
            s.pop();
            op2 = s.top();
            s.pop();
            s.push(performOperation(op1, op2, tumpuk.x[i]));
        }


    }
    cout<<"Hasil : "<<s.top();
}





int main()
{
    char infix[max_stack];
    int jumlah;

    cout<<"=======PROGRAM KALKULATOR SCIENTIFIC SEDERHANA======="<<endl<<endl;

    cout<<"Masukkan Operasi Kalkulator Infix (a+b*c...n) : "; cin>>infix;
    jumlah = strlen(infix);

    if(isFull()==true)
        return 0;
    else{
        convert(jumlah,infix);
        operasi();
    }
    getch();
    return 0;
}
Output :




Keterangan Program :
Maap Program ini hanya bisa mengoperasikan angka 1 sampai 9 tidak bisa mengoperasikan angka puluhan ,ratusan dan lainnya




Share:

Rabu, 22 Februari 2017

Searching Array C++

  Program Searching Array C++

Nama : Muh Saiful   
Nim   : E1E1 15 075






Proses pencarian (searching) merupakan proses menemukan nilai (data) tertentu di dalam sekumpulan data yang bertipe sama (baik bertipe dasar atau bertipe bentukan).
Algoritma pencarian yang paling sederhana terbagi menjadi 2, yaitu:
1. Sequential Search (Pencarian Beruntun)
2. Binary Search (Pencarian Bagi Dua)
Kali ini akan membahas pencarian (searching) data di dalam "Array" secara beruntun (Sequential Search). Dinamakan pencarian beruntun karena prosesnya membandingkan setiap elemen array satu per satu secara beruntun, mulai dari elemen pertama, sampai elemen yang dicari ditemukan atau seluruh elemen sudah diperiksa.

Berikut codingannya , jangan lupa untuk dipahami ya setiap codingannya !!!
Semoga bermanfaat . 


1. Program untuk mencari data pada array 2 dimensi


Script Program :

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

using namespace std;

int main()
{
    int bar,kol,cari,counter=0,n=0;
    int matriks[100][100];
    int x[100][100],y[100][100];

    cout <<"\t\tPROGRAM MENCARI DATA PADA MATRIKS\n";
    cout <<"\t\t======================================\n\n";
    cout << "Masukkan banyak baris pada matriks : ";cin>>bar;
    cout << "Masukkan banyak kolom pada matriks : ";cin>>kol;

    for(int i=0;i<bar;i++){ //proses input data
        for(int j=0;j<kol;j++){
            cout<<"Masukkan data ["<<i<<"] ["<<j<<"] = ";
            cin>>matriks[i][j];
        }
    }

    for(int i=0;i<bar;i++){ //proses output data yg telah diinputkan
        for(int j=0;j<kol;j++){
            cout<<matriks[i][j]<<"  ";
        }
        cout<<endl;
    }

    cout<<"Masukkan data yang dicari : "; cin>>cari;
    for(int i=0;i<bar;i++){
        for(int j=0;j<kol;j++){
            if(matriks[i][j]==cari){ //apabila matriks = cari var counter akan brtmbah
                x[i][j]=i;  //var x dan y disini brfungsi untuk mnampung indeks data
                y[i][j]=j;

                counter++;
            }
        }
    }
    if(counter>0){
        cout<<"Data "<<cari<<" berada pada posisi : "; //output indeks
        for(int i=0;i<bar;i++){
            for(int j=0;j<kol;j++){
                if(matriks[i][j]==cari){
                    cout<<"["<<x[i][j]<<"]["<<y[i][j]<<"]"; //pengeluaran indeks yang tlah trsimpan
                    n++;
                    if(n==counter) break;
                    else cout<<" , ";
                }
            }
        }
    }
    getch();
    return 0;
}



Output:





2. Program untuk mencari data berupa huruf pada inputan yang berupa kalimat.


Script Program :

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

using namespace std;

int main()
{
    int vk,ks,spasi,angka,simbol; //deklarasi nilai counter
    int n,jml=0;               //variabel n Penerapan fungsi string
    char cari;
    char kalimat[100],a[100],b[100],c[100],d[100]; //variabel counter
    vk=ks=spasi=angka=simbol=0;

    cout <<"\t\tPROGRAM MENGKATEGORIKAN CHAR (KARAKTER)\n";
    cout <<"\t\t=======================================\n\n";
    cout <<"Masukkan Kalimat : ";
    cin.getline(kalimat,sizeof(kalimat)); //input kalimat
    n=strlen(kalimat); //fungsi untuk menentukan pnjang string

    for(int i=0;i<n;i++){ //pengecekkan array
        if(kalimat[i]=='a'||kalimat[i]=='i'||kalimat[i]=='u'||kalimat[i]=='e'||kalimat[i]=='o'){ //jika huruf vokal
            a[vk]=kalimat[i];
            vk++;
        }
        else if(kalimat[i]=='A'||kalimat[i]=='I'||kalimat[i]=='U'||kalimat[i]=='E'||kalimat[i]=='O'){//jika huruf vokal
            a[vk]=kalimat[i];
            vk++;
        }
        else if(kalimat[i]>='A' && kalimat[i]<='Z'){//jika huruf konsonal
            b[ks]=kalimat[i];
            ks++;
        }
        else if(kalimat[i]>='a' && kalimat[i]<='z'){////jika huruf konsonal
            b[ks]=kalimat[i];
            ks++;
        }
        else if(kalimat[i]>='0' && kalimat[i]<='9'){//jika angka
            c[angka]=kalimat[i];
            angka++;
        }
        else if(kalimat[i]==' '){//jika spasi
            spasi++;
        }
        else{ //jika simbol
            d[simbol]=kalimat[i];
            simbol++;
        }
    }
    cout<<"Jumlah Huruf Vokal\t= "<<vk<<" : ";
    for(int i=0;i<vk;i++){ //pengeluaran huruf vokal
        cout<<a[i]<<" ";
    }
    cout<<endl;
    cout<<"Jumlah Huruf Konsonan\t= "<<ks<<" : ";
    for(int i=0;i<ks;i++){ //pengeluaran huruf konsonal
        cout<<b[i]<<" ";
    }
    cout<<endl;
    cout<<"Jumlah Angka\t\t= "<<angka<<" : ";
    for(int i=0;i<angka;i++){ //pengeluaran angka
        cout<<c[i]<<" ";
    }
    cout<<endl;
    cout<<"Jumlah simbol\t\t= "<<simbol<<" : ";
    for(int i=0;i<simbol;i++){ //pengeluaran simbol
        cout<<d[i]<<" ";
    }
    cout<<endl;
    cout<<"Jumlah Spasi\t\t= "<<spasi<<endl<<endl;

    cout<<"Masukkan data yang anda cari : "; cin>>cari;
    for(int i=0;i<n;i++){ //pengecekkan data
        if(kalimat[i]==cari){
            jml++;
        }
    }
    if(jml>0) //apabila jumlah >0 maka data ditmukan
        cout<<jml<<" Data Ditemukan !!!";
    else
        cout<<" Data Tidak Ditemukan !!!";

    getch();
}

Output :





3. Program Untuk Mencari Bilangan Ganjil dan Bilangan Genap dari Data Angka yang Diinputkan Oleh User


Script Program :

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

using namespace std;

int main()
{
    int bil[100],jml;
    int ganjil=0,genap=0;
    int x[100],y[100];

    cout <<"\t\tPROGRAM MENCARI BILANGAN GANJIL DAN GENAP\n";
    cout <<"\t\t======================================\n\n";
    cout<<"Masukkan jumlah bilangan yang ingin diinput : ";cin>>jml;
    for (int i=0;i<jml;i++){
        cout<<"Bilangan ke-"<<i+1<<" : ";cin>>bil[i]; //input data oleh user
    }
    cout<<endl;
    cout<<"Data yang ada : \n";
    /* Output data yang ada */
    for (int i=0;i<jml;i++){
        cout<<bil[i]<<" ";
        if(bil[i]%2==0){

            x[genap]=i+1; //var untuk mengeluarkan indeks genap
            genap++;      //var untuk menghitung jumlah genap
        }
        else{
            y[ganjil]=i+1;  //var untuk mengeluarkan indeks ganjil
            ganjil++;       //var untuk menghitung jumlah ganjil
        }
    }cout<<endl;

    /* Output Genap */
    cout<<"Jumlah Bilangan Genap  : "<<genap<<endl;
    cout<<"Terletak Di Indeks     : ";
    if(genap==0)
        cout<<"-";                //jika data genap kosong
    else{                           //output indeks ganjil jika ada
        for(int i=0;i<genap;i++){
        cout<<x[i];                 //output indeks genap
            if(i==genap-2)         //pengeluaran kata 'dan' apabila indeks -1 dri akhir
                cout<<" dan ";
            else if(genap!=1 && i!=genap-1)
                cout<<" , ";      //pengeluaran simbol ' , ' jika data bukan 1 dan bukan data -1 dri akhir
        }
    }
    cout<<endl;

    /* Output Ganjil */
    cout<<"\nJumlah Bilangan Ganjil : "<<ganjil<<endl;
    cout<<"Terletak Di Indeks     : ";
    if(ganjil==0)                       //jika data ganjil kosong
        cout<<"-";
    else{                               //output indeks ganjil jika ada
        for(int i=0;i<ganjil;i++){
        cout<<y[i];             //output indeks ganjil
            if(i==ganjil-2)
                cout<<" dan ";              //pengeluaran kata 'dan' apabila indeks -1 dri akhir
            else if(ganjil!=1 && i!=ganjil-1)
                cout<<" , ";      //pengeluaran simbol ' , ' jika data bukan  1 dan bukan data -1 dri akhir
        }
    }
    getch();
    return 0;
}


Output :







Share:

Sabtu, 18 Februari 2017

Praktikum Struktur Data 2

Program Array dan Struct 

Pada C++






Assalamu'alaikum sobat teknik , kali ini saya akan share contoh program c++ array dan struct.
Saya akan membuat 4 program sesuai keterangan dibawah ini  :

1. Program penghapusan data dengan inputan berupa angka yang ingin dihapus oleh user. 
       Ketentuan : 

  •  Semua data yang sesuai dengan inputan user akan terhapus.  
  •  Bonus jika terdapat counter untuk menghitung berapa data yang terhapus. 

          
2. Program untuk melakukan update data. 
       Ketentuan : 

  •  Terdapat dua inputan, yaitu inputan data yang akan diubah dan data baru (data pengganti) 
  •  Semua data yang sesuai dengan inputan user akan diupdate nilainya.  


3. Program untuk melakukan penambahan data. 
     Ketentuan :

  •  Penambahan data dapat dilakukan di mana saja. 
  • Inputan dari user berupa : 
         o  Nilai yang akan ditambahkan
         o  Indeks ke berapa yang dituju
  • Setelah penambahan, maka jumlah data akan bertambah dan posisi data akan bergeser sesuai dengan penambahan yang telah dilakukan.  


4. Buatlah struct untuk data lagu yang berisi tentang judul lagu, penyanyi, tahun produksi, nomor   track dan kode album.  
          Ketentuan :   

  • program ini akan memiliki dua buah struct, yaitu struct lagu dan struct kodeRBT. 
  •  Jumlah data yang diinputkan dinamis (maks. 20 lagu) 

Berikut codingannya , jangan lupa untuk dipahami ya setiap codingannya !!!
Semoga bermanfaat . 


1. Program penghapusan data dengan inputan berupa angka yang ingin dihapus oleh user. 


Script Program :

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

using namespace std;

int main()
{

    int data[8]={2,12,6,12,12,7,6,12}; //isi data
    int hapus,terhapus=0;

    cout<<"\t\t Program Penghapusan Data Dengan Inputan Oleh User"<<endl<<endl;

    for(int n=0;n<=7;n++){ //keluarkan data
        cout<<data[n]<<" ";
    }
    cout<<"\nData yang Akan Dihapus : "; //inputan data yang ingin dihapus
    cin>>hapus;

    for(int n=0;n<=7;n++){
        if(data[n]==hapus) terhapus++;
         //data yang dihapus akan dicatat
    }

    if(terhapus>0){
        cout<<"\nData "<<hapus<<" Berhasil Dihapus!";
    }
    else {
        cout<<"\nData "<<hapus<<" Tidak Berhasil Dihapus !";
    }

    cout<<"\n\nData Sekarang : ";
    for(int n=0;n<=7;n++){

        if(data[n]!=hapus){ //data yang tidak terhapus akan dikluarkan
        cout<<data[n]<<" ";
        }

    }
    cout<<"\nJumlah Data yang Terhapus : "<<terhapus;

    getch();
    return 0;
}


Output:




2. Program untuk melakukan update data


Script Program :

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

using namespace std;

int main()
{

    int data[8]={2,12,6,12,12,7,6,12}; //isi data
    int ubah,pengganti,terubah=0;

    cout<<"\t\t Program Untuk Melakukan Update Data "<<endl<<endl;

    for(int n=0;n<=7;n++){ //keluarkan data
        cout<<data[n]<<" ";
    }
    cout<<"\nMasukkan Data yang Akan Diubah : "; //inputan data yang ingin dihapus
    cin>>ubah;
    cout<<"\nMasukkan Data Baru (Pengganti) : "; //inputan data yang ingin dihapus
    cin>>pengganti;


    for(int n=0;n<=7;n++){
        if(data[n]==ubah) terubah++;
         //data yang dihapus akan dicatat
    }

    if(terubah>0){
        cout<<"\nData "<<ubah<<" Berhasil Diubah!";
    }
    else {
        cout<<"\nData "<<ubah<<" Tidak Ada (Not Found)!";
    }

    cout<<"\n\nData Sekarang : ";
    for(int n=0;n<=7;n++){

        if(data[n]==ubah){ //data yang tidak terhapus akan dikluarkan
        data[n]=pengganti;
        cout<<data[n]<<" ";
        }
        else{
        cout<<data[n]<<" ";
        }
    }
    cout<<"\nJumlah Data yang Terubah : "<<terubah;

    getch();
    return 0;
}


Output :





3. Program untuk melakukan update data


Script Program :

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

using namespace std;

int main()
{

    int data[8]={2,12,6,12,12,7,6,12};
    int data_baru,indeks;

    cout<<"\t\t Program Untuk Melakukan Penambahan Data "<<endl<<endl;

    for(int n=0;n<=7;n++){ \\proses output data lama
        cout<<data[n]<<" ";
    }


    cout<<"\nMasukkan Data yang Akan Ditambahkan : ";
    cin>>data_baru;
    cout<<"\nMasukkan Indeks yang Dituju : ";
    cin>>indeks;

        if(indeks>0 && indeks<=9){   \\proses pengecekkan 
            cout<<"Data "<<data_baru<<" Berhasil Ditambahkan Di Indeks "<<indeks<<" !";
        }
        else{
            cout<<"Data "<<data_baru<<" Tidak Berhasil Ditambahkan Karna Indeks tujuan tidak ada!";
        getch();
        return 0;
        }

    cout<<"\n\nData Sekarang : ";
        
       int batas=indeks-1; 
        for(int n=8;n>=batas;n--){ \\proses memasukkan data baru dan mengeser data
             if(n==batas){
                data[n]=data_baru;
            }
            else {data[n]=data[n-1];
            }

        }

        for(int n=0;n<=8;n++){  \\data baru dikeluarkan
            cout<<data[n]<<" ";
        }


    getch();
    return 0;
}

Output :




4. Program Untuk Melakukan Input Data Lagu Menggunakan Struct


Script Program :


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

using namespace std;

struct lagu{
    char penyanyi[50],judul[50];
    int thn_prod;
    string kode_album,track;

};

struct kodeRBT{
    char telkomsel[10],xl[10],indosat[10];
};
struct musik{
    int id;
    lagu data_lagu;
    kodeRBT rbt;
};

int main()
{
    musik msk[20];
    int jml;


    cout<<"\t\t Program Untuk Melakukan Input Data Lagu "<<endl<<endl;

    cout<<"Masukkan Jumlah Lagu : ";
    cin>>jml;
    cout<<endl;

    for(int i=0;i<jml;i++) \\proses input 
    {
        cout<<"Lagu ke-"<<i+1<<endl;

        cout<<"ID Lagu              : ";cin>>msk[i].id;
        cout<<"Judul Lagu           : ";cin>>msk[i].data_lagu.judul;
        cout<<"Penyanyi             : ";cin>>msk[i].data_lagu.penyanyi;
        cout<<"Tahun Produksi       : ";cin>>msk[i].data_lagu.thn_prod;
        cout<<"Nomor Track          : ";cin>>msk[i].data_lagu.track;
        cout<<"Kode Album           : ";cin>>msk[i].data_lagu.kode_album;
        cout<<"Kode RBT "<<endl;
        cout<<"  1.Telkomsel        : " ;cin>>msk[i].rbt.telkomsel;
        cout<<"  2.Xl               : " ;cin>>msk[i].rbt.xl;
        cout<<"  3.Indosat          : " ;cin>>msk[i].rbt.indosat;



        cout<<endl; 
    }

    for(int i=0;i<jml;i++) \\proses output
     {
        cout<<"Lagu Ke-"<<i+1;
        cout<<"\n---------------------------------------------------------\n";

        cout<<"Id Lagu          : "<<msk[i].id<<endl;
        cout<<"Judul Lagu       : "<<msk[i].data_lagu.judul<<endl;
        cout<<"Penyanyi         : "<<msk[i].data_lagu.penyanyi<<endl;
        cout<<"Tahun Produksi   : "<<msk[i].data_lagu.thn_prod<<endl;
        cout<<"Nomor Track      : "<<msk[i].data_lagu.track<<endl;
        cout<<"Kode Album       : "<<msk[i].data_lagu.kode_album<<endl;
        cout<<"Kode RBT        \n";
        cout<<"  1.Telkomsel    : "<<msk[i].rbt.telkomsel<<endl;
        cout<<"  2.Xl           : " <<msk[i].rbt.xl<<endl;
        cout<<"  3.Indosat      : " <<msk[i].rbt.indosat<<endl;

        cout<<"========================================\n\n";
    }
    getch();

    return 0;
}


Output :





Share:

Minggu, 12 Februari 2017

Pra Praktikum Struktur Data

Program C++ Menghitung Rata-Rata Nilai Mahasiswa 


Assalamu'alaikum sobat teknik , kali ini saya akan share program c++ menghitung rata-rata nilai mahasiswa , dengan jumlah mahasiswa kita inputkan melalui keyboard .
Berikut codingannya , jangan lupa untuk dipahami ya setiap codingannya !!!
Semoga bermanfaat . 



#include <iostream>

using namespace std;

int main()
{
    int b[100];
    char nama[100][100];
    float tugas[100],uts[100],uas[100];
    float rata[100];
    float no;
    string kerapian[20];

    cout<<"\t\tProgram Menghitung Nilai Rata-Rata Mahasiswa"<<endl<<endl;
    cout<<"Masukkan jumlah mahasiswa: ";
    cin>>no;
    cout<<endl;
    
   //input data
    for (int i=1;i<=no;i++){
    cout<<"Masukkan nama mahasiswa : ";
        cin>>nama[i];
        cout<<"Masukkan nilai Tugas: ";
        cin>>tugas[i];
        cout<<"Masukkan nilai UTS  : ";
        cin>>uts[i];
        cout<<"Masukkan nilai UAS  : ";
        cin>>uas[i];
        cout<<"Masukkan nilai Kerapian(baik/buruk): ";
        cin>>kerapian[i];

       if(kerapian[i]=="baik"){
            b[i]=1;
        }
       else if(kerapian[i]=="buruk"){
            b[i]=0;
        }

        rata[i]=b[i]*(0.2*tugas[i]+0.3*uts[i]+0.5*uas[i]);

        cout<<endl;
        }


       
    //menampilkan data
 cout<<"Tampilkan Data"<<endl;
    for (int a=1;a<=no;a++){
        cout<<a<<" "<<"Nama : "<<nama[a]<<" "<<" Nilai Akhir : "<<rata[a]<<endl;
        }

    return 0;
}


Output:



Share:

Bosan Coding

Diberdayakan oleh Blogger.