Anda di halaman 1dari 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

Anda mungkin juga menyukai

  • AMOOP: Pertemuan 23-24 - Polymorphism
    AMOOP: Pertemuan 23-24 - Polymorphism
    Dokumen6 halaman
    AMOOP: Pertemuan 23-24 - Polymorphism
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • TM Ofc 9
    TM Ofc 9
    Dokumen5 halaman
    TM Ofc 9
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Tugas 15
    Tugas 15
    Dokumen4 halaman
    Tugas 15
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Quiz 10
    Quiz 10
    Dokumen2 halaman
    Quiz 10
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Tugas 18
    Tugas 18
    Dokumen5 halaman
    Tugas 18
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Tugas 16
    Tugas 16
    Dokumen3 halaman
    Tugas 16
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Tugas 17
    Tugas 17
    Dokumen5 halaman
    Tugas 17
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Ofc11 - 1401164882
    Ofc11 - 1401164882
    Dokumen4 halaman
    Ofc11 - 1401164882
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Quiz 6
    Quiz 6
    Dokumen1 halaman
    Quiz 6
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Insertion Sort (Putaran 1)
    Insertion Sort (Putaran 1)
    Dokumen9 halaman
    Insertion Sort (Putaran 1)
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Tugas 8
    Tugas 8
    Dokumen3 halaman
    Tugas 8
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Tugas 12
    Tugas 12
    Dokumen4 halaman
    Tugas 12
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Pert 22
    Pert 22
    Dokumen6 halaman
    Pert 22
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Pert 21 - 1401164882
    Pert 21 - 1401164882
    Dokumen2 halaman
    Pert 21 - 1401164882
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Qioz 5
    Qioz 5
    Dokumen2 halaman
    Qioz 5
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Pert.22 - T045423789
    Pert.22 - T045423789
    Dokumen2 halaman
    Pert.22 - T045423789
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Tugas 7
    Tugas 7
    Dokumen6 halaman
    Tugas 7
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Quiz 5
    Quiz 5
    Dokumen2 halaman
    Quiz 5
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • TM Ofc 4
    TM Ofc 4
    Dokumen4 halaman
    TM Ofc 4
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Tugas 9
    Tugas 9
    Dokumen5 halaman
    Tugas 9
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Tugas 6
    Tugas 6
    Dokumen4 halaman
    Tugas 6
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Tugas 5
    Tugas 5
    Dokumen3 halaman
    Tugas 5
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Tugas 3
    Tugas 3
    Dokumen3 halaman
    Tugas 3
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Kel 1 - Algoritma Pemograman - POP Dan OOP
    Kel 1 - Algoritma Pemograman - POP Dan OOP
    Dokumen19 halaman
    Kel 1 - Algoritma Pemograman - POP Dan OOP
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Tugas 2
    Tugas 2
    Dokumen2 halaman
    Tugas 2
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • AMOOP: Pertemuan 1 - Pengertian Algoritma Pemrograman
    AMOOP: Pertemuan 1 - Pengertian Algoritma Pemrograman
    Dokumen2 halaman
    AMOOP: Pertemuan 1 - Pengertian Algoritma Pemrograman
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Tugas 4
    Tugas 4
    Dokumen6 halaman
    Tugas 4
    Nanda Ayu Wiyanti
    Belum ada peringkat
  • Kalender Perkuliahan Semester Genap 2010-2011 Binus University
    Kalender Perkuliahan Semester Genap 2010-2011 Binus University
    Dokumen1 halaman
    Kalender Perkuliahan Semester Genap 2010-2011 Binus University
    Nanda Ayu Wiyanti
    Belum ada peringkat