Advertisement
asril99

Untitled

Dec 28th, 2018
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.03 KB | None | 0 0
  1. /*
  2. Nama File : nwc.cpp
  3. NIM : 0807645
  4. Tanggal dibuat : 25 Mei 2011
  5. */
  6.  
  7. #include <stdio.h>
  8. #include <conio.h>
  9. #include <iostream.h>
  10.  
  11. int cost[10][10], alok[10][10];
  12. int supp[10], demn[10];
  13. int nsup, ndem, brs, kol, biaya, jsup, jdem;
  14. int supply[10], demand[10];
  15. int pil;
  16.  
  17. void input()
  18. {
  19. int i,j;
  20. printf("Masukkan jumlah (max 10): \n");
  21. printf("Sumber (Supply) --> ");
  22. scanf("%d",&nsup);
  23. printf("Tujuan (Demand) --> ");
  24. scanf("%d",&ndem);
  25. if(ndem==0 || ndem>10 || nsup==0 || nsup>10) {
  26. printf("Jumlah Sumber dan Tujuan harus lebih dari 0 atau kurang dari atau sama dengan 10\n\n",ndem);
  27. }
  28. else
  29. {
  30. printf("\n-- Masukan nilai setiap sumber (supply) dan tujuan (demand) --\n");
  31.  
  32. for(i=1;i<=nsup;i++){
  33. printf("Sumber %d = ",i);
  34. scanf("%d",&supp[i]);
  35. supply[i] = supp[i];
  36. jsup += supply[i];
  37. }
  38.  
  39. for(j=1;j<=ndem;j++){
  40. printf("Tujuan %d = ",j);
  41. scanf("%d",&demn[j]);
  42. demand[j] = demn[j];
  43. jdem += demand[j];
  44. }
  45.  
  46. if(jsup==jdem){
  47. printf("\n-- Masukan bobot tiap kotak --\n");
  48. for(i=1;i<=nsup;i++){
  49. for(j=1;j<=ndem;j++){
  50. printf("Kotak [%d,%d] = ",i,j);
  51. scanf("%d",&cost[i][j]);
  52. }
  53. }
  54. printf("\n\n");
  55. }else{
  56. printf("Jumlah supply tidak sama dengan jumlah demand, sehingga kasus ini tidak dapat diselesaikan\n\n");
  57. }
  58. }
  59. }
  60.  
  61. void proses()
  62. {
  63. int batas,i,j;
  64. batas = nsup+1;
  65. brs = 1;
  66. kol = 1;
  67.  
  68. do {
  69. if(supp[brs] <= demn[kol]){
  70. alok[brs][kol] = supp[brs];
  71. demn[kol] -= alok[brs][kol];
  72. brs += 1;
  73. }else{
  74. alok[brs][kol] = demn[kol];
  75. supp[brs] -= alok[brs][kol];
  76. kol += 1;
  77. }
  78. }
  79. while (brs != batas);
  80.  
  81. biaya = 0;
  82. for(i=1;i<=nsup;i++){
  83. for(j=1;j<=ndem;j++){
  84. biaya += (alok[i][j] * cost[i][j]);
  85. }
  86. }
  87.  
  88. printf("-- Tabel Bobot --\n");
  89. printf("\n\t\tTujuan");
  90. printf("\nSumber\t|");
  91. for (i=1;i<=ndem;i++)
  92. printf(" D%d\t|",i);
  93. printf(" Supply");
  94. for (j=1;j<=nsup;j++){
  95. printf("\n S%d \t|",j);
  96. for(i=1; i<=ndem; i++)
  97. printf(" %d\t|",cost[j][i]);
  98. printf(" %d",supply[j]);
  99. }
  100. printf("\nDemand\t|");
  101. for(i=1; i<=ndem; i++)
  102. printf(" %d\t|",demand[i]);
  103. printf("\n\n\n");
  104.  
  105. printf("-- Tabel Alokasi --\n");
  106. printf("\n\t\tTujuan");
  107. printf("\nSumber\t|");
  108. for (i=1;i<=ndem;i++)
  109. printf(" D%d\t|",i);
  110. printf(" Supply");
  111. for (j=1;j<=nsup;j++){
  112. printf("\n S%d \t|",j);
  113. for(i=1; i<=ndem; i++)
  114. printf(" %d\t|",alok[j][i]);
  115. printf(" %d",supply[j]);
  116. }
  117. printf("\nDemand\t|");
  118. for(i=1; i<=ndem; i++)
  119. printf(" %d\t|",demand[i]);
  120. printf("\n\n");
  121.  
  122. printf("\nTotal biaya optimal dengan metode Northwest Corner adalah %d \n\n",biaya);
  123. getch();
  124. }
  125.  
  126. void main()
  127. {
  128. do {
  129. printf("-- Menu Aplikasi NWC --");
  130. printf("\n1. Input data");
  131. printf("\n2. Tampilan hasil perhitungan");
  132. printf("\n3. Exit");
  133. printf("\n\nMasukan pilihan :");
  134. scanf("%d",&pil);
  135. switch(pil){
  136. case 1:input();break;
  137. case 2:proses();break;
  138. }
  139. }
  140. while(pil != 3);
  141. getch();
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement