7.1
#include <iostream>
#define UKURAN 100
int pencarianLinier(int array[], int kunci, int ukuran)
{ int i;
for (i=0; i<=ukuran-1; ++i)
if (array[i] == kunci)
return i;
return -1;
}
void main(){
int a[UKURAN], x, kunciPencarian, elemen;
for (x=0; x<=UKURAN-1; x++) a[x] = 2*x;
cout << "Bilangan yang mau dicari : ";
cin >> kunciPencarian;
elemen = pencarianLinier(a,kunciPencarian,UKURAN);
if (elemen != -1)
cout << kunciPencarian << " ditemukan pada posisi elemen ke " << elemen;
else
cout << kunciPencarian << " tidak ada.";
}
7.2
#include <iostream>
#define UKURAN 15
void cetakHeader(void)
{ int i;
cout<<"\nSubscript : \n";
for (i=0;i<=UKURAN-1;i++) cout << i << " ";
cout << "\n";
for (i=1; i <= 4*UKURAN; i++) cout << "-";
cout << "\n";
}
void cetakBaris(int b[], int low, int mid, int high)
{ int i;
for (i=0; i<=UKURAN-1; i++)
if (i<low || i>high) cout << " ";
else if (i==mid) cout << "*" << b[i];
else cout << b[i] << " ";
cout << "\n";
}
int pencarianBiner(int b[], int kunciPencarian, int low, int high)
{ int i, middle;
while (low <= high) {
middle = (low+high) / 2;
cetakBaris(b, low, middle, high);
if (kunciPencarian == b[middle])
return middle;
else if (kunciPencarian < b[middle])
high = middle - 1;
else low = middle + 1;
}
return -1;
}
main() {
int a[UKURAN], i, kunci, hasil;
for (i=0; i<=UKURAN-1; i++) a[i] = 2*i;
cout << "Masukkan bilangan antara 0-28 : ";
cin >> kunci;
cetakHeader();
hasil=pencarianBiner(a,kunci,0,UKURAN-1);
if (hasil != -1) cout << kunci
<< " ditemukan pada posisi : "<< hasil;
else
cout << kunci << " tidak ditemukan";
return 0;
7.3
#include <iostream>
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 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]);
}
void main() {
int data[10], n;
cout << "Banyak data : ";
cin >> n;
baca_data(data,n);
cetak_data(data,n);
buble_sort(data,n);
cetak_data(data,n);
}
7.4
#include <iostream>
#include <conio.h>
using namespace std;
class Sorting {
friend istream& operator>>(istream& in, Sorting& a);
friend ostream& operator<<(ostream& out, Sorting& a);
public:
void baca_data();
void cetak_data();
void buble_sort();
void insertion_sort();
void selection_sort();
private:
void minimum(int , int, int&);
void tukar (int&, int&);
int data[10], n;
};
istream& operator>>(istream& in, Sorting& a) {
cout << "Banyak data : ";
in >> a.n;
for (int i = 0; i < a.n; i++) {
cout << "Data ke-" << i+1 << " : ";
in >> a.data[i];
}
return in;
}
ostream& operator<<(ostream& out, Sorting& a) {
for (int i = 0; i < a.n; i++)
out << a.data[i] << " ";
out << "\n";
return out;
}
7.5
#include <iostream>
using namespace std;
void baca_data(int A[], int n)
{ int i;
for (i = 0; i < n; i++)
{ cout << "Data ke-%d : ";i++);
cin >> A[i]);
}
}
void cetak_data(const int A[], int n)
{ int i;
for (i = 0; i < n; i++)
cout << "%d ",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);
cetak_data(data,n);
return 0;
}
7.6
#include <iostream>
using namespace std;
typedef int larik[10];
void masuk_data(int A[], int n)
{ int i;
for (i = 0; i < n; i++)
{ cout << "Data ke-%d : ",i+1;
cin >> A[i];
}
}
void cetak_data(const int A[], int n) {
int i;
for (i = 0; i < n; i++)
cout << "%d ",A[i];
cout << "\n";
}
void merge(larik a, int kiri, int tengah, int kanan)
{ int bagianKiri, posTemp, banyakElemen, i;
larik temp;
bagianKiri = tengah - 1;
posTemp = kiri;
banyakElemen = kanan - kiri + 1;
while ((kiri <= bagianKiri) &&
(tengah <= kanan))
if ((a[kiri] <= a[tengah]))
{ temp[posTemp] = a[kiri];
posTemp = posTemp + 1;
kiri = kiri + 1;
} else
{ temp[posTemp] = a[tengah];
posTemp = posTemp + 1;
tengah = tengah + 1;
}
/* kopi bagian kiri */
while ((kiri <= bagianKiri)) {
temp[posTemp] = a[kiri];
posTemp = posTemp + 1;
kiri = kiri + 1;
}
/* kopi bagian kanan */
while ((tengah <= kanan)) {
temp[posTemp] = a[tengah];
posTemp = posTemp + 1;
tengah = tengah + 1;
}
/* kopi kembali ke array asal */
for (i = 1; i <= banyakElemen; i++)
{ a[kanan] = temp[kanan];
kanan = kanan - 1;
}
}
void merge_sort(larik A, int kiri, int kanan)
{ int tengah;
if ((kiri < kanan))
{ tengah = (kiri + kanan) / 2;
merge_sort(A, kiri, tengah);
merge_sort(A, tengah + 1, kanan);
merge(A, kiri, tengah + 1, kanan);
}
}
main() {
int n;
larik data;
cout << "Berapa data array : ";
cin >> n;
masuk_data(data, n);
cetak_data(data, n);
merge_sort(data, 0, n-1);
cetak_data(data, n);
return 0;
}
7.7
#include <iostream>
using namespace std;
void masuk_data(int A[], int n) {
int i;
for (i = 0; i < n; i++) {
cout << "Data ke-%d : ",i+1;
cin >> A[i];
}
}
void cetak_data(const int A[], int n) {
int i;
for (i = 0; i < n; i++)
cout << "%d ",A[i];
cout << "\n";
}
void tukar (int *a, int *b)
{ int temp;
temp = *a;
*a = *b;
*b = temp;
}
void quick_sort(int data[], int L, int R) {
int i, j, p;
p = data[(L+R) / 2];
i = L;
j = R;
while (i<=j) {
while (data[i] < p) i++;
while (data[j] > p) j--;
if (i<=j)
{ tukar(&data[i], &data[j]);
i++;
j--;
}
}
if (L < j) quick_sort(data,L,j);
if (i < R) quick_sort(data,i,R);
}
void main() {
int data[10], n;
cout << "Banyak data : ");
cin >> n);
masuk_data(data,n);
cetak_data(data,n);
quick_sort(data,0,n-1);
cetak_data(data,n);
}
latihan bab 8
1.
#include <iostream>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main(int argc, char** argv) {
int banyakData, cariData, posisi=0;
bool ketemu = false;
cout << "Banyak data : ";
cin >> banyakData;
int data[banyakData];
for(int ulang=0; ulang<banyakData; ulang++)
{
cout <<"Berikan Data ke["<<ulang<<"] : ";
cin >> data[ulang];
}
cout <<"Data yang akan di cari posisinya: ";
cin >> cariData;
for(int ulang=0; ulang<banyakData; ulang++)
{
if(cariData == data[ulang])
{
posisi = ulang;
ketemu = true;
break;
}
}
if(ketemu)
{
cout<<"Data "<<cariData<<" ditemukan di posisi : "<<posisi<<endl;
cout<<"Terimakasih"<<endl;
}
else
{
cout<<"Data yang anda berikan"<<endl;
cout<<"Tidak tertera pada data Array"<<endl;
}
return 0;
}
2.
#include <iostream>
#include <stdio.h>
#include <conio.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char** argv) {
{
int A[10],i,j,k,tkr,top,bottom,middle,tm;
for(i=0; i<10; i++)
{
printf("Data ke-%d : ", i+1);
scanf("%d", &A[i]);
}
printf("Masukkan data yang akan dicari : ");
scanf("%d",&k);
for(i=0; i<10; i++)
{
for(j=i+1; j<10; j++)
{
if(A[i]>A[j])
{
tkr=A[i];
A[i]=A[j];
A[j]=tkr;
}
}
}
tm=0;
top=9;
bottom=0;
while(top>=bottom)
{
middle=(top+bottom)/2;
if(A[middle]==k)
{
tm++;
}
if(A[middle]<k)
{
bottom=middle+1;
}
else
{
top=middle-1;
}
}
if(tm>0)
{
printf("Data %d yang dicari ada dalam array\n",k);
}
else
{
printf("Data tidak diketemukan dalam array\n");
}
}
return 0;
}
2.b
#include <iostream>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main(int argc, char** argv) {
int A[15],i,j,k,tkr,top,bottom,middle,tm;
for(i=0; i<15; i++)
{
printf("Data ke-%d : ", i+1);
scanf("%d", &A[i]);
}
printf("Masukkan data yang akan dicari : ");
scanf("%d",&k);
for(i=0; i<15; i++)
{
for(j=i+1; j<15; j++)
{
if(A[i]>A[j])
{
tkr=A[i];
A[i]=A[j];
A[j]=tkr;
}
}
}
tm=0;
top=9;
bottom=0;
while(top>=bottom)
{
middle=(top+bottom)/2;
if(A[middle]==k)
{
tm++;
}
if(A[middle]<k)
{
bottom=middle+1;
}
else
{
top=middle-1;
}
}
if(tm>0)
{
printf("Data %d yang dicari ada dalam array\n",k);
}
else if(tm=71)
{
printf("Data tidak diketemukan dalam array\n");
} else
{
printf("Data tidak diketemukan dalam array\n");
}
return 0;
}
3.
#include <iostream>
#include <conio.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main()
{ int a,k,c,d,g;
k=5;
int b[5];
cout<<"Bubble sort adalah salah satu metode sorting atau
mengurutkan dari data terkecil ke data terbesar
"<<endl<<endl;
for(a=0;a<k;a++)
{
cout<<"Masukkan nilai "<<a+1<<" : ";
cin>>b[a];
}
for(a=0;a<k-1;a++)
{
for(d=a+1;d<k;d++)
{
c=a;
if(b[c]<b[d])
{
c=d;
}
g=b[c];
b[c]=b[a];
b[a]=g;
}
}
cout<<"\n setelah diurutkan akan menjadi : \n";
for(a=0;a<k;a++)
{
cout<<b[a]<<" \n";
}
return 0;
}
4.
#include <iostream>
#include <conio.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main()
{
int data [50];
int a,b;
int max,min;
// masukan untuk batas
printf("Banyak Bilangan: ");scanf ("%d",&a);
//pengulangan untuk memasukkan data ke dalam array
for (b=1;b<=a;b++)
{
printf("\nbilangan ke-%d: ",b);scanf("%d",&data [b]);
}
//mencari nilai terbesar dan terkecil di array dengan looping
max=data[1];
min=data[1];
for (b=1;b<=a;b++)
{
if (data[b]>=max)
{
max=data[b];
}
else if (data[b]<=min)
{
min=data[b];
}
}
printf("\n\nnilai tertinggi\t:%d", max);
printf("\n\nnilai terkecil\t:%d", min);
getch();
return 0;
}
5.
#include <iostream>
#include <iomanip>
#include <conio.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
template <class T>
void s_sort(T a[],int n)
{
int i,j,t;
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(a[j]<a[i])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
int main()
{
int a[100],i,n;
cout<<"Masukan jumlah elemen : ";
cin>>n;
cout<<"Masukan elemen - elemen tersebut :";
for(i=0;i<n;i++)
{
cout<<"\n Enter : ";
cin>>a[i];
}
s_sort(a,n);
cout<<"Setelah di sorting :";
for(i=0;i<n;i++)
{
cout<<a[i]<<" , ";
}
return 0;
}
6.
#include <iostream>
#include <conio.h>
using namespace std ;
int data[7] = {0,5,2,4,6,1,3};
int data2[7];
int n;
void tukar(int a, int b)
{
int t;
t = data[b];
data[b] = data[a];
data[a] = t;
}
void insertion_sort()
{
int temp,i,j;
for(i=1;i<=6;i++)
{
temp = data[i];
j = i -1;
while(data[j]>temp && j>=0)
{
data[j+1] = data[j];
j--;
}
data[j+1] = temp;
}
}
int main()
{
cout<<"\t\t\t===PROGRAM INSERTION SORT===\n\n"<<endl;
//Input Data
for(int i=1;i<=6;i++)
{
cout<<"Data ke "<<i<<" : "<<data[i]<<endl;
data2[i]=data[i];
}
insertion_sort();
cout<<"\n\n";
//tampilkan data
cout<<"Data Setelah di Sort : ";
for(int i=1; i<=6; i++)
{
cout<<" "<<data[i];
}
cout<<"\n\nSorting Selesai";
getch();
}
7.
#include <iostream>
using namespace std;
void merge(int low, int mid, int up);
void mergeSort(int low, int up);
int a[8] = {32 , 12 , 5 , 18 , 31 , 4 , 25 , 7 };
int main()
{
int jumlahBil,i;
for(int i=0; i<8;i++)
{
cout<<"Bilangan ke- ["<< i << "] "<<a[i]<<endl;
}
mergeSort(1,8);
for(i=0;i<8;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
void merge(int low, int mid, int up)
{
int h, i,j,k;
int b[50];
h = low;
i = low;
j = mid+1;
while((h<=mid)&&(j<=up))
{
if(a[h] < a[j])
{
b[i]=a[h];
h++;
}
else
{
b[i]=a[j];
j++;
}
i++;
}
if(h>mid)
{
for(k=j;k<=up;k++){
b[i]=a[k];
i++;
}
}
else
{
for(k=h;k<=mid;k++)
{
b[i]=a[k];
i++;
}
}
for(k=low;k<=up;k++) a[k]=b[k];
}
void mergeSort(int low, int up)
{
int mid;
if(low<up)
{
mid=(low+up)/2;
mergeSort(low,mid);
mergeSort(mid+1,up);
merge(low,mid,up);
}
}
8.
#include <iostream>
using namespace std;
void merge(int low, int mid, int up);
void mergeSort(int low, int up);
int a[9] = {8 , 1 , 4 , 9 , 7 , 3 , 5 , 2 , 7 };
int main()
{
int jumlahBil,i;
for(int i=0; i<9;i++)
{
cout<<"Bilangan ke- ["<< i + 1 << "] "<<a[i]<<endl;
}
mergeSort(1,9);
for(i=0;i<9;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
void merge(int low, int mid, int up)
{
int h, i,j,k;
int b[50];
h = low;
i = low;
j = mid+1;
while((h<=mid)&&(j<=up))
{
if(a[h] < a[j])
{
b[i]=a[h];
h++;
}
else
{
b[i]=a[j];
j++;
}
i++;
}
if(h>mid)
{
for(k=j;k<=up;k++){
b[i]=a[k];
i++;
}
}
else
{
for(k=h;k<=mid;k++)
{
b[i]=a[k];
i++;
}
}
for(k=low;k<=up;k++) a[k]=b[k];
}
void mergeSort(int low, int up)
{
int mid;
if(low<up)
{
mid=(low+up)/2;
mergeSort(low,mid);
mergeSort(mid+1,up);
merge(low,mid,up);
}
}
9.
#include <stdio.h>
#define MAX 10
#define MaxStack 11
int Data[MAX];
// Prosedur menukar data
void Tukar (int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
// Prosedur pengurutan metode Quick Sort
void QuickSortNonRekursif()
{
struct tump {
int Kiri;
int Kanan;
}
Tumpukan[MaxStack];
int i, j, L, R, x, ujung = 1; Tumpukan[1].Kiri = 0;
Tumpukan[1].Kanan = MAX-1;
while (ujung!=0){
L = Tumpukan[ujung].Kiri;
R = Tumpukan[ujung].Kanan;
ujung--;
while(R > L){
i = L;
j = R;
x = Data[(L+R)/2];
while(i <= j){
while(Data[i] < x)
i++;
while(x < Data[j])
j--;
if(i <= j){
Tukar(&Data[i], &Data[j]);
i++;
j--;
}
}
if(L < i){
ujung++; Tumpukan[ujung].Kiri = i;
Tumpukan[ujung].Kanan = R;
}
R = j;
}
}
}
int main()
{
int i;
//Memasukkan data yang belum terurut
printf("DATA SEBELUM TERURUT : \n");
for(i=1; i<MAX; i++)
{
printf("Data ke %d : ", i);
scanf ("%d", &Data[i]);
}
QuickSortNonRekursif();
//Data setelah terurut
printf("\nDATA SETELAH TERURUT");
for(i=1; i<MAX; i++)
{
printf("\nData ke %d : %d ", i, Data[i]);
}
//scanf("%d");
return(0);
}
10.
#include <stdio.h>
#define MAX 10
#define MaxStack 11
int Data[MAX];
// Prosedur menukar data
void Tukar (int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
// Prosedur pengurutan metode Quick Sort
void QuickSortNonRekursif()
{
struct tump {
int Kiri;
int Kanan;
}
Tumpukan[MaxStack];
int i, j, L, R, x, ujung = 1; Tumpukan[1].Kiri = 0;
Tumpukan[1].Kanan = MAX-1;
while (ujung!=0){
L = Tumpukan[ujung].Kiri;
R = Tumpukan[ujung].Kanan;
ujung--;
while(R > L){
i = L;
j = R;
x = Data[(L+R)/2];
while(i <= j){
while(Data[i] < x)
i++;
while(x < Data[j])
j--;
if(i <= j){
Tukar(&Data[i], &Data[j]);
i++;
j--;
}
}
if(L < i){
ujung++; Tumpukan[ujung].Kiri = i;
Tumpukan[ujung].Kanan = R;
}
R = j;
}
}
}
int main()
{
int i;
//Memasukkan data yang belum terurut
printf("DATA SEBELUM TERURUT : \n");
for(i=1; i<MAX; i++)
{
printf("Data ke %d : ", i);
scanf ("%d", &Data[i]);
}
QuickSortNonRekursif();
//Data setelah terurut
printf("\nDATA SETELAH TERURUT");
for(i=1; i<MAX; i++)
{
printf("\nData ke %d : %d ", i, Data[i]);
}
//scanf("%d");
return(0);
}
Tidak ada komentar:
Posting Komentar