Vous êtes sur la page 1sur 8

1401164882 Nanda Ayu Wiyanti

Soal Algoritma dan MOOP


Pertemuan 25-26
1. Tulislah program dengan fungsi template untuk mencari dan menampilkan data
terbesar dan data terkecil dari sekelompok data yang diinputkan oleh user.
2. Tulislah program dengan fungsi template untuk membalik urutan data dari berbagai tipe
data yang diinputkan oleh user.
3. Tulislah program dengan class template untuk merepresentasikan obyek matrix yang
mempunyai operasi tambah, kurang kali dan transpose matrix.
4.

Dengan menggunakan file master barang (msbrg.dat) dan file transaksi penjualan
(trjual.dat) akan ditampilkan informasi penjualan barang. Kedua file berupa file binary.
Setiap record barang terdiri dari field kode barang (5 karakter), nama barang (30 karakter),
kuantitas (int), dan harga jual (float). Setiap record penjualan terdiri dari field no faktur (7
karakter), tgl faktur (10 karakter), kode pelanggan (5 karakter), kode barang (5 karakter),
jumlah unit (int), dan harga unit (float). Tgl faktur disimpan dengan format yyyy-mm-dd,
misalnya tanggal 31 Januari 2005 disimpan dalam bentuk string 2005-01-31. Kedua file
dalam keadaan acak.
1
2
3
4
5

1
2
3
4
1234567890123456789012345678901234567890
INFORMASI PENJUALAN BARANG
Dari
tgl ? 99-99-9999
Sampai tgl ? 99-99-9999

Tampilkan informasi barang demi barang. Nama barang diambil dari file master barang. Tampilkan
total kuantitas dan total nilai untuk setiap barang yang terjual.

1
2
3
4
5
6
7

1
2
3
4
5
123456789012345678901234567890123456789012345678901234
INFORMASI PENJUALAN BARANG 99-99-9999 sampai 99-99-9999
Barang : xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
No.
999
999
. .
999

Tgl
99-99-9999
99-99-9999
.
99-99-9999

Faktur
xxxxxxx
xxxxxxx
xxxxxxx
Total

22
5.

Qty
9999
9999

Harga
99999999
99999999

Nilai
999999999
999999999

9999
99999999
999999999
---------------------------99999
9999999999

Tekan sembarang tombol ...

Simulasikan interpolation search terhadap kumpulan data ini

BINA NUSANTARA

1401164882 Nanda Ayu Wiyanti


[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]

Nama
Maruli Simarmata
Sablin Yusuf
Firdaus Alamsjah
Aini Waliyah
Feteriadi Thoe
I Made Karmawan
Meike Kotalawata
Januar Wahjudi
Obert Awuy
Suharjito Diningrat
Shirley Hielsen
Dindin Muhibudin
Ahmad Subagja

NIM
0900300525
0900300702
0900300180
0900300821
0900300104
0900300365
0900300648
0900300206
0900300247
0900300444
0900300789
0900300907
0900300430

IPK
2.57
2.55
2.93
3.74
3.46
2.17
2.20
2.60
3.86
3.57
3.43
2.38
2.82

untuk mencari: 0900300787, 0900300300


6.

Buatlah program dengan algoritma interpolation search terhadap kumpulan data ini
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]

Nama
Maruli Simarmata
Sablin Yusuf
Firdaus Alamsjah
Aini Waliyah
Feteriadi Thoe
I Made Karmawan
Meike Kotalawata
Januar Wahjudi
Obert Awuy
Suharjito Diningrat
Shirley Hielsen
Dindin Muhibudin
Ahmad Subagja

NIM
0900300525
0900300702
0900300180
0900300821
0900300104
0900300365
0900300648
0900300206
0900300247
0900300444
0900300789
0900300907
0900300430

IPK
2.57
2.55
2.93
3.74
3.46
2.17
2.20
2.60
3.86
3.57
3.43
2.38
2.82

untuk mencari: 0900300206

BINA NUSANTARA

1401164882 Nanda Ayu Wiyanti

Jawab :
1. Program dengan fungsi template untuk mencari dan menampilkan data terbesar dan data
terkecil dari sekelompok data yang diinputkan oleh user
#include <iostream>
#include <conio.h>
using namespace std;
int mx,mn;
int nilai[3];
int input();
void tampil();
template <class T> void maxMin(T *nilai,int tipe);
int main()
{
input();
getch();
}
int input(){
int i;
int nilai[3];
cout<<"Masukkan tiga bilangan"<<endl;
for(i=0;i<3;i++){
cout << "Masukkan bilangan ke-" << i+1 << " : ";
cin >> nilai[i];
}
maxMin(nilai,0);
maxMin(nilai,1);
}
template <class T> void maxMin(T *nilai, int tipe){
int i, j;
T temp;
if (tipe==0){
for (i=1; i<3; i++){
temp = nilai[i];
for (j=i-1; (j>=0) && (nilai[j]<temp); j--)
nilai[j+1]=nilai[j];
nilai[j+1]=temp;
}
mx=nilai[0];
cout<<"max="<<mx<<endl;
}else if (tipe=1){
for (i=1; i<3; i++){
temp = nilai[i];
for (j=i-1; (j>=0) && (nilai[j]>temp); j--)
nilai[j+1]=nilai[j];
nilai[j+1]=temp;
}
mn=nilai[0];
cout<<"min="<<mn<<endl;
}
}

BINA NUSANTARA

1401164882 Nanda Ayu Wiyanti


2. Program dengan fungsi template untuk membalik urutan data dari berbagai tipe data yang
diinputkan oleh user
#include <iostream>
#include <conio.h>
using namespace std;
template <class T> void balik(T *nilai);
int input();
int main(){
input();
getch();
}
int input()
{
int i;
int nilai[3];
cout<<"Masukkan tiga bilangan"<<endl;
for(i=0;i<3;i++)
{
cout << "Masukkan bilangan ke-" << i+1 << " : ";
cin >> nilai[i];
}
balik(nilai);
}
template <class T> void balik(T *nilai){
int i, j,x;
T temp;
T nilai2[3];
j=2;
for (i=0; i<3; i++){
nilai2[j]=nilai[i];

j--;

}
cout<<"Hasil Pengurutan:"<<endl;
for (x=0; x<3; x++){
cout<<nilai2[x]<<" ";
}

3. Program dengan class template untuk merepresentasikan obyek matrix yang mempunyai
operasi tambah, kurang kali dan transpose matrix
#include <iostream>
#include<stdio.h>
#include<conio.h>
#include <iomanip>
#define ROW 3
#define COL 3
using namespace std;
template <class T>
T Matriks (T x[3][3], T y[3][3], T a, T b)
{
int i, j, k;
int z[3][3];
//Operasi Perkalian Matrix

BINA NUSANTARA

1401164882 Nanda Ayu Wiyanti


for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
z[i][j]=0;
for (k=0;k< 3;k++)
{
z[i][j]+= x[i][k]*y[k][j];
}
}
}
//Menampilkan hasil Perkalian Matrix
cout<<\nPerkalian Matrix A x Matrix B : \n;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
cout<<setw(4)<<z[i][j];
}
cout<<endl;
}
//Operasi Tambah Matrix
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
z[i][j]=0;
for (k=0;k< 3;k++)
{
z[i][j]+= x[i][k]+y[k][j];
}
}
}
//Menampilkan hasil Tambah Matrix
cout<<\nPenambahan Matrix A + Matrix B : \n;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
cout<<setw(4)<<z[i][j];
}
cout<<endl;
}
//Operasi Kurang Matrix
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
z[i][j]=0;
for (k=0;k< 3;k++)
{
z[i][j]+= x[i][k]-y[k][j];
}
}
}
//Menampilkan hasil Kurang Matrix
cout<<\Pengurangan Matrix A Matrix B : \n;

BINA NUSANTARA

1401164882 Nanda Ayu Wiyanti


for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
cout<<setw(4)<<z[i][j];
}
cout<<endl;
}
cout <<\nTranspose Matrix A:\n;
//transpose matrix
for(i=0;i<a;i++)
for(j=i+1;j<b;j++)
{
k=x[i][j];
x[i][j]=x[j][i];
x[j][i]=k;
}
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
printf(%d ,x[i][j]);
printf(\n);
}
cout <<\nTranspose Matrix B:\n;
//transpose matrix
for(i=0;i<a;i++)
for(j=i+1;j<b;j++)
{
k=y[i][j];
y[i][j]=y[j][i];
y[j][i]=k;
}
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
printf(%d ,y[i][j]);
printf(\n);
}
}
int main()
{
int a[ROW][COL],i,j;
a[0][0] = 1;
a[0][1] = 2;
a[0][2] = 3;
a[1][0] = 4;
a[1][1] = 5;
a[1][2] = 6;
a[2][0] = 7;
a[2][1] = 8;
a[2][2] = 9;
int b[ROW][COL];
b[0][0] = 2;
b[0][1] = 2;
b[0][2] = 3;
b[1][0] = 3;
b[1][1] = 6;
b[1][2] = 6;
b[2][0] = 5;
b[2][1] = 4;
b[2][2] = 9;
cout << ===============================;
cout << \nProgram Matrix dengan Template;
cout << \n==============================;
cout << \nMatrix A : \n;
for(i=0;i<ROW;i++)
{
for(j=0;j<COL;j++)
printf(%d ,a[i][j]);

BINA NUSANTARA

1401164882 Nanda Ayu Wiyanti


printf(\n);
}
cout << \nMatrix B : \n;
for(i=0;i<ROW;i++)
{
for(j=0;j<COL;j++)
printf(%d ,b[i][j]);
printf(\n);
}
Matriks(a, b, ROW,COL);
getch();
}

4. Program
5. Interpolation search
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]

Nama
Feteriadi Thoe
Firdaus Alamsjah
Januar Wahjudi
Obert Awuy
I Made Karmawan
Ahmad Subagja
Suharjito Diningrat
Maruli Simarmata
Meike Kotalawata
Sablin Yusuf
Shirley Hielsen
Aini Waliyah
Dindin Muhibudin

NIM
0900300104
0900300180
0900300206
0900300247
0900300365
0900300430
0900300444
0900300525
0900300648
0900300702
0900300789
0900300821
0900300907

IPK
3.46
2.93
2.60
3.86
2.17
2.82
3.57
2.57
2.20
2.55
3.43
3.74
2.38

Data diatas diurutkan berdasarkan NIM


Kunci pencarian? 0900300787
Low = 0, High = 12
Posisi = (0900300787-0900300104)/( 0900300907-0900300104) x (12-0)+0= 10
Nim[10]==kunci? tidak

Kunci pencarian? 0900300300


Low = 0, High = 12
Posisi = (0900300300-0900300104)/( 0900300907-0900300104) x (12-0)+0= 3
Nim[3]==kunci? tidak

BINA NUSANTARA

1401164882 Nanda Ayu Wiyanti


6.

Program dengan algoritma interpolation search terhadap kumpulan data


#include <stdio.h>
#include <stdlib.h>
#define MAX 13
int interpolationsearch(int a[],int low,int high,int x)
{
int mid;
while(low<=high)
{
mid=low+(high-low)*((x-a[low])/(a[high]-a[low]));
if(x==a[mid])
return mid+1;
if(x<a[mid])
high=mid-1;
else
low=mid+1;
}
return -1;
}
int main()
{
int arr[MAX];
int i,n;
int val,pos;
printf("\nEnter total elements (n < %d) : ",MAX);
scanf("%d",&n);
printf("Enter %d Elements : ",n);
for(i=0;i<n;i++)
scanf("%d",&arr[i]);
printf("\nLIST : ");
for(i=0;i<n;i++)
printf("%d\t",arr[i]);
printf("\nSearch For : ");
scanf("%d",&val);
pos=interpolationsearch(&arr[0],0,n,val);
if(pos==-1)
printf("\nElement %d not found\n",val);
else
printf("\nElement %d found at position %d\n",val,pos);
return (0);
// getch();
}

BINA NUSANTARA

Vous aimerez peut-être aussi