Minggu, 15 Mei 2016

Selection Sort

Kali ini saya akan membahas pengertian selection sort beserta contoh programnya,Let's Check

         Selection Sort merupakan salah satu algoritma pengurutan yang sederhana. Ide dasarnya adalah melakukan beberapa kali pass untuk melakukan penyeleksian elemen struktur data. Untuk sorting ascending (menaik), elemen yang paling kecil di antara elemen-elemen yang belum urut, disimpan indeksnya, kemudian dilakukan pertukaran nilai elemen dengan indeks yang disimpan tersebut dengan elemen yang paling depan yang belum urut. Sebaliknya, untuk sorting descending (menurun), elemen yang paling besar yang disimpan indeksnya kemudian ditukar.
         Selection Sort diakui karena kesederhanaan algoritmanya dan performanya lebih bagus daripada algoritma lain yang lebih rumit dalam situasi tertentu. Algoritma ini bekerja sebagai berikut:

1. Mencari nilai minimum (jika ascending) atau maksimum (jika descending) dalam sebuah    list.
2. Menukarkan nilai ini dengan elemen pertama list
3. Mengulangi langkah di atas untuk sisa list dengan dimulai pada posisi kedua
4. Secara efisien kita membagi list menjadi dua bagian yaitu bagian yang sudah diurutkan, yang didapat       dengan membangun dari kiri ke kanan dan dilakukan pada saat awal, dan bagian list yang elemennya akan diurutkan.

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <iomanip.h>
main()
{
int x[5];
int i;
int temp;
int minindex;
int j;

clrscr();
cout<<" >> Welcome To The Program Selection Sort << \n" <<endl;
cout<<"masukkan nilai x :\n";
for(i=0; i<5; i++)
{
cout<<"x["<<i<<"] = ";cin>>x[i];
}
cout<<"\n data sebelum di sort :";
for(i=0; i<5;i++)
{
cout<<setw(4)<<x[i];
}
for(i=0; i<5-1; i++) //perulangan iterasi
{
minindex=i;
for(j=i+1; j<5; j++) //perulangan membandingkan data
{
if(x[minindex]>x[j])
{
minindex=j;
}
}
temp=x[i];
x[i]=x[minindex];
x[minindex]=temp;
}
cout<<"\n\nData setelah di sort :";
for(i=0; i<5; i++)
{
cout<<setw(4)<<x[i];
}
getch();
}


5. Hasil Codingnya :
     

itulah salah satu contoh program Selection sort,Semoga Bermanfaat :)

Mengurutkan deret bilangan dengan selection sort

#include <iostream>
using namespace std;
void baca_data(int A[], int n)
{ int i;
for (i = 0; i < n; i++)
{ cout << "Data ke-: "<<i+1<<"= ";
cin >> A[i];
}
}
void cetak_data(const int A[], int n)
{ int i;
for (i = 0; i < n; i++)
cout << A[i];
cout << "\n";
}
void tukar (int *a, int *b)
{ int temp;
temp = *a;
*a = *b;
*b = temp;
}
void minimum(int A[], int dari, int n, int * tempat)
{ int i, min;
min = A[dari];
*tempat = dari;
for (i = dari+1; i<n; i++)
if (A[i] < min)
{ min = A[i];
*tempat = i;
}
}

void selection_sort(int A[], int n)
{ int i, t;
for (i = 0; i<n; i++)
{ minimum(A, i, n, &t);
tukar(&A[i], &A[t]);
}
}
main() {
int data[10], n;
cout << "Banyak data : ";
cin >> n;
baca_data(data,n);
cetak_data(data,n);
selection_sort(data,n);
cout<<endl;
cout<<"setelah diurutkan"<<endl;
cetak_data(data,n);
return 0;
}

Mencari nilaipada deret bilangandengan metode pencarian biner, sehingga menghasilkan indeks elemen array tempat ditemukannya nilai tersebut.

#include <iostream>
#define UKURAN 15
using namespace std;




void cetakBaris(int b[], int rendah, int mid, int tinggi)
{ int i;
for (i=0; i<=UKURAN-1; i++)
if (i<rendah || i>tinggi) cout << "  ";
else if (i==mid) cout << "*" << b[i]<<" ";
else cout << b[i] << " ";
cout << "\n";
}



int pencarianBiner(int b[], int kunciPencarian, int rendah, int tinggi )
{ int i, middle;
while (rendah <= tinggi) {
middle = (rendah+tinggi) / 2;
cetakBaris(b, rendah, middle, tinggi);
if (kunciPencarian == b[middle])
return middle;
else if (kunciPencarian < b[middle])
tinggi = middle - 1;
else rendah = middle + 1;
}
return -1;
}



main() {
int a[UKURAN]={1, 2, 8, 25, 30, 49, 50, 55, 60, 61, 68, 70, 72, 84,
90}, i, kunci, hasil;
for (i=0; i<=UKURAN-1; i++){
cout<<a[i]<<" ";   
   
}

cout<<endl<<endl;


cout << "Masukkan bilangan yg ingin dicari index nya : ";
cin >> kunci;


hasil=pencarianBiner(a,kunci,0,UKURAN-1);
if (hasil != -1) cout << kunci

<< " ditemukan pada index : "<< hasil;
else
cout << kunci << " tidak ditemukan";
return 0;
}

Mengurutkan deret bilangan dengan buble sort

#include <iostream>
using namespace std;

// " dalam program ini ada 4 prosedur yg digunakan "//

//prosedur pertama ini digunakan untuk input data
//prosedur ini memiliki 2 parameter yaitu " int A[], int n "
//nilai untuk prameter untuk int n didapat dari inputan dalam fungsi main
//nilai untuk parameter int A[] didapat dari deklarasi dalam fungsi main
// parameter A[] sebagai varibale untuk menampung inputan dan n untuk bts perulngan
void baca_data(int A[], int n) {
int i;
for (i = 0; i < n; i++)
{ cout << "Data ke-" << i+1 << " : ";
cin >> A[i];
}
}

//prosedur kedua ini digunakan untuk menampilkan data yg telah di input tadi
//prosedur ini memiliki 2 parameter yaitu " int A[], int n "
//nilai untuk prameter untuk int n didapat dari inputan dalam fungsi main
//nilai untuk parameter int A[] didapat dari deklarasi dalam fungsi main
void cetak_data( int A[], int n) {
int i;
for (i = 0; i < n; i++)
cout << A[i] << " ";
cout << "\n";
}

//prosedur ketiga ini digunakan untuk penukaran nilai a <--> b
//prosedur ini memiliki 2 parameter int *a dan int *b
//nilai prameter  int *a dan int *b ini didapat ketika prosdur ini dipanggil
//--- ke prosedur empat
//parameter int *a dan int *b digunkan sebagai variable untuk terjadi tempt penukaran
void tukar (int *a, int *b)
{ int temp;
temp = *a;
*a = *b;
*b = temp;
}

//prosedur keempat ini merupakan proses untuk mengurutkan nilai / angka yg di inputkan
//prosedur ini memiliki 2 parameter yaitu " int x[], int n "
//nilai untuk prameter untuk int n didapat dari inputan dalam fungsi main
//nilai untuk parameter int x[] didapat dari deklarasi dalam fungsi main
//dalam prosedur ini dia memangil prosedur ketiga untuk mebntu proses pengurutn data secara buble sorting
void buble_sort (int x[], int n)
{ int i, j;
for (i = 0; i<n-1; i++)
for (j = i+1; j<n; j++)
if (x[i] > x[j])
tukar(&x[i], &x[j]);
}


 main() {
//  nilai variable " nilai[100], n " disni digunakan untuk mengisi nilai parameter dalm prosedur    
int nilai[100], n;
cout << "Banyak data : ";
cin >> n;
baca_data(nilai,n);    //  pemgilan prosedur
cout<<endl;
cout<<"data awal"<<endl;
cetak_data(nilai,n);   //  pemgilan prosedur
buble_sort(nilai,n);   //  pemgilan prosedur
cout<<"data stelah diurutkan"<<endl;
cetak_data(nilai,n);   //  pemgilan prosedur
}

Kamis, 12 Mei 2016

[DIKTAT 7] Program mencari panjang suatu nama

Assalamualaikum.
Pada minggu ke 7 setelah UTS ini kami mengerjakan kasus" c++ diantaranya kasus modul PPT, Diktat, Rencana kuliah dll. di sini saya akan membahas tentang program dari Diktat bab 7 kasus 2 yang dimana program ini untuk mencari rata-rata dari n bilangan bulat dengan menggunakan array. 

#include <iostream>
using namespace std;
void nama(){
    string kata;
   
    cout<<"mencari panjang nama=";cin>>kata;
    cout<<"berisi berapa kata?="<<kata.size();
   
    }

int main(){
    nama();
    return 0;
}

[DIKTAT 7] Kasus 3

Assalamualaikum.
Pada minggu ke 7 setelah UTS ini kami mengerjakan kasus" c++ diantaranya kasus modul PPT, Diktat, Rencana kuliah dll. di sini saya akan membahas tentang program dari Diktat bab 7 kasus 3 yang dimana program ini untuk mencari rata-rata dari n bilangan bulat dengan menggunakan array. 

#include <stdio.h> //file header pemanggil gets/putchar
#include <ctype.h> //file header pemanggil isupper/islower
#include <iostream>
#include <conio.h> //file header pemanggil getche
using namespace std;
void nama()
{
  int i=0; //inisialisasi i untuk variabel nama
  char nama[100]; //variabel nama dengan maksimum 100 karakter
  char c; //variabel hasil dari isupper/islower variabel nama
    int a=0; //inisialisasi a=0 untuk variabel nama
  char entri[100]; //variabel entri maksimum 100 karakter
  char out;
  cout<<"Masukkan Nama [HURUF KAPITAL] = "; gets(nama); //proses entri data
  getche(); //menghentikan program aplikasi, tekan enter untuk meneruskan
  cout<<"\nNamamu versi huruf kecil = "; //memulai output
  while (nama[i]) //awal perulangan while untuk variabel nama
   {
   c=nama[i]; //menyamakan variabel c dan nama[i]
   if (isupper(c)) c=tolower(c); //proses percabangan dari besar ke kecil
   putchar (c); //output dari huruf besar menjadi huruf kecil
   i++; //perulangan berupa penambahan nilai
}cout<<endl;
   //variabel hasil dari islower/isupper variabel entri
  cout<<"Masukkan Frasa Huruf Kecil = "; gets(entri);
  getche(); //program distop sementara, tekan enter untuk melanjutkan
  cout<<"\nHasil Inputan Frasa Huruf Besar = "; //memulai output
  while (entri[a]) //awal perulangan while variabel entri
 {
 out=entri[a]; //menyamakan variabel out dengan entri[a]
 if (islower(out)) out=toupper(out); //percabangan dari kecil ke besar
 putchar (out); //output huruf besar dari huruf kecil
 a++; //penambahan nilai variabel a=0
}
}
   int main(){
nama();
   }

[DIKTAT 7] Pogram penggaungan kata

Assalamualaikum.
Pada minggu ke 7 setelah UTS ini kami mengerjakan kasus" c++ diantaranya kasus modul PPT, Diktat, Rencana kuliah dll. di sini saya akan membahas tentang program dari Diktat bab 7 Workshop 1 yang dimana program ini untuk menggabungkan kata. 

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <windows.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void penggabungan(string k1[20],string k2[20]){
    string k3 [20];
    for(int i=1;i<=1;i++){
        cout<<"Masukan kata pertama =";cin>>k1[i];
        k3[i]=k1[i];
        for(int j=1;j<=1;j++){
        cout<<"Masukan kata kedua =";cin>>k2[i,j];
        cout<<"Masukan kata pertama =";cin>>k1[i,j];
        }
        system("cls");
        cout<<"Gabungan Kata"<<endl;
        cout<<"Hasil = "<<k3[i]<<" "<<k2[i]<<" "<<k1[i];
    }
}
int main(int argc, char** argv) {
    string k1 [20];
    string k2 [20];
    penggabungan(k1,k2);
    return 0;
}

[DIKTAT 7] Menghitung Kata Dalam Sebuah Kalimat

Assalamualaikum.
Pada minggu ke 7 setelah UTS ini kami mengerjakan kasus" c++ diantaranya kasus modul PPT, Diktat, Rencana kuliah dll. di sini saya akan membahas tentang program dari Diktat bab 7 workshop 3 yang dimana program ini untuk Menghitung Kata Dalam Sebuah Kalimat. 

#include<iostream>
#include<ctype.h>
using namespace std;
main()
{
    cout<<"\t Program Menghitung Kata Dalam Sebuah Kalimat"<<endl;
    cout<<"\t\t=============================== "<<endl;
    cout<<"\n";

    char kalimat[100];
    int i, spasi=0;
    cout << "Masukan Sebuah Kalimat : ";
    cin.getline(kalimat, sizeof(kalimat));

    for(i=0; kalimat[i]; i++)
    {

        if(isspace (kalimat[i]) || ispunct (kalimat[i]))
        {
            spasi++;

        }
    }

    cout << "Jumlah Kata = " << spasi +1 << "\n\n";
    cout << "Kata yang anda masukan adalah :   \n";
    cout << "\n";

    for(i=0; kalimat[i]; i++)
    {

        if(isspace (kalimat[i]) || ispunct (kalimat[i]))
        {
            spasi++;
            cout << "\n";
   
        }
        cout << kalimat[i];
    }
    cout << "\n";
    cout << "\n";
        cout << "Terima kasih sudah memcoba program ini"<<endl;

}

Jumat, 06 Mei 2016

Refleksi minggu ke-7

1. Apakah yang anda peroleh dari perkuliahan minggu ini ?
    jawab : saya telah memperoleh materi array 1 dimensi
2. Apa yang tidak saya pahami pada perkuliahan minggu ini ?
    jawab : uang tidak saya pahami adalah masih kurang paham mengenai array
3. Bagaimana usaha saya menyelesaiakan masalah tersebut ?
    jawab : usaha saya adalah bertanya pada temen sekelompok dan atau teman dari kelompok lain
4. Timing ?
     waktu belajar :
     algoritma dan pemrograman minggu ke-7 :
     450 menit termasuk belajar codingan
     kekurangan waktu algoritma di luar pembelajaran yang lain :
     5 menit
5.  sudahkah saya mengcopy matei ?
     saya sudah mengcopy materi minggu ke-7

Senin, 02 Mei 2016

Menghitung rerata nilai dengan input minimal 10 mahasiswa pratikum minggu ke-6

    #include<iostream>
    #include<conio.h>
     using namespace std;
   int main(int argc, char** argv) {
    float input,min,total,rata,t,batas;

    cout<<"PROGRAM MENGHITUNG NILAI RATA-RATA, MINIMUM\n";
    cout<<"*******************************************************\n\n";

    cout<<"Masukkan Jumlah Siswa : ";   cin>>batas;
    for(t=1;t<=batas;t++){
    cout<<"Masukan Nilai Siswa "<<t<<" : ";cin>>input;
    total=total+input;

    if(input<min||t==1){
    min=input;
    }
    }
    rata=total/batas;
    cout<<"\n________________________";
    cout<<"\nNilai Rata – Rata : "<<rata;
    cout<<"\nNilai Minimum\t  : "<<min;
    getch();
    }

Mengkonversi inputan huruf besar menjadi huruf kecil pratikum minggu ke-6

#include <iostream>
using namespace std;
int main(int argc, char** argv) {
    system ("title mengubah huruf besar menjadi huruf kecil");
    system ("color b");
 
    char Arizona,huruf=0;
    do
    {
    system ("cls");
    cout<<"Masukkan huruf besar broww : ";
    cin>>huruf;
    if(huruf>='A')
    if(huruf<='Z')
    {
    huruf=huruf-'A'+'a';
    cout<<"\n Anda telah memasukan huruf besar dari "<<huruf<<'\n';
    }
    else
    {
        system ("color c");
    cout<<"\nMasukkan huruf besar brow,bukan huruf kecil ";
    cout<<"\ngunakan tombol shift....!!!\n";
    }
    system ("pause");
    system ("color e");
    system ("cls");
    cout<<"\n Apakah anda ingin mengulangi lagi....??? [Y/T] : ";
    cin>>Arizona;
    }
 
    while(Arizona=='y'||Arizona=='Y');
    cout<<"\n By : Ari Zona Akbar ";
    system ("pause");
                  return 0;
                  }

Membalik string yang diinputkan praktikum minggu ke-6

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

using namespace std;

int main(int argc, char** argv) {
    char kata[50];
    cout<<"Masukkan Kata : ";
    cin.getline(kata,sizeof(kata));
  
    int pjgstring;
    pjgstring=strlen(kata);
  
    cout<<endl<<"Setelah Dibalik : \b";   
    for(int i=pjgstring;i>=0;i--){
            cout<<kata[i];
            }
          
    cout<<endl<<endl;
     system("PAUSE");
    return EXIT_SUCCESS;
}

menghapus elemen array praktikum minggu ke-6

#include <cstdlib>
#include <iostream>
#define maks5

using namespace std;

class Array1D{
 friend ostream& operator<<(ostream&, const Array1D&);
 friend istream& operator>>(istream&, Array1D&);
public:
 Array1D();
 void cetak();
 void geser_kiri();
 void geser_kanan();
 void hapus_elemen();

private:
 char A[5];
 int posisi;
};

Array1D::Array1D(){
 for(int i=0;i<5;i++)
 A[i]='O';
}

void Array1D::cetak(){
 for(int i=0;i<5;i++)
 cout<<A[i]<<" ";
}

ostream& operator<<(ostream& out, const Array1D& x){
 for(int i=0;i<5;i++)
 out<<x.A[i]<<" ";
 out<<endl;
 return out;
}

istream& operator>>(istream& in, Array1D& x){
 int posisi;
 for (int posisi=1; posisi<=5; posisi++){
 cout<<"masukkan nilai array posisi ke- : ";
 in>>x.posisi;
 if(posisi >= 0 && posisi <= 5){cout<<"masukkan elemen arraynya :";
 in>>x.A[posisi-1];
 }
 }
 return in;
}

void Array1D::geser_kanan(){
 int n=5;
 int temp=A[n-1];
 for(int i=n-1;i>=0;i--)
 A[i+1]=A[i];
 A[0]=temp;
}

void Array1D::geser_kiri(){
 int n=5;
 int temp=A[0];
 for(int i=0;i<n;i++)
 A[i]=A[i+1];
 A[n-1]=temp;
}

void Array1D::hapus_elemen(){
 int posisi;
 cout<<"Pilih indeks berapa yg akan di hapus : ";
 cin>>posisi;
 if(posisi>0 && posisi<=5)
 A[posisi-1]='O';
 else cout<<"indeks yg anda masuukan salah karena indek hanya terdiri dari 1 - 5\n";
}

int main(int argc, char *argv[])
{
 Array1D x;
 cout<<"Array masih kosong : "<<x;
 cin>>x;

 cout<<"Isi Array saat ini : "<<x;
 x.geser_kiri();
 cout<<"Isi Array setelah di geser kiri : "<<x;
 x.geser_kanan();
 cout<<"Isi Array setelah di geser kanan : "<<x;
 cout<<"Urutan elemen pada indeksnya saat ini : "<<x;
 x.hapus_elemen();
 cout<<"Setelah dihapus menjadi : "<<x;

 system("PAUSE");
   return EXIT_SUCCESS;
}

Menggeser ke kanan elemen array pratikum minggu ke-6

#include <cstdlib>
#include <iostream>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */


using namespace std;
class array{
 friend ostream& operator<<(ostream&, const array&);
 friend istream& operator>>(istream&, array&);
public:
 array();
 void cetak();
 void geser_kanan();
private:
 char a[5];
 int posisi;
};

array::array(){
 for(int i=0;i<5;i++)
 a[i]='0';
}
void array::cetak(){
 for(int i=0;i<5;i++)
 cout<<a[i]<<" ";
}
ostream& operator<<(ostream& out, const array& keluar){
 for(int i=0;i<5;i++)
 out<<keluar.a[i]<<" ";
 out<<endl;
 return out;
}
istream& operator>>(istream& in, array& masuk){
 int posisi;
 for (int posisi=1; posisi<=5; posisi++){
 cout<<"Masukkan Nilai Array Posisi Ke-"<<posisi<<"= ";
 //in>>masuk.posisi;
 if(posisi >= 0 && posisi <= 5){
 //cout<<"masukkan elemen arraynya :";
 in>>masuk.a[posisi-1];
 }
 }
 return in;
}
void array::geser_kanan(){
 int n=5;
 int temp=a[n-1];
 for(int i=n-1;i>=0;i--)
 a[i+1]=a[i];
 a[0]=temp;
}
int main(int argc, char** argv) {
 array X;
 cout<<"Program Array Geser Kanan\n\n";
 cout<<"Array Masih Kosong : "<<X;
 cin>>X;
 cout<<"Isi Array Saat Ini : "<<X;
 X.geser_kanan();
 cout<<"Isi Array Setelah Digeser Kanan : "<<X<<endl;
 cout<<endl;
 system("PAUSE");
 return EXIT_SUCCESS;
}

Menggeser ke kiri elemen array pratikum minggu ke-6

#include <cstdlib>
#include <iostream>
#define maks5
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;

class array{
friend ostream& operator<<(ostream&, const array&);
friend istream& operator>>(istream&, array&);
public:
array();
void cetak();
void geser_kiri();

private:
char a[5];
int posisi;
};

array::array(){
for(int i=0;i<5;i++)
a[i]='O';
}

void array::cetak(){
for(int i=0;i<5;i++)
cout<<a[i]<<" ";
}

ostream& operator<<(ostream& out, const array& keluar){
for(int i=0;i<5;i++)
out<<keluar.a[i]<<" ";
out<<endl;
return out;
}

istream& operator>>(istream& in, array& masuk){
int posisi;
for (int posisi=1; posisi<=5; posisi++){
cout<<"masukkan nilai array posisi ke-"<<posisi<<"= ";

if(posisi >= 0 && posisi <= 5){
in>>masuk.a[posisi-1];
}
}
return in;
}

void array::geser_kiri(){
int n=5;
int temp=a[0];
for(int i=0;i<n;i++)
a[i]=a[i+1];
a[n-1]=temp;
}

int main(int argc, char** argv){
array X;
cout<<"Array masih kosong : "<<X;
cin>>X;

cout<<endl<<"<Isi Array saat ini : "<<X;
X.geser_kiri();
cout<<"Isi Array setelah di geser kiri : "<<X;

system("PAUSE");
return EXIT_SUCCESS;
}
Diberdayakan oleh Blogger.

search

BTemplates.com

Blogroll

Pages - Menu

Pages - Menu