MainWindow.xaml.cs 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602
  1. using System;
  2. using System.Linq;
  3. using System.Windows;
  4. using System.Windows.Controls;
  5. using System.Windows.Controls.Primitives;
  6. using System.Windows.Input;
  7. using System.Windows.Media;
  8. using System.Windows.Media.Animation;
  9. namespace MatrixXAMLOnly
  10. {
  11. /// <summary>
  12. /// Interaction logic for MainWindow.xaml
  13. /// </summary>
  14. public partial class MainWindow : Window
  15. {
  16. Operation operation;
  17. public MainWindow()
  18. {
  19. InitializeComponent();
  20. operation = Operation.NoChosen;
  21. BtnAddition.Content = "Сложение матрицы";
  22. BtnDifference.Content = "Вычитание матрицы";
  23. BtnMultiplicationOnScalar.Content = "Умножение матрицы \nна скаляр";
  24. BtnTransposition.Content = "Транспонирование матрицы";
  25. BtnMultiplicationOnTransposed.Content = "Умножение матрицы на её \nтранспонированную матрицу";
  26. BtnRowsReplace.Content = "Перестановка строк";
  27. BtnRowsReplaceOnTranspositionVector.Content = "Перестановка строк согласно \nвектору транспозиции";
  28. BtnInverse.Content = "Обратная матрицы";
  29. }
  30. private void BtnHamburgerMenu_Click(object sender, RoutedEventArgs e)
  31. {
  32. DoubleAnimation menuAnimation = new DoubleAnimation();
  33. menuAnimation.From = CurtainMenu.ActualWidth;
  34. menuAnimation.DecelerationRatio = 1.0;
  35. if (menuAnimation.From == 250)
  36. {
  37. menuAnimation.To = 0;
  38. menuAnimation.Duration = TimeSpan.FromSeconds(0.2);
  39. }
  40. else
  41. {
  42. menuAnimation.To = 250;
  43. menuAnimation.Duration = TimeSpan.FromSeconds(0.2);
  44. }
  45. CurtainMenu.BeginAnimation(WidthProperty, menuAnimation);
  46. }
  47. private Grid CreateMatrix(int a, int b, bool isOnlyRead)
  48. {
  49. Grid matrixGrid = new Grid();
  50. matrixGrid.Margin = new Thickness(25, 75, 25, 75);
  51. // Добавление колонок
  52. for (int i = 0; i < b; i++)
  53. {
  54. matrixGrid.ColumnDefinitions.Add(new ColumnDefinition());
  55. }
  56. // Добавление строк
  57. for (int j = 0; j < a; j++)
  58. {
  59. matrixGrid.RowDefinitions.Add(new RowDefinition());
  60. }
  61. // Добавление TextBox'ов
  62. int tabCounter = 1;
  63. for (int i = 0; i < a; i++)
  64. {
  65. for (int j = 0; j < b; j++)
  66. {
  67. TextBox textBox = new TextBox()
  68. {
  69. HorizontalContentAlignment = HorizontalAlignment.Center,
  70. VerticalContentAlignment = VerticalAlignment.Center,
  71. TabIndex = tabCounter
  72. };
  73. if (isOnlyRead)
  74. {
  75. textBox.IsReadOnly = true;
  76. }
  77. tabCounter++;
  78. textBox.KeyDown += TextBox_KeyDown;
  79. Grid.SetColumn(textBox, j);
  80. Grid.SetRow(textBox, i);
  81. matrixGrid.Children.Add(textBox);
  82. }
  83. }
  84. return matrixGrid;
  85. }
  86. private void TextBox_KeyDown(object sender, KeyEventArgs e)
  87. {
  88. if (e.Key == Key.W ||
  89. e.Key == Key.A ||
  90. e.Key == Key.S ||
  91. e.Key == Key.D ||
  92. e.Key == Key.Tab)
  93. {
  94. e.Handled = true;
  95. FocusOnNext((TextBox)sender, e.Key);
  96. return;
  97. }
  98. if (e.Key != Key.NumPad0 && e.Key != Key.D0 &&
  99. e.Key != Key.NumPad1 && e.Key != Key.D1 &&
  100. e.Key != Key.NumPad2 && e.Key != Key.D2 &&
  101. e.Key != Key.NumPad3 && e.Key != Key.D3 &&
  102. e.Key != Key.NumPad4 && e.Key != Key.D4 &&
  103. e.Key != Key.NumPad5 && e.Key != Key.D5 &&
  104. e.Key != Key.NumPad6 && e.Key != Key.D6 &&
  105. e.Key != Key.NumPad7 && e.Key != Key.D7 &&
  106. e.Key != Key.NumPad8 && e.Key != Key.D8 &&
  107. e.Key != Key.NumPad9 && e.Key != Key.D9)
  108. {
  109. e.Handled = true;
  110. }
  111. }
  112. private void FocusOnNext(TextBox tb, Key KeyArg)
  113. {
  114. Grid matrixGrid = (Grid)tb.Parent;
  115. int columns = matrixGrid.ColumnDefinitions.Count;
  116. int rows = matrixGrid.RowDefinitions.Count;
  117. int element = tb.TabIndex;
  118. if (((int)KeyArg) == 40 || KeyArg == Key.S)
  119. {
  120. element += columns;
  121. }
  122. else if ((int)KeyArg == 38 || KeyArg == Key.W)
  123. {
  124. element -= columns;
  125. }
  126. else if ((int)KeyArg == 37 || KeyArg == Key.A)
  127. {
  128. element -= 1;
  129. }
  130. else if ((int)KeyArg == 39 || KeyArg == Key.D || KeyArg == Key.Tab)
  131. {
  132. element += 1;
  133. }
  134. else
  135. {
  136. return;
  137. }
  138. int counter = 0;
  139. for (int i = 0; i < rows; i++)
  140. {
  141. for (int j = 0; j < columns; j++)
  142. {
  143. counter++;
  144. if (element == counter)
  145. {
  146. matrixGrid.Children.Cast<TextBox>().First(e => Grid.GetColumn(e) == j && Grid.GetRow(e) == i).Focus();
  147. }
  148. }
  149. }
  150. }
  151. #region HumburgerMenuItems
  152. private void BtnAddition_Click(object sender, RoutedEventArgs e)
  153. {
  154. GridContentAddition.Visibility = Visibility.Visible;
  155. GridContentDifference.Visibility = Visibility.Collapsed;
  156. GridContentMultiplication.Visibility = Visibility.Collapsed;
  157. GridContentMultiplicationOnTransposed.Visibility = Visibility.Collapsed;
  158. GridContentRowsReplace.Visibility = Visibility.Collapsed;
  159. GridContentTranspose.Visibility = Visibility.Collapsed;
  160. // GridContentRowReplaceOnTranspositionVector;
  161. // GridContentInverse;
  162. GridAdditionFrstTerm.Children.Add(CreateMatrix(5, 5, false));
  163. GridAdditionScndTerm.Children.Add(CreateMatrix(5, 5, false));
  164. GridAdditionResult.Children.Add(CreateMatrix(5, 5, true));
  165. }
  166. private void BtnDifference_Click(object sender, RoutedEventArgs e)
  167. {
  168. GridContentAddition.Visibility = Visibility.Collapsed;
  169. GridContentDifference.Visibility = Visibility.Visible;
  170. GridContentMultiplication.Visibility = Visibility.Collapsed;
  171. GridContentMultiplicationOnTransposed.Visibility = Visibility.Collapsed;
  172. GridContentRowsReplace.Visibility = Visibility.Collapsed;
  173. GridContentTranspose.Visibility = Visibility.Collapsed;
  174. // GridContentRowReplaceOnTranspositionVector;
  175. // GridContentInverse;
  176. GridDifferenceFrstTerm.Children.Add(CreateMatrix(5, 5, false));
  177. GridDifferenceScndTerm.Children.Add(CreateMatrix(5, 5, false));
  178. GridDifferenceResult.Children.Add(CreateMatrix(5, 5, true));
  179. }
  180. private void BtnMultiplicationOnScalar_Click(object sender, RoutedEventArgs e)
  181. {
  182. GridContentAddition.Visibility = Visibility.Collapsed;
  183. GridContentDifference.Visibility = Visibility.Collapsed;
  184. GridContentMultiplication.Visibility = Visibility.Visible;
  185. GridContentMultiplicationOnTransposed.Visibility = Visibility.Collapsed;
  186. GridContentRowsReplace.Visibility = Visibility.Collapsed;
  187. GridContentTranspose.Visibility = Visibility.Collapsed;
  188. // GridContentRowReplaceOnTranspositionVector;
  189. // GridContentInverse;
  190. GridMultiplicationOnScalarFrstTerm.Children.Add(CreateMatrix(5, 5, false));
  191. GridMultiplicationOnScalarResult.Children.Add(CreateMatrix(5, 5, true));
  192. }
  193. private void BtnTransposition_Click(object sender, RoutedEventArgs e)
  194. {
  195. GridContentAddition.Visibility = Visibility.Collapsed;
  196. GridContentDifference.Visibility = Visibility.Collapsed;
  197. GridContentMultiplication.Visibility = Visibility.Collapsed;
  198. GridContentMultiplicationOnTransposed.Visibility = Visibility.Collapsed;
  199. GridContentRowsReplace.Visibility = Visibility.Collapsed;
  200. GridContentTranspose.Visibility = Visibility.Visible;
  201. // GridContentRowReplaceOnTranspositionVector;
  202. // GridContentInverse;
  203. GridTransposeFrom.Children.Add(CreateMatrix(3, 5, false));
  204. GridTransposed.Children.Add(CreateMatrix(5, 3, true));
  205. }
  206. private void BtnMultiplicationOnTransposed_Click(object sender, RoutedEventArgs e)
  207. {
  208. GridContentAddition.Visibility = Visibility.Collapsed;
  209. GridContentDifference.Visibility = Visibility.Collapsed;
  210. GridContentMultiplication.Visibility = Visibility.Collapsed;
  211. GridContentMultiplicationOnTransposed.Visibility = Visibility.Visible;
  212. GridContentRowsReplace.Visibility = Visibility.Collapsed;
  213. GridContentTranspose.Visibility = Visibility.Collapsed;
  214. // GridContentRowReplaceOnTranspositionVector;
  215. // GridContentInverse;
  216. }
  217. private void BtnRowsReplace_Click(object sender, RoutedEventArgs e)
  218. {
  219. GridContentAddition.Visibility = Visibility.Collapsed;
  220. GridContentDifference.Visibility = Visibility.Collapsed;
  221. GridContentMultiplication.Visibility = Visibility.Collapsed;
  222. GridContentMultiplicationOnTransposed.Visibility = Visibility.Collapsed;
  223. GridContentRowsReplace.Visibility = Visibility.Visible;
  224. GridContentTranspose.Visibility = Visibility.Collapsed;
  225. // GridContentRowReplaceOnTranspositionVector;
  226. // GridContentInverse;
  227. GridTransposeFrom.Children.Add(CreateMatrix(3, 5, false));
  228. GridTransposed.Children.Add(CreateMatrix(5, 3, true));
  229. }
  230. private void BtnInverse_Click(object sender, RoutedEventArgs e)
  231. {
  232. GridContentAddition.Visibility = Visibility.Collapsed;
  233. GridContentDifference.Visibility = Visibility.Collapsed;
  234. GridContentMultiplication.Visibility = Visibility.Collapsed;
  235. GridContentMultiplicationOnTransposed.Visibility = Visibility.Collapsed;
  236. GridContentRowsReplace.Visibility = Visibility.Collapsed;
  237. GridContentTranspose.Visibility = Visibility.Collapsed;
  238. // GridContentRowReplaceOnTranspositionVector;
  239. // GridContentInverse;
  240. }
  241. private void BtnRowsReplaceOnTranspositionVector_Click(object sender, RoutedEventArgs e)
  242. {
  243. GridContentAddition.Visibility = Visibility.Collapsed;
  244. GridContentDifference.Visibility = Visibility.Collapsed;
  245. GridContentMultiplication.Visibility = Visibility.Collapsed;
  246. GridContentMultiplicationOnTransposed.Visibility = Visibility.Collapsed;
  247. GridContentRowsReplace.Visibility = Visibility.Collapsed;
  248. GridContentTranspose.Visibility = Visibility.Collapsed;
  249. // GridContentRowReplaceOnTranspositionVector;
  250. // GridContentInverse;
  251. }
  252. #endregion
  253. #region Addition
  254. private void BtnAdditionCalculate_Click(object sender, RoutedEventArgs e)
  255. {
  256. int rowCount = GridAdditionResult.RowDefinitions.Count;
  257. int columnCount = GridAdditionResult.ColumnDefinitions.Count;
  258. double[,] frstTerm = new double[rowCount, columnCount];
  259. double[,] scndTerm = new double[rowCount, columnCount];
  260. for (int i = 0; i < rowCount; i++)
  261. {
  262. for (int j = 0; j < columnCount; j++)
  263. {
  264. try
  265. {
  266. frstTerm[i, j] = Convert.ToDouble(((Grid)GridAdditionFrstTerm.Children[0]).Children.Cast<TextBox>().First(e => Grid.GetColumn(e) == j && Grid.GetRow(e) == i).Text);
  267. scndTerm[i, j] = Convert.ToDouble(((Grid)GridAdditionScndTerm.Children[0]).Children.Cast<TextBox>().First(e => Grid.GetColumn(e) == j && Grid.GetRow(e) == i).Text);
  268. }
  269. catch
  270. {
  271. MessageBox.Show("Матрица указана некорректно!");
  272. }
  273. }
  274. }
  275. double[,] result = new double[rowCount, columnCount];
  276. for (int i = 0; i < rowCount; i++)
  277. {
  278. for (int j = 0; j < columnCount; j++)
  279. {
  280. ((TextBox)((Grid)GridAdditionResult.Children[0]).Children[(i * columnCount) + j]).Text = result[i, j].ToString();
  281. }
  282. }
  283. }
  284. private void BtnAddtitionCreateMatrix_Click(object sender, RoutedEventArgs e)
  285. {
  286. int rowCount = 0;
  287. int columnCount = 0;
  288. try
  289. {
  290. rowCount = Convert.ToInt32(TextBoxAdditionRowCount.Text);
  291. columnCount = Convert.ToInt32(TextBoxAdditionColumnCount.Text);
  292. }
  293. catch
  294. {
  295. MessageBox.Show("Количество строк/столбцов указано некорректно!");
  296. }
  297. GridAdditionFrstTerm.Children.Clear();
  298. GridAdditionScndTerm.Children.Clear();
  299. GridAdditionResult.Children.Clear();
  300. GridAdditionFrstTerm.Children.Add(CreateMatrix(rowCount, columnCount, false));
  301. GridAdditionScndTerm.Children.Add(CreateMatrix(rowCount, columnCount, false));
  302. GridAdditionResult.Children.Add(CreateMatrix(rowCount, columnCount, true));
  303. }
  304. #endregion
  305. #region Difference
  306. private void BtnDifferenceCreateMatrix_Click(object sender, RoutedEventArgs e)
  307. {
  308. int rowCount = 0;
  309. int columnCount = 0;
  310. try
  311. {
  312. rowCount = Convert.ToInt32(TextBoxDifferenceRowCount.Text);
  313. columnCount = Convert.ToInt32(TextBoxDifferenceColumnCount.Text);
  314. }
  315. catch
  316. {
  317. MessageBox.Show("Количество строк/столбцов указано некорректно!");
  318. }
  319. GridDifferenceFrstTerm.Children.Clear();
  320. GridDifferenceScndTerm.Children.Clear();
  321. GridDifferenceResult.Children.Clear();
  322. GridDifferenceFrstTerm.Children.Add(CreateMatrix(rowCount, columnCount, false));
  323. GridDifferenceScndTerm.Children.Add(CreateMatrix(rowCount, columnCount, false));
  324. GridDifferenceResult.Children.Add(CreateMatrix(rowCount, columnCount, true));
  325. }
  326. private void BtnDifferenceCalculate_Click(object sender, RoutedEventArgs e)
  327. {
  328. int rowCount = GridDifferenceResult.RowDefinitions.Count;
  329. int columnCount = GridDifferenceResult.ColumnDefinitions.Count;
  330. double[,] frstTerm = new double[rowCount, columnCount];
  331. double[,] scndTerm = new double[rowCount, columnCount];
  332. for (int i = 0; i < rowCount; i++)
  333. {
  334. for (int j = 0; j < columnCount; j++)
  335. {
  336. try
  337. {
  338. frstTerm[i, j] = Convert.ToDouble(((Grid)GridDifferenceFrstTerm.Children[0]).Children.Cast<TextBox>().First(e => Grid.GetColumn(e) == j && Grid.GetRow(e) == i).Text);
  339. scndTerm[i, j] = Convert.ToDouble(((Grid)GridDifferenceScndTerm.Children[0]).Children.Cast<TextBox>().First(e => Grid.GetColumn(e) == j && Grid.GetRow(e) == i).Text);
  340. }
  341. catch
  342. {
  343. MessageBox.Show("Матрица указана некорректно!");
  344. }
  345. }
  346. }
  347. double[,] result = new double[rowCount, columnCount];
  348. for (int i = 0; i < rowCount; i++)
  349. {
  350. for (int j = 0; j < columnCount; j++)
  351. {
  352. ((TextBox)((Grid)GridDifferenceResult.Children[0]).Children[(i * columnCount) + j]).Text = result[i, j].ToString();
  353. }
  354. }
  355. }
  356. #endregion
  357. #region MultiplicationOnScalar
  358. private void BtnMultiplicationOnScalarCreateMatrix_Click(object sender, RoutedEventArgs e)
  359. {
  360. int rowCount = 0;
  361. int columnCount = 0;
  362. try
  363. {
  364. rowCount = Convert.ToInt32(TextBoxMultiplicationOnScalarRowCount.Text);
  365. columnCount = Convert.ToInt32(TextBoxMultiplicationOnScalarColumnCount.Text);
  366. }
  367. catch
  368. {
  369. MessageBox.Show("Количество строк/столбцов указано некорректно!");
  370. }
  371. GridMultiplicationOnScalarFrstTerm.Children.Clear();
  372. TextBoxMultiplicationOnScalarScndTerm.Text = "";
  373. GridMultiplicationOnScalarResult.Children.Clear();
  374. GridMultiplicationOnScalarFrstTerm.Children.Add(CreateMatrix(rowCount, columnCount, false));
  375. GridMultiplicationOnScalarResult.Children.Add(CreateMatrix(rowCount, columnCount, true));
  376. }
  377. private void BtnMultiplicationOnScalarCalculate_Click(object sender, RoutedEventArgs e)
  378. {
  379. int rowCount = GridMultiplicationOnScalarResult.RowDefinitions.Count;
  380. int columnCount = GridMultiplicationOnScalarResult.ColumnDefinitions.Count;
  381. double[,] frstTerm = new double[rowCount, columnCount];
  382. try
  383. {
  384. double scndTerm = Convert.ToDouble(TextBoxMultiplicationOnScalarScndTerm.Text);
  385. }
  386. catch
  387. {
  388. MessageBox.Show("Скалярная величина указана некорректно!");
  389. }
  390. for (int i = 0; i < rowCount; i++)
  391. {
  392. for (int j = 0; j < columnCount; j++)
  393. {
  394. try
  395. {
  396. frstTerm[i, j] = Convert.ToDouble(((Grid)GridMultiplicationOnScalarFrstTerm.Children[0]).Children.Cast<TextBox>().First(e => Grid.GetColumn(e) == j && Grid.GetRow(e) == i).Text);
  397. }
  398. catch
  399. {
  400. MessageBox.Show("Матрица указана некорректно!");
  401. }
  402. }
  403. }
  404. double[,] result = new double[rowCount, columnCount];
  405. for (int i = 0; i < rowCount; i++)
  406. {
  407. for (int j = 0; j < columnCount; j++)
  408. {
  409. ((TextBox)((Grid)GridMultiplicationOnScalarResult.Children[0]).Children[(i * columnCount) + j]).Text = result[i, j].ToString();
  410. }
  411. }
  412. }
  413. #endregion
  414. #region Transposition
  415. private void BtnTranspositionCreateMatrix_Click(object sender, RoutedEventArgs e)
  416. {
  417. int rowCount = 0;
  418. int columnCount = 0;
  419. try
  420. {
  421. rowCount = Convert.ToInt32(TextBoxTranspositionRowCount.Text);
  422. columnCount = Convert.ToInt32(TextBoxTranspositionColumnCount.Text);
  423. }
  424. catch
  425. {
  426. MessageBox.Show("Количество строк/столбцов указано некорректно!");
  427. }
  428. GridTransposeFrom.Children.Clear();
  429. GridTransposed.Children.Clear();
  430. GridTransposeFrom.Children.Add(CreateMatrix(rowCount, columnCount, false));
  431. GridTransposed.Children.Add(CreateMatrix(columnCount, rowCount, true));
  432. }
  433. private void BtnTranspositionCalculate_Click(object sender, RoutedEventArgs e)
  434. {
  435. int rowCount = GridTransposeFrom.RowDefinitions.Count;
  436. int columnCount = GridTransposeFrom.ColumnDefinitions.Count;
  437. double[,] frstTerm = new double[rowCount, columnCount];
  438. for (int i = 0; i < rowCount; i++)
  439. {
  440. for (int j = 0; j < columnCount; j++)
  441. {
  442. try
  443. {
  444. frstTerm[i, j] = Convert.ToDouble(((Grid)GridTransposeFrom.Children[0]).Children.Cast<TextBox>().First(e => Grid.GetColumn(e) == j && Grid.GetRow(e) == i).Text);
  445. }
  446. catch
  447. {
  448. MessageBox.Show("Матрица указана некорректно!");
  449. }
  450. }
  451. }
  452. double[,] result = new double[columnCount, rowCount];
  453. for (int i = 0; i < columnCount; i++)
  454. {
  455. for (int j = 0; j < rowCount; j++)
  456. {
  457. ((TextBox)((Grid)GridTransposed.Children[0]).Children[(i * rowCount) + j]).Text = result[i, j].ToString();
  458. }
  459. }
  460. }
  461. #endregion
  462. #region MultiplicationOnTransposed
  463. private void BtnMultiplicationOnTransposedCreateMatrix_Click(object sender, RoutedEventArgs e)
  464. {
  465. int rowCount = 0;
  466. int columnCount = 0;
  467. try
  468. {
  469. rowCount = Convert.ToInt32(TextBoxMultiplicationOnTransposedRowCount.Text);
  470. columnCount = Convert.ToInt32(TextBoxMultiplicationOnTransposedColumnCount.Text);
  471. }
  472. catch
  473. {
  474. MessageBox.Show("Количество строк/столбцов указано некорректно!");
  475. }
  476. GridMultiplicationOnTransposedTerm.Children.Clear();
  477. GridMultiplicationOnTransposedResult.Children.Clear();
  478. GridMultiplicationOnTransposedTerm.Children.Add(CreateMatrix(rowCount, columnCount, false));
  479. GridMultiplicationOnTransposedResult.Children.Add(CreateMatrix(columnCount, rowCount, true));
  480. }
  481. private void BtnMultiplicationOnTransposedCalculate_Click(object sender, RoutedEventArgs e)
  482. {
  483. // TODO: отредачить всё по феншую, тут траблы одновременно и с транспонирование и с умножение матрицы на матрицу (нужно с размера угадать)
  484. int rowCount = GridMultiplicationOnTransposedTerm.RowDefinitions.Count;
  485. int columnCount = GridTransposeFrom.ColumnDefinitions.Count;
  486. double[,] frstTerm = new double[rowCount, columnCount];
  487. for (int i = 0; i < rowCount; i++)
  488. {
  489. for (int j = 0; j < columnCount; j++)
  490. {
  491. try
  492. {
  493. frstTerm[i, j] = Convert.ToDouble(((Grid)GridTransposeFrom.Children[0]).Children.Cast<TextBox>().First(e => Grid.GetColumn(e) == j && Grid.GetRow(e) == i).Text);
  494. }
  495. catch
  496. {
  497. MessageBox.Show("Матрица указана некорректно!");
  498. }
  499. }
  500. }
  501. double[,] result = new double[columnCount, rowCount];
  502. for (int i = 0; i < columnCount; i++)
  503. {
  504. for (int j = 0; j < rowCount; j++)
  505. {
  506. ((TextBox)((Grid)GridTransposed.Children[0]).Children[(i * rowCount) + j]).Text = result[i, j].ToString();
  507. }
  508. }
  509. }
  510. #endregion
  511. #region Inverse
  512. #endregion
  513. }
  514. enum Operation
  515. {
  516. Addition,
  517. Difference,
  518. MultiplicationOnScalar,
  519. Transposition,
  520. MultiplicationOnTransposed,
  521. RowReplace,
  522. RowReplaceOnTranspositionVector,
  523. Inverse,
  524. NoChosen
  525. }
  526. }