Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.21 KB | None | 0 0
  1. //var_18
  2. // 1) Дан массив y0, y1, y2,…, yn-1. Определить сумму значений элементов
  3. // массива с чётными номерами, лежащих между элементом с минимальным
  4. // положительным значением и элементом с номером n/2.
  5. // 2) В заданной квадратной матрице размера 2n*2n поменять местами значения
  6. // элементов строк области 8 и элементов столбцов области 6 с одинаковыми номерами.
  7.  
  8. #include <iostream>
  9. #include <stdlib.h>
  10. #include <locale.h>
  11. #include <locale>
  12. #include <algorithm>
  13.  
  14. using namespace std;
  15. typedef int telem; // определение типа элементов массива
  16. typedef telem *tmas, **tmatr; // определение типа массивов
  17.  
  18. void i_mas(tmas, int &); // функция заполнения массива
  19. void o_mas(tmas, int); // функция вывода массива
  20. int min_ind(tmas, int); // поиск индекса элемента массива с миинимальным положительным значением
  21. telem sum_mas(tmas, int, int); // поиск суммы элементов массива с четными индексами
  22.  
  23. void i_matr(tmatr, int &); // функция заполнения матрицы
  24. void o_matr(tmatr, int); // функция вывода матрицы
  25. void izm_matr(tmatr, int); // функция изменения матрицы
  26.  
  27. int main() {
  28. setlocale(LC_ALL, "Russian");
  29. tmas y; // массив
  30. tmatr a; // матрица
  31. int n, i_min; // размер массива, индекс элемента с min полож значением
  32. telem sum; // сумма
  33. // ********************* Одномерный массив ***********************
  34. // Ввод размера массива
  35. cout << "\n Введете размер массива: ";
  36. cin >> n;
  37.  
  38. // Контроль ввода размера массива
  39. if (n <= 0) {
  40. cout << "\n Введено недопустимое значение размера массива" << endl;
  41. return 1;
  42. }
  43. y = new int[n];
  44. // Заполнение исходного массива
  45. i_mas(y, n);
  46.  
  47. // Вывод исходного массива
  48. cout << "\n Исходный массив:" << endl;
  49. o_mas(y, n);
  50.  
  51. // Нахождение элемента с минимальным положительным значением
  52. i_min = min_ind(y, n);
  53.  
  54. cout << "\n\n Индекс минимального = " << i_min << endl;
  55.  
  56. // Нахождение суммы элементов
  57. sum = sum_mas(y, n, i_min);
  58. cout << "\n\n Сумма = " << sum << endl;
  59. delete[] y;
  60.  
  61. // *********************************************************************
  62. // *********************** Двумерный массив **************************
  63. cout << "\n Введите половину размера матрицы: ";
  64. cin >> n;
  65. a = new int *[2 * n];
  66. for (int i = 0; i < 2 * n; i++)
  67. a[i] = new int[2 * n];
  68.  
  69. // Заполнение матрицы
  70. i_matr(a, n);
  71.  
  72. // Вывод матрицы
  73. cout << "\n Введенная матрица:" << endl;
  74. o_matr(a, n);
  75.  
  76. // Изменение матрицы
  77. cout << "\n Измененная матрица:" << endl;
  78. izm_matr(a, n);
  79. o_matr(a, n);
  80.  
  81. // for (int i = 0; i < 2 * n; i++)
  82. delete a;
  83.  
  84. return 0;
  85. }
  86.  
  87. void i_mas(tmas y, int &n) {
  88. cout << "\n Введите в одной строке элементы массива, " << endl;
  89. cout << " состоящего из " << n << " чисел, и нажмите <Enter>" << endl;
  90. for (int i = 0; i < n; i++)
  91. cin >> y[i];
  92. }
  93.  
  94. void o_mas(tmas y, int n) {
  95. for (int i = 0; i < n; i++) {
  96. cout.width(4); // ширина поля для вывода значения элемента массива
  97. cout << y[i] << " ";
  98. }
  99. }
  100.  
  101. int min_ind(tmas y, int n) {
  102. int mini = 0, flag = 0; // факт наличия полож. элемента
  103. // Ищем первый полож. элемент
  104. for (int i = 0; i < n; i++)
  105. if (y[i] > 0) {
  106. mini = i;
  107. flag = 1;
  108. break;
  109. }
  110. if (flag == 1) {
  111. for (int i = mini + 1; i < n; i++)
  112. if (y[i] > 0 && y[i] < y[mini]) mini = i;
  113. } else {
  114. cout << "\n\n Положительных элементов в массиве нет";
  115. exit(3); // прекращение исполнения программы
  116. }
  117. return mini;
  118. }
  119.  
  120. telem sum_mas(tmas y, int n, int i_min) {
  121. telem sum = 0;
  122. if (i_min < (n / 2)) {
  123. for (int i = i_min; i < n / 2; i++) {
  124. if (i % 2 == 0)
  125. sum += y[i];
  126. }
  127. } else {
  128. for (int i = i_min; i > n / 2; i--) {
  129. if (i % 2 == 0)
  130. sum += y[i];
  131. }
  132. }
  133. return sum;
  134. }
  135.  
  136. void i_matr(tmatr a, int &n) {
  137. cout << " Введите построчно через пробел элементы" << endl;
  138. cout << " матрицы размера " << 2 * n << "x" << 2 * n << endl;
  139. cout << " После ввода строки нажимайте <Enter>" << endl;
  140.  
  141. for (int i = 0; i < 2 * n; i++)
  142. for (int j = 0; j < 2 * n; j++)
  143. cin >> a[i][j];
  144. }
  145.  
  146. void o_matr(tmatr a, int n) {
  147. for (int i = 0; i < 2 * n; i++) {
  148. for (int j = 0; j < 2 * n; j++) {
  149. cout.width(3);
  150. cout << a[i][j];
  151. }
  152. cout << endl;
  153. }
  154. }
  155.  
  156. void izm_matr(tmatr a, int n) {
  157. telem t; // временная переменная
  158. int j;
  159. // cout << "n " << n << endl;
  160. for (int i = 0; i < n; i++) {
  161. j = 0;
  162. while (j != i + 1) {
  163. // cout << i << " " << j << " " << j+n << endl;
  164. swap(a[i][j], a[j + n][i]);
  165. j++;
  166. }
  167. }
  168. }
  169.  
  170. /*
  171. 0 1 3 2
  172. 1 2 3 3
  173. 1 2 3 3
  174. 1 2 3 4
  175.  
  176.  
  177. [0][0], (+3)
  178. [1][0], [1][1] (+2)
  179. [2][1], [3][1]
  180. [3][0]
  181. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement