Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Nama File : nwc.cpp
- NIM : 0807645
- Tanggal dibuat : 25 Mei 2011
- */
- #include <stdio.h>
- #include <conio.h>
- #include <iostream.h>
- int cost[10][10], alok[10][10];
- int supp[10], demn[10];
- int nsup, ndem, brs, kol, biaya, jsup, jdem;
- int supply[10], demand[10];
- int pil;
- void input()
- {
- int i,j;
- printf("Masukkan jumlah (max 10): \n");
- printf("Sumber (Supply) --> ");
- scanf("%d",&nsup);
- printf("Tujuan (Demand) --> ");
- scanf("%d",&ndem);
- if(ndem==0 || ndem>10 || nsup==0 || nsup>10) {
- printf("Jumlah Sumber dan Tujuan harus lebih dari 0 atau kurang dari atau sama dengan 10\n\n",ndem);
- }
- else
- {
- printf("\n-- Masukan nilai setiap sumber (supply) dan tujuan (demand) --\n");
- for(i=1;i<=nsup;i++){
- printf("Sumber %d = ",i);
- scanf("%d",&supp[i]);
- supply[i] = supp[i];
- jsup += supply[i];
- }
- for(j=1;j<=ndem;j++){
- printf("Tujuan %d = ",j);
- scanf("%d",&demn[j]);
- demand[j] = demn[j];
- jdem += demand[j];
- }
- if(jsup==jdem){
- printf("\n-- Masukan bobot tiap kotak --\n");
- for(i=1;i<=nsup;i++){
- for(j=1;j<=ndem;j++){
- printf("Kotak [%d,%d] = ",i,j);
- scanf("%d",&cost[i][j]);
- }
- }
- printf("\n\n");
- }else{
- printf("Jumlah supply tidak sama dengan jumlah demand, sehingga kasus ini tidak dapat diselesaikan\n\n");
- }
- }
- }
- void proses()
- {
- int batas,i,j;
- batas = nsup+1;
- brs = 1;
- kol = 1;
- do {
- if(supp[brs] <= demn[kol]){
- alok[brs][kol] = supp[brs];
- demn[kol] -= alok[brs][kol];
- brs += 1;
- }else{
- alok[brs][kol] = demn[kol];
- supp[brs] -= alok[brs][kol];
- kol += 1;
- }
- }
- while (brs != batas);
- biaya = 0;
- for(i=1;i<=nsup;i++){
- for(j=1;j<=ndem;j++){
- biaya += (alok[i][j] * cost[i][j]);
- }
- }
- printf("-- Tabel Bobot --\n");
- printf("\n\t\tTujuan");
- printf("\nSumber\t|");
- for (i=1;i<=ndem;i++)
- printf(" D%d\t|",i);
- printf(" Supply");
- for (j=1;j<=nsup;j++){
- printf("\n S%d \t|",j);
- for(i=1; i<=ndem; i++)
- printf(" %d\t|",cost[j][i]);
- printf(" %d",supply[j]);
- }
- printf("\nDemand\t|");
- for(i=1; i<=ndem; i++)
- printf(" %d\t|",demand[i]);
- printf("\n\n\n");
- printf("-- Tabel Alokasi --\n");
- printf("\n\t\tTujuan");
- printf("\nSumber\t|");
- for (i=1;i<=ndem;i++)
- printf(" D%d\t|",i);
- printf(" Supply");
- for (j=1;j<=nsup;j++){
- printf("\n S%d \t|",j);
- for(i=1; i<=ndem; i++)
- printf(" %d\t|",alok[j][i]);
- printf(" %d",supply[j]);
- }
- printf("\nDemand\t|");
- for(i=1; i<=ndem; i++)
- printf(" %d\t|",demand[i]);
- printf("\n\n");
- printf("\nTotal biaya optimal dengan metode Northwest Corner adalah %d \n\n",biaya);
- getch();
- }
- void main()
- {
- do {
- printf("-- Menu Aplikasi NWC --");
- printf("\n1. Input data");
- printf("\n2. Tampilan hasil perhitungan");
- printf("\n3. Exit");
- printf("\n\nMasukan pilihan :");
- scanf("%d",&pil);
- switch(pil){
- case 1:input();break;
- case 2:proses();break;
- }
- }
- while(pil != 3);
- getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement