розміром num_l.
i_lrow=індекс провідного рядка поточного плану.
alm - дозволяє елемент, що знаходиться на перетині ведучого шпальти і ведучою рядка. :: stringstream table - об'єкт класу std :: stringstream, який містить весь користувальницький висновок у вихідний файл.
Власне, зараз були розглянуті призначення кожної змінна-члена класу simplex. Весь алгоритм обчислення вищенаведених значень проводиться у файлі simplex.cpp.
Лістинг 4. simplex.cpp
# include lt; iostream gt;
# include lt; cmath gt;
# include lt; fstream gt;
# include lt; sstream gt;
# include lt; string gt;
# include user_data.h
# include simplex.h
std :: cout; std :: endl;
simplex :: init ()
{i, j;=0;=new double * [num_l]; (i=0; i lt; num_l; i ++) [i]=new double [num_v * 2]; (i =0; i lt; num_l; i ++) {(j=0; j lt; num_v; j ++) [i] [j]=system [i] [j]; (; j lt; num_v * 2; j ++) ( i + num_v == j) (way) [i] [j]=1; [i] [j]=- 1; [i] [j]=0;
}=new double [num_v * 2];=new double * [num_l]; (i=0; i lt; num_l; i ++) {[i]=new double [2]; [ i] [0]=i + num_v; [i] [1]=fm [i];
} (i=0; i lt; num_v * 2; i ++) (i lt; num_v) [i]=function [i] * - 1; [i]=0; _lcol=0 ; (i=0; i lt; num_v * 2 - 1; i ++) {(istr [i] lt; 0) (fabs (istr [i + 1]) gt; fabs (istr [i])) _ lcol=i + 1;
}=new double [num_l]; (i=0; i lt; num_l; i ++) [i]=bv [i] [1]/sv [i] [i_lcol]; _ lrow= 0; (i=0; i lt; num_l - 1; i ++) (th [i] gt; th [i + 1]) _ lrow=i + 1;=sv [i_lrow] [i_lcol]; _ result_to_file (0);
} simplex :: plane_is_valid ()
{i; result=true; (way) (i=0; i lt; num_v * 2; i ++) (istr [i] lt; 0) {= false ;;
} (! way) (i=0; i lt; num_v * 2; i ++) (istr [i] gt;=0) {= false ;;
}
result;
} simplex :: function_is_undefined ()
{i; (i=0; i lt; num_l; i ++) (th [i] lt; 0) {false;
} true;
} simplex :: gen_plane ()
{i, j, it_num=0; A, B; (! plane_is_valid () amp; amp; function_is_undefined ()) {= bv [i_lrow] [1];=istr [i_lcol];-=A * B/alm; * tmp_bv=new double [num_l]; [i_lrow] [0]=i_lcol;=bv [i_lrow] [1]; (i=0; i lt; num_l; i ++) {= sv [i] [i_lcol]; _ bv [i]=bv [i_lrow] [1]; (i!=i_lrow) _bv [i]=bv [i] [1] - A * B/alm; _bv [i]/=alm;
} (i=0; i lt; num_l; i ++) [i] [1]=tmp_bv [i]; * tmp_istr=istr;=istr [i_lcol]; (i=0; i lt; num_v * 2; i ++) {= sv [i_lrow] [i]; _ istr [i]=istr [i] - A * B/alm;
}=tmp_istr; ** tmp_sv=new double * [num_l]; (i=0; i lt; num_l; i ++) _ sv [i]=new double [num_v * 2]; (i =0; i lt; num_l; i ++) (j=0; j lt; num_v * 2; j ++) {_sv [i] [j]=sv [i] [j];=sv [i_lrow] [j]; =sv [i] [i_lcol]; (i == i_lrow) _sv [i] [j] /=alm; _sv [i] [j]=sv [i] [j] - A * B/alm;
}=tmp_sv; _lcol=0; (i=0; i lt; num_l; i ++) [i]=bv [i] [1]/sv [i] [i_lcol]; _ lrow= 0; (i=0; i lt; num_l - 1; i ++) (th [i] gt; th [i + 1]) _ lrow=i + 1;=sv [i_lrow] [i_lcol]; _ num ++; _ result_to_file (it_num );
} (! function_is_undefined ()) lt; lt; " nЦелевая фукнція не обмежена, дана задача рішень не
має n" lt; lt; endl;
else { lt; lt; nf (x)= lt; lt; func lt; lt; n lt; lt; endl; (i=0; i lt; num_l; i ++) { lt; lt; x lt; lt; bv [i] [0] + 1 lt; lt; = Raquo; lt; lt; bv [i] [1] lt; lt; endl;
} lt; lt; nВсе обчислення були записані у файл table.txt n lt; lt; endl;
}
} simplex :: print_result_to_file (int it_num)
{i, j; (! it_num) {
table lt; lt; Задана цільова функція: n lt; lt; endl;
std :: stringstream f_x; _x lt; lt; f (x)= raquo ;; (i=0; i lt; num_v; i ++) {(! i) _x lt; lt; function [i] lt; lt; x lt; lt; i + 1 lt; lt; raquo ;; {(function [i] lt; 0) _x lt; lt; - lt; lt; fabs (function [i]) lt; lt; x lt; lt; i + 1 lt; lt; raquo ;; (function [i] gt; 0) _x lt; lt; + lt; lt; function [i] lt; lt; x lt; lt; i + 1 lt; lt; raquo ;;
}
} :: string minmax; (way)= max raquo ;;= min raquo ;; _ x lt; lt; = gt; lt; lt; minmax lt; lt; n lt; lt; endl;
table lt; lt; ...