mstoyanov7

bgplugin

Oct 28th, 2021
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.60 KB | None | 0 0
  1. #include "bg.h"
  2.  
  3. матрицаОтСимволи прочетиВход(целочислено& размер) {
  4. матрицаОтСимволи матрица;
  5.  
  6. за (целочислено и = 0; и < размер; ++и) {
  7. масивОтСимволи ред;
  8. за (целочислено ж = 0; ж < размер; ++ж) {
  9. символ с;
  10. прочети >> с;
  11. ред.вкарай(с);
  12. }
  13. матрица.вкарай(ред);
  14. }
  15. върни матрица;
  16. }
  17.  
  18. масивОтСимволи открийЕлементи(матрицаОтСимволи& матрица) {
  19. масивОтСимволи елементи;
  20.  
  21. за (всеки& ред : матрица) {
  22. for (всеки& елемент : ред) {
  23. ако (намери(елементи.начало(), елементи.край(), елемент) == елементи.край() && елемент != '.') {
  24. елементи.вкарай(елемент);
  25. }
  26. }
  27. }
  28.  
  29. върни елементи;
  30. }
  31.  
  32. матрицаОтДвойки открийКоординати(матрицаОтСимволи матрица, масивОтСимволи& елементи) {
  33. матрицаОтДвойки координати;
  34. масивОтЧисла глитчнатиРедове;
  35. масивОтЧисла глитчнатиКолони;
  36.  
  37. за (всеки& елемент : елементи) {
  38. целочислено найГолямГлитчнатРед = 0;
  39. целочислено найГолямИндекс = 0;
  40. за (целочислено и = 0; и < матрица.размер(); ++и) {
  41. целочислено моментенГлитчнатРед = 0;
  42. за (целочислено ж = 0; ж < матрица.размер(); ++ж) {
  43. ако (матрица[и][ж] == елемент) {
  44. моментенГлитчнатРед++;
  45. }
  46. }
  47. if (моментенГлитчнатРед > найГолямГлитчнатРед) {
  48. найГолямГлитчнатРед = моментенГлитчнатРед;
  49. найГолямИндекс = и;
  50. }
  51. }
  52. глитчнатиРедове.вкарай(найГолямИндекс);
  53. }
  54.  
  55. за (всеки& елемент : елементи) {
  56. твърдение намерено = грешно;
  57.  
  58. за (целочислено и = 0; и < матрица.размер(); ++и) {
  59. за (целочислено ж = 0; ж < матрица.размер(); ++ж) {
  60. ако (матрица[и][ж] == елемент) {
  61. глитчнатиКолони.вкарай(ж);
  62. намерено = вярно;
  63. прекъсни;
  64. }
  65. }
  66. ако (намерено) прекъсни;
  67. }
  68. }
  69.  
  70. за (целочислено и = 0; и < глитчнатиРедове.размер(); ++и) {
  71. координати.създай_и_вкарай(глитчнатиРедове[и], глитчнатиКолони[и]);
  72. }
  73. върни координати;
  74. }
  75.  
  76. матрицаОтСимволи намериРешение(целочислено& размер, матрицаОтДвойки& координати, масивОтСимволи& елементи) {
  77. матрицаОтСимволи решение;
  78. за (целочислено и = 0; и < размер; ++и) {
  79. масивОтСимволи ред;
  80. за (целочислено ж = 0; ж < размер; ++ж) {
  81. ред.вкарай('.');
  82. }
  83. решение.вкарай(ред);
  84. }
  85.  
  86. за (целочислено и = 0; и < елементи.размер(); ++и) {
  87. решение[координати[и].първи][координати[и].втори] = елементи[и];
  88. }
  89.  
  90. върни решение;
  91. }
  92.  
  93. функция принтирайРешение(матрицаОтСимволи& решение) {
  94. принтирай << нов_ред;
  95. за (всеки& ред : решение) {
  96. за (всеки& елемент : ред) {
  97. принтирай << елемент;
  98. }
  99. принтирай << нов_ред;
  100. }
  101. }
  102.  
  103. целочислено main() {
  104. целочислено размер = 0;
  105. прочети >> размер;
  106.  
  107. матрицаОтСимволи матрица = прочетиВход(размер);
  108. масивОтСимволи елементи = открийЕлементи(матрица);
  109. матрицаОтДвойки координати = открийКоординати(матрица, елементи);
  110.  
  111. матрицаОтСимволи решение = намериРешение(размер, координати, елементи);
  112. принтирайРешение(решение);
  113. }
Advertisement
Add Comment
Please, Sign In to add comment