Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as C++ by mika ( 6 years ago )
//Marcopolo ingin membuat pos dagang antar negara.
//Setiap negara memiliki 3 jenis alat tukar yang bisa digunakan untuk berdagang.
//Dua negara bisa langsung berdagang apabila memiliki alat tukar yang sama.
//Bila dua negara tidak memiliki alat tukar yang sama tapi ada negara ketiga yang memiliki alat tukar yang sama dengan kedua negara,
//dua negara tersebut bisa berdagang melalui negara ketiga.
//Apabila tidak ada negara ketiga yang memiliki alat tukar yg sama dengan dua negara tersebut maka Marcopolo harus
//membujuk pemerintahan untuk menambah jenis alat tukar. Penambahan jenis alat tukar akan memakan 1 ongkos politik.
//Bila di dunia ada x negara dan y jenis alat tukar maka bantulah Marcopolo mengatur agar semua negara bisa berdagang
//dan hitung ongkos politiknya!
//
//Contoh: ada 4 negara dan ada 7 jenis alat tukar
//
//Negara A [1, 2, 3]
//Negara B [2, 3, 4]
//Negara C [4, 5, 6]
//Negara D [5, 6, 7]
//
//Yang bisa langsung berdagang: Negara A&B, C&D, E&F
//Yang bisa berdagang melalui negara ketiga: Negara A&C via negara B, Negara B&D via negara C
//Karena negara A&D tidak dapat berdagang maka Marcopolo harus menambah alat tukar negara D dengan alat tukar 3
//Ongkos: 1 politik
//
//*) Apakah inputnya dan bagaimana cara outputnya cari sendiri
//**) Gunakan array
//*) Jenis alat tukar di tiap negara itu random (kebetulan contohnya aja urut)
//**) Nama negara boleh diganti angka
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main(){
srand(time(NULL)); //----> untuk seed random
int negara, mt;
//INISIALISASI
cout<<"Inputkan Banyak Negara : ";
cin>> negara;
cout<<"Inputkan banyak mata uang : ";
cin>>mt;
char nama[negara];
bool cek[negara][50];
int dunia[negara][3];
for(int i = 0 ; i < negara ; i++){
for(int j = 0 ; j < negara ; j++){
cek[i][j] = true;
}
}
for(int i = 0 ; i < negara ; i++){
do{
dunia[i][0] = rand() % mt+1; //1 2 3 4.... mt
dunia[i][1] = rand() % mt+1; //1 2 3 4.... mt
dunia[i][2] = rand() % mt+1; //1 2 3 4.... mt
}
while(dunia[i][0] == dunia[i][1] || dunia[i][1]==dunia[i][2] || dunia[i][2] == dunia[i][0]);
}
for(int i = 0 ; i < negara ; i++){
nama[i] =(char)(i + 65);
}
for(int i = 0 ; i < negara ; i++){
cout<<nama[i]<<" : ";
for(int j = 0 ; j < 3 ; j++){
cout<<dunia[i][j]<<" ";
}
cout<<endl;
}
//PENGECEKAN
//antar 2 negara
bool connect;
int sim;
for(int i = 0 ; i < negara ; i++){
for(int j = i+1 ; j < negara; j++){
connect = false;
///////PENGECEKAN DALAM///////
for(int p = 0 ; p < 3 ; p++){
for(int q = 0 ; q < 3 ; q++){
if(dunia[i][p] == dunia[j][q]){
connect = true;
}
}
}
cek[i][j] = connect;
/////////////////////////////
}
}
for(int i = 0 ; i < negara ; i++){
for(int j = i+1 ; j < negara ; j++){
cout<<cek[i][j]<<" ";
}
cout<<endl;
}
//lintas negara
cout<<"Lintas Negara : "<<endl;
int tambahan = 0;
for(int i = 0 ; i < negara ; i++){
for(int j = i+1 ; j < negara ; j++){
if(!cek[i][j]){
//cek
bool ks = false;
for(int k = 0 ; k < negara ; k++){
if(cek[i][k] && cek[j][k] && k != i && k != j){
ks = true;
cout<<nama[i]<<">>"<<nama[k]<<"<<"<<nama[j]<<endl;
}
}
if(!ks){
tambahan++;
cout<<nama[i]<<" Tidak Terhubung Dengan "<<nama[j]<<endl;
}
// cout<<endl;
}
}
}
cout<<tambahan;
return 0;
}
Revise this Paste
Children: 112565