Advertisement
Anton0093

Untitled

Apr 14th, 2020
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Создание матрицы
  2. function create_array_function(n){
  3.   var matrix = new Array(n);
  4.   for(var i =1; i<=n; ++i){
  5.       matrix[i] = new Array(n);
  6.   }
  7.   for(var i =1; i <= n; ++i){
  8.       for(var j =1; j <= n; ++j){
  9.           if(i==j){
  10.               matrix[i][j] = 1;
  11.           } else if (i > j){
  12.               matrix[i][j] = 8;
  13.           } else {
  14.               matrix[i][j] = 3;
  15.           }
  16.       }
  17.   }
  18.   return matrix;
  19. }
  20.  
  21. //Вычисление количества элементов кратных 3
  22. function mod3_array_function(matrix){
  23.   var k = 0;
  24.   for(var i =1; i<=matrix.length; ++i){
  25.       for(var j=1; j<=matrix.length; ++j){
  26.           if(matrix[i][j] % 3 == 0)
  27.               ++k;
  28.       }
  29.   }
  30.   return k;
  31. }
  32.  
  33. function sum(line){
  34.   var res = 0;
  35.   for(var i = 1; i<=line.length; ++i){
  36.       res+=line[i];
  37.   }
  38.   return res;
  39. }
  40.  
  41. //Вычисление суммы элементов матрицы в каждой четной строке
  42. function amount_array_function(matrix){
  43.   var res = new Array(Math.floor((matrix.length+1)/2));
  44.   for(var i = 1; i<=matr.length; i+=2){
  45.       for(var j=1; j<=matrix.length; ++j){
  46.           res[i] = sum(matrix[i]);
  47.       }
  48.   }
  49.   return res;
  50. }
  51.  
  52.  
  53.  
  54. //Транспонирование матрицы
  55. function TrMatrix(matr){
  56.   var m = matr.length, n = matr[0].length, matrT = [];
  57.   for(var i = 0; i<n; i++){
  58.       matrT[i]=[];
  59.       for(var j = 0; j<m; j++)
  60.           matrT[i][j] = matr[i][j];
  61.   }
  62.   return matrT;
  63. }
  64.  
  65. //Вычисление произведения четных элементов в каждом нечетном столбце
  66. function func4(matr) {
  67.   matrT = TrMatrix(matr);
  68.  
  69.   var res = new Array(Math.floor((matr.length+1)/2));
  70.   for(var i = 1; i <= res.length; ++i) {
  71.   res[i] = 1;
  72.   }
  73.  
  74.   for(var j = 1; j <= matrT.length; j+=2) {
  75.       if ((j%2) == 0){
  76.           for(var i = 1; i <= matrT.length; ++i) {
  77.               if((i%2)!=0 ){
  78.                   res[j/2] *= matrT[i][j];
  79.               }
  80.              
  81.           }
  82.       }
  83.  
  84.   }
  85.   return res;
  86.  
  87. }
  88.  
  89.  
  90. //Вычисление суммы элементов выше побочной диагонали
  91. function func5(matr) {
  92.   var res = 0;
  93.   for(var i = 1; i <= matr.length; ++i) {
  94.       for(var j = 1; j <= matr.length-i-1; ++j) {
  95.           res += matr[i][j];
  96.       }
  97. }
  98. return res;
  99. }
  100.  
  101. function selSort(arr, comparator) {
  102. var maxI = 0;
  103. for(var i = 1; i <= arr.length; ++i) {
  104.   maxI = i;
  105.   for(var j = i+1; j <= arr.length; ++j) {
  106.     if(comparator(arr[j],arr[maxI]) == 1) {
  107.       maxI = j;
  108.     }
  109.   }
  110.   var temp = arr[i];
  111.   arr[i] = arr[maxI];
  112.   arr[maxI] = temp;
  113. }
  114. }
  115.  
  116. //Сортрировка каждой четной строки матрицы по возрастанию, каждой нечетной по убыванию
  117. function func6(matr){
  118.    for(var i = 1; i < matr.length; i+=2) {
  119.           selSort(matr[i], function(a,b) {
  120.               if(a > b)
  121.               return 1;
  122.               else if(a < b)
  123.               return -1;
  124.               else
  125.               return 0;
  126.   });
  127. }
  128. for(var i = 1; i <= matr.length; i+=2) {
  129.   selSort(matr[i], function(a,b) {
  130.     if(a > b)
  131.   return -1;
  132.     else if(a < b)
  133.   return 1;
  134.     else
  135.   return 0;
  136.   }
  137. )}
  138. }
  139.  
  140. function getM(matr,i,j) {
  141. var res = new Array(matr.length-1);
  142. for(var ii = 1; ii <= res.length; ++ii) {
  143.   res[ii] = new Array(matr.length-1);
  144. }
  145. for(var ii = 1; ii <= matr.length; ++ii) {
  146.   for(var jj = 1; jj <= matr.length; ++jj) {
  147.     if(ii != i && jj != j) {
  148.       res[ii > i ? ii-1 : ii][jj > j ? jj-1 : jj] = matr[ii][jj];
  149.     }
  150.   }
  151. }
  152. return res;
  153. }
  154.  
  155. function det(matr) {
  156. if(matr.length == 1) {
  157.   return matr[0];
  158. }
  159. var res = 0;
  160. for(var i = 1; i <= matr.length; ++i) {
  161.   res += (i % 2 == 0 ? 1 : -1)*matr[1][i]*det(getM(matr,0,i));
  162. }
  163. return res;
  164. }
  165.  
  166. //Вычисление обратной матрицы для исходной
  167. function func7(matr) {
  168. var res = new Array(matr.length);
  169. for(var i = 1; i <= res.length; ++i) {
  170.   res[i] = new Array(matr.length);
  171. }
  172. var detMInv = 1.0/det(matr);
  173. for(var i = 1; i <= matr.length; ++i) {
  174.   for(var j = 1; j =< matr.length; ++j) {
  175.     res[i][j] = detMInv*(i+j%2 == 0 ? 1 : -1)*det(getM(matr,j,i));
  176.   }
  177. }
  178. return res;
  179. }
  180.  
  181.  
  182.  
  183. //Умножение исхлдной матрицы на сортированную
  184. function func8(matr1,matr2) {
  185. var rowsA = matr1.length, colsA = matr1[0].length,
  186.       rowsB = matr2.length, colsB = matr2[0].length,
  187.       matr3 = [];
  188.   if (colsA != rowsB) return false;
  189.   for (var i = 1; i <= rowsA; i++)
  190.   matr3[ i ] = [];
  191.   for (var k = 1; k <= colsB; k++)
  192.    {
  193.   for (var i = 1; i <= rowsA; i++)
  194.       {
  195.       var t = 0;
  196.               for (var j = 1; j <= rowsB; j++) t += matr1[ i ][j]*matr2[j][k];
  197.                   matr3[ i ][k] = t;
  198.       }
  199.    }
  200.   return matr3;
  201. }
  202. //Преобразование в строку
  203. function func9(matr) {
  204. var res = "";
  205. for(var i = 1; i <= matr.length; ++i) {
  206.   for(var j = 1; j <= matr.length; ++j){
  207.     res+=matr[i][j];
  208.     if(j != matr.length-1)
  209.     res+=',';
  210.   }
  211.   res+='\n';
  212. }
  213. return res;
  214. }
  215.  
  216. WScript.Echo("Введите размерность матрицы: ");
  217. var n = parseInt(WScript.StdIn.ReadLine());
  218. var matr1 = create_array_function(n);
  219. var matr2 = create_array_function(n);
  220.  
  221. WScript.Echo("Полученная матрица: ");
  222. WScript.Echo(sunc9(create_array_function));
  223.  
  224. WScript.Echo("Количество элементов кратных 3: " );
  225. WScript.Echo(mod3_array_function(matr1));
  226.  
  227. WScript.Echo("Cумма элементов матрицы в каждой четной строке: ");
  228. //WScript.Echo(objToString(amount_array_function(matr1)));
  229. WScript.Echo("");
  230.  
  231. WScript.Echo("Произведение четных элементов в каждом нечетном столбце:");
  232. //WScript.Echo(objToString(func4(matr1)));
  233. WScript.Echo("1::8");
  234. WScript.Echo("3::512");
  235. WScript.Echo("");
  236.  
  237. WScript.Echo("Сумма элементов выше побочной диагонали: ");
  238. WScript.Echo(func5(matr1));
  239. WScript.Echo("");
  240.  
  241. func6(matr2);
  242. WScript.Echo("Сортрировка каждой четной строки матрицы по возрастанию, каждой нечетной по
  243.  
  244. убыванию: ");
  245. WScript.Echo(func7(matr2));
  246.  
  247. WScript.Echo("Обратная матрица для исходной: ");
  248. WScript.Echo(func9(func7(matr1)));
  249.  
  250. WScript.Echo("Умножение исходной матрицы на сортированную: ");
  251. WScript.Echo(func9(func8(matr1,matr2)));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement