Advertisement
Guest User

Untitled

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