Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function vibor(potrebitel, postavchik){
- var sv = document.getElementById("sv");
- var mn = document.getElementById("mn");
- if (sv.checked) Northwest(potrebitel,postavchik);
- if (mn.checked) mkm(potrebitel,postavchik);
- }
- function resolution(t){
- var s=t.id;
- var a = document.getElementById(s).value;
- if (isNaN(a) || (a % 1 != 0) && a=="") {
- alert("Неправильно введены данные");
- document.getElementById(s).value="";
- }
- }
- function Northwest(potrebitel, postavchik){
- i = 0;
- j = 0;
- var potreb = new Array();
- var postav = new Array();
- var tarif = new Array();
- for (i = 0; i < potrebitel; i++)
- {
- var id = document.getElementById("f"+i).value;
- potreb[i] = id;
- }
- for (j = 0; j < postavchik; j++)
- {
- var id1 = document.getElementById("s"+j).value;
- postav[j] = id1;
- }
- var k = 0;
- for (i = 0; i < postavchik; i++)
- {
- tarif[i]=new Array();
- for (j = 0; j < potrebitel; j++)
- {
- var id2 = document.getElementById("b"+k).value;
- tarif[i][j] = id2;
- k++;
- }
- }
- var sumA = 0;
- var sumB = 0;
- for (i = 0; i < potreb.length; i++)
- {
- sumA += parseInt(potreb[i]);
- }
- for (i = 0; i < postav.length; i++)
- {
- sumB += parseInt(postav[i]);
- }
- if (sumA > sumB)
- {
- var s = sumA - sumB;
- postav.length++;
- postav[postav.length - 1] = s;
- var c = 1;
- var p = 0;
- var item;
- for (var i = 0; i < potrebitel; i++) {
- item = tarif[i] || (tarif[i] = []);
- for (var k = item.length; k < postavchik+1; k++)
- item[k] = 0;
- }
- result(potreb,postav,tarif,potrebitel,postavchik,c, p);
- }
- if (sumA < sumB)
- {
- var s = sumB - sumA;
- potreb.length++;
- potreb[potreb.length - 1] = s;
- var c = 0;
- var p =1;
- var item;
- for (var i = 0; i < potrebitel+1; i++) {
- item = tarif[i] || (tarif[i] = []);
- for (var k = item.length; k < postavchik; k++)
- item[k] = 0;
- }
- result(potreb,postav,tarif,potrebitel,postavchik,c, p);;
- }
- if (sumA == sumB)
- {
- var c = 0;
- var p=0;
- result(potreb,postav,tarif,potrebitel,postavchik,c, p);
- }
- }
- function result(potreb, postav, tarif, potrebitel, postavchik, c, p)
- {
- var i = 0;
- var j = 0;
- var res = [];
- for(i=0;i<postavchik+c;i++){
- res[i]=[];
- for(j=0;j<potrebitel+p;j++){
- res[i][j]=null;
- }
- }
- var f=0;
- var q=0;
- while (f < potrebitel+p && q < postavchik+c)
- {
- res[q][f] = FindMinElement(potreb[f], postav[q]);
- potreb[f] -= res[q][f];
- postav[q] -= res[q][f];
- if (potreb[f] == 0) { f++; }
- if (postav[q] == 0) { q++; }
- if (potreb[f] == 0 && postav[q] == 0) { f++; q++; }
- }
- var ResultFunction = 0;
- for (i = 0; i < potrebitel+c; i++)
- {
- for (j = 0; j < postavchik+c; j++)
- {
- ResultFunction += (res[j][i] * tarif[j][i]);
- }
- }
- alert(ResultFunction);
- }
- function FindMinElement(potreb, postav)
- {
- if (parseInt(potreb) > parseInt(postav)) return parseInt(postav);
- if (parseInt(potreb) == parseInt(postav)) { return parseInt(potreb); }
- else return parseInt(potreb);
- }
- function mkm(potrebitel,postavchik)
- {
- i = 0;
- j = 0;
- var potreb = new Array();
- var postav = new Array();
- var tarif = new Array();
- for (i = 0; i < potrebitel; i++)
- {
- var id = document.getElementById("f"+i).value;
- potreb[i] = id;
- }
- for (j = 0; j < postavchik; j++)
- {
- var id1 = document.getElementById("s"+j).value;
- postav[j] = id1;
- }
- var k = 0;
- for (i = 0; i < postavchik; i++)
- {
- tarif[i]=new Array();
- for (j = 0; j < potrebitel; j++)
- {
- var id2 = document.getElementById("b"+k).value;
- tarif[i][j] = id2;
- k++;
- }
- }
- var sumA = 0;
- var sumB = 0;
- for (i = 0; i < potreb.length; i++)
- {
- sumA += parseInt(potreb[i]);
- }
- for (i = 0; i < postav.length; i++)
- {
- sumB += parseInt(postav[i]);
- }
- if (sumA > sumB)
- {
- var s = sumA - sumB;
- postav.length++;
- postav[postav.length - 1] = s;
- var c = 1;
- var p =0;
- var item;
- for (var i = 0; i < potrebitel; i++) {
- item = tarif[i] || (tarif[i] = []);
- for (var k = item.length; k < postavchik+1; k++)
- item[k] = 0;
- }
- min_element(potreb,postav,tarif,potrebitel,postavchik,c,sumB,p);
- }
- if (sumA < sumB)
- {
- var s = sumB - sumA;
- potreb.length++;
- potreb[potreb.length - 1] = s;
- var c = 0;
- var p =1;
- var item;
- for (var i = 0; i < potrebitel+1; i++) {
- item = tarif[i] || (tarif[i] = []);
- for (var k = item.length; k < postavchik; k++)
- item[k] = 0;
- }
- min_element(potreb,postav,tarif,potrebitel,postavchik,c,sumB,p);
- }
- if (sumA == sumB)
- {
- var c = 0;
- var p =0;
- min_element(potreb,postav,tarif,potrebitel,postavchik,c,sumB,p);
- }
- }
- function min_element(potreb, postav, tarif, potrebitel, postavchik, c, sumB, p)
- {
- var i = 0;
- var j = 0;
- var res1 = [];
- for(i=0;i<postavchik+c;i++){
- res1[i]=[];
- for(j=0;j<potrebitel+p;j++){
- res1[i][j]=null;
- }
- }
- var f=0;
- var q=0;
- var ResultFunct=0;
- var min=0;
- var k1=0;
- var k2=0;
- while(sumB!=0)
- {
- min=10000;
- for(i=0;i<potrebitel+p;i++)
- {
- for(j=0;j<postavchik+c;j++)
- {
- if(parseInt(tarif[j][i])<parseInt(min))
- {
- min=tarif[j][i];
- k1=i;
- k2=j;
- }
- }
- }
- if(potreb[k1]!=0 && postav[k2]!=0)
- {
- res1[k2][k1]=FindMinElement(potreb[k1], postav[k2]);
- potreb[k1] -= res1[k2][k1];
- postav[k2] -= res1[k2][k1];
- ResultFunct+=min*res1[k2][k1];
- tarif[k2][k1]=20000;
- sumB-=res1[k2][k1];
- }
- else
- {
- tarif[k2][k1]=20000;
- }
- }
- alert(ResultFunct);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement