Advertisement
Guest User

Untitled

a guest
May 25th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function vibor(potrebitel, postavchik){
  2.             var sv = document.getElementById("sv");
  3.             var mn = document.getElementById("mn");
  4.             if (sv.checked) Northwest(potrebitel,postavchik);
  5.             if (mn.checked) mkm(potrebitel,postavchik);
  6. }
  7. function resolution(t){
  8.     var s=t.id;
  9.     var a = document.getElementById(s).value;
  10.     if (isNaN(a) || (a % 1 != 0) && a=="") {
  11.         alert("Неправильно введены данные");  
  12.         document.getElementById(s).value="";
  13.     }
  14. }
  15.   function Northwest(potrebitel, postavchik){
  16.             i = 0;
  17.             j = 0;
  18.  
  19.             var potreb = new Array();
  20.             var postav = new Array();
  21.             var tarif = new Array();
  22.              for (i = 0; i < potrebitel; i++)
  23.             {
  24.                 var id = document.getElementById("f"+i).value;
  25.                 potreb[i] = id;
  26.             }      
  27.             for (j = 0; j < postavchik; j++)
  28.             {
  29.                 var id1 = document.getElementById("s"+j).value;
  30.                 postav[j] = id1;
  31.             }    
  32.             var k = 0;
  33.             for (i = 0; i < postavchik; i++)
  34.             {
  35.                 tarif[i]=new Array();
  36.                 for (j = 0; j < potrebitel; j++)
  37.                 {
  38.                     var id2 = document.getElementById("b"+k).value;
  39.                     tarif[i][j] = id2;
  40.                     k++;
  41.                 }
  42.             }
  43.             var sumA = 0;
  44.             var sumB = 0;
  45.             for (i = 0; i < potreb.length; i++)
  46.             {
  47.                 sumA += parseInt(potreb[i]);
  48.             }
  49.             for (i = 0; i < postav.length; i++)
  50.             {
  51.                 sumB += parseInt(postav[i]);
  52.             }
  53.             if (sumA > sumB)
  54.             {
  55.                 var s = sumA - sumB;
  56.                 postav.length++;
  57.                 postav[postav.length - 1] = s;
  58.                 var c = 1;
  59.                 var p = 0;
  60.                 var item;
  61.             for (var i = 0; i < potrebitel; i++) {
  62.                 item = tarif[i] || (tarif[i] = []);
  63.  
  64.                 for (var k = item.length; k < postavchik+1; k++)
  65.                     item[k] = 0;    
  66.             }
  67.                 result(potreb,postav,tarif,potrebitel,postavchik,c, p);
  68.                
  69.             }
  70.             if (sumA < sumB)
  71.             {
  72.                 var s = sumB - sumA;
  73.                 potreb.length++;
  74.                 potreb[potreb.length - 1] = s;
  75.                 var c = 0;
  76.                 var p =1;
  77.                 var item;
  78.             for (var i = 0; i < potrebitel+1; i++) {
  79.                 item = tarif[i] || (tarif[i] = []);
  80.  
  81.                 for (var k = item.length; k < postavchik; k++)
  82.                     item[k] = 0;    
  83.             }
  84.                 result(potreb,postav,tarif,potrebitel,postavchik,c, p);;
  85.             }
  86.             if (sumA == sumB)
  87.             {
  88.                 var c = 0;
  89.                 var p=0;
  90.                 result(potreb,postav,tarif,potrebitel,postavchik,c, p);
  91.             }
  92.   }
  93.   function result(potreb, postav, tarif, potrebitel, postavchik, c, p)
  94.         {
  95.            
  96.             var i = 0;
  97.             var j = 0;
  98.             var res = [];
  99.             for(i=0;i<postavchik+c;i++){
  100.                 res[i]=[];
  101.                 for(j=0;j<potrebitel+p;j++){
  102.                     res[i][j]=null;
  103.                 }
  104.             }
  105.             var f=0;
  106.             var q=0;
  107.             while (f < potrebitel+p && q < postavchik+c)
  108.             {
  109.                
  110.                    
  111.                     res[q][f] = FindMinElement(potreb[f], postav[q]);
  112.                     potreb[f] -= res[q][f];
  113.                     postav[q] -= res[q][f];
  114.                     if (potreb[f] == 0) { f++; }
  115.                     if (postav[q] == 0) { q++; }
  116.                     if (potreb[f] == 0 && postav[q] == 0) { f++; q++; }
  117.  
  118.             }
  119.             var ResultFunction = 0;
  120.             for (i = 0; i < potrebitel+c; i++)
  121.             {
  122.                 for (j = 0; j < postavchik+c; j++)
  123.                 {
  124.                     ResultFunction += (res[j][i] * tarif[j][i]);
  125.                 }
  126.             }
  127.             alert(ResultFunction);
  128.         }
  129. function FindMinElement(potreb, postav)
  130.         {
  131.             if (parseInt(potreb) > parseInt(postav)) return parseInt(postav);
  132.             if (parseInt(potreb) == parseInt(postav)) { return parseInt(potreb); }
  133.             else return parseInt(potreb);
  134.         }
  135. function mkm(potrebitel,postavchik)
  136. {
  137.      i = 0;
  138.             j = 0;
  139.  
  140.             var potreb = new Array();
  141.             var postav = new Array();
  142.             var tarif = new Array();
  143.              for (i = 0; i < potrebitel; i++)
  144.             {
  145.                 var id = document.getElementById("f"+i).value;
  146.                 potreb[i] = id;
  147.             }      
  148.             for (j = 0; j < postavchik; j++)
  149.             {
  150.                 var id1 = document.getElementById("s"+j).value;
  151.                 postav[j] = id1;
  152.             }    
  153.             var k = 0;
  154.             for (i = 0; i < postavchik; i++)
  155.             {
  156.                 tarif[i]=new Array();
  157.                 for (j = 0; j < potrebitel; j++)
  158.                 {
  159.                     var id2 = document.getElementById("b"+k).value;
  160.                     tarif[i][j] = id2;
  161.                     k++;
  162.                 }
  163.             }
  164.             var sumA = 0;
  165.             var sumB = 0;
  166.             for (i = 0; i < potreb.length; i++)
  167.             {
  168.                 sumA += parseInt(potreb[i]);
  169.             }
  170.             for (i = 0; i < postav.length; i++)
  171.             {
  172.                 sumB += parseInt(postav[i]);
  173.             }
  174.             if (sumA > sumB)
  175.             {
  176.                 var s = sumA - sumB;
  177.                 postav.length++;
  178.                 postav[postav.length - 1] = s;
  179.                 var c = 1;
  180.                 var p =0;
  181.                 var item;
  182.             for (var i = 0; i < potrebitel; i++) {
  183.                 item = tarif[i] || (tarif[i] = []);
  184.  
  185.                 for (var k = item.length; k < postavchik+1; k++)
  186.                     item[k] = 0;    
  187.             }
  188.                 min_element(potreb,postav,tarif,potrebitel,postavchik,c,sumB,p);
  189.                
  190.             }
  191.             if (sumA < sumB)
  192.             {
  193.                 var s = sumB - sumA;
  194.                 potreb.length++;
  195.                 potreb[potreb.length - 1] = s;
  196.                 var c = 0;
  197.                 var p =1;
  198.                 var item;
  199.             for (var i = 0; i < potrebitel+1; i++) {
  200.                 item = tarif[i] || (tarif[i] = []);
  201.  
  202.                 for (var k = item.length; k < postavchik; k++)
  203.                     item[k] = 0;    
  204.             }
  205.                 min_element(potreb,postav,tarif,potrebitel,postavchik,c,sumB,p);
  206.             }
  207.             if (sumA == sumB)
  208.             {
  209.                 var c = 0;
  210.                 var p =0;
  211.                 min_element(potreb,postav,tarif,potrebitel,postavchik,c,sumB,p);
  212.             }
  213. }
  214. function min_element(potreb, postav, tarif, potrebitel, postavchik, c, sumB, p)
  215. {
  216.             var i = 0;
  217.             var j = 0;
  218.             var res1 = [];
  219.             for(i=0;i<postavchik+c;i++){
  220.                 res1[i]=[];
  221.                 for(j=0;j<potrebitel+p;j++){
  222.                     res1[i][j]=null;
  223.                 }
  224.             }
  225.             var f=0;
  226.             var q=0;
  227.             var ResultFunct=0;
  228.             var min=0;
  229.             var k1=0;
  230.             var k2=0;
  231.             while(sumB!=0)
  232.             {
  233.                 min=10000;
  234.                 for(i=0;i<potrebitel+p;i++)
  235.                 {
  236.                     for(j=0;j<postavchik+c;j++)
  237.                     {
  238.                         if(parseInt(tarif[j][i])<parseInt(min))
  239.                         {
  240.                             min=tarif[j][i];  
  241.                             k1=i;
  242.                             k2=j;
  243.                         }
  244.                     }
  245.                 }
  246.                 if(potreb[k1]!=0 && postav[k2]!=0)
  247.                 {
  248.                            
  249.                     res1[k2][k1]=FindMinElement(potreb[k1], postav[k2]);
  250.                     potreb[k1] -= res1[k2][k1];
  251.                     postav[k2] -= res1[k2][k1];
  252.                     ResultFunct+=min*res1[k2][k1];
  253.                     tarif[k2][k1]=20000;
  254.                     sumB-=res1[k2][k1];
  255.                 }
  256.                 else
  257.                 {
  258.                     tarif[k2][k1]=20000;
  259.                 }
  260.                
  261.             }
  262.                         alert(ResultFunct);
  263. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement