ChameL1oN

Лаба5_Задача3(Вар.1)

Dec 16th, 2014
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. // Аитов Ильяс
  2. // Мех-Мат ФИТ-1,2 2014г.
  3. // Лабораторная работа №5 Задача 3 Вариант 1.
  4. // Постановка задачи :
  5. // 1) Сформировать динамический двумерный массив, заполнить его случайными числами и вывести на печать.
  6. // 2) Добавить заданный одномерный массив после всех строк, начинающихся на отрицательное значение и вывести на печать.
  7.  
  8.  
  9.  
  10. // Взял рандомные числа в пределах от -250 до 250
  11.  
  12.  
  13.  
  14. #include <iostream>
  15. #include <fstream>
  16. #include <locale>
  17. #include <time.h>
  18. #include <iomanip>
  19.  
  20.  
  21. using namespace std;
  22.  
  23.  
  24.  
  25. void Print_Matr(int** matr, int n, int m){ //Функция для печати матрицы
  26. int i = 0, j = 0;
  27. while (j < m){
  28. while (i < n){
  29. cout << setw(6) << matr[i][j] << " ";
  30. i++;
  31. }
  32. i = 0;
  33. cout << endl;
  34. j++;
  35. }
  36. }
  37.  
  38. int* form_mas(int count){
  39. int* massive = new int[count];
  40. int a = 0;
  41.  
  42. while (a < count){
  43. massive[a] = rand() % 500 - 250;
  44. a++;
  45. }
  46. return massive;
  47. }
  48.  
  49. int** form_matr(int n, int m)
  50. {
  51. int **matr = new int*[n]; //выделение памяти под массив указателей
  52. for (int i = 0; i < n; i++){
  53.  
  54. matr[i] = form_mas(m);
  55. }
  56. return matr;//возвращаем указатель на массив указателей
  57. }
  58.  
  59. void dobav_str(int** matr, int n, int m){
  60. // Добавить заданный одномерный массив после всех строк, начинающихся на отрицательное значение
  61. int m_new = m,i=0,j=0,a=0,k=0,b=0;
  62. int* zadan_mas = new int[n];
  63. for (j = 0; j < n; j++){ // Формируем "заданный массив"
  64. cout << "Введите [" << j << "] элемент для заданного массива" << endl;
  65. cin >> zadan_mas[j];
  66. }
  67. cout << endl;
  68. cout << endl;
  69. if (m % 2 == 0){
  70. while (i < m/2+b){
  71. if (matr[0][i] < 0){
  72. b++;
  73. k = m;
  74. while (k > i + 1){
  75. for (j = 0; j < n; j++){
  76. matr[j][k] = matr[j][k - 1];
  77. }
  78. k--;
  79. }
  80. for (j = 0; j < n; j++){
  81. matr[j][i + 1] = zadan_mas[j];
  82. }
  83.  
  84. }
  85.  
  86. i++;
  87. }
  88. }
  89. else{
  90. while (i < m/2+b){
  91. if (matr[0][i] < 0){
  92. b++;
  93. k = m;
  94. while (k > i + 1){
  95. for (j = 0; j < n; j++){
  96. matr[j][k] = matr[j][k - 1];
  97. }
  98. k--;
  99. }
  100. for (j = 0; j < n; j++){
  101. matr[j][i + 1] = zadan_mas[j];
  102. }
  103.  
  104. }
  105.  
  106. i++;
  107. }
  108.  
  109. }
  110.  
  111.  
  112. j = 0;
  113. i = 0;
  114. cout << endl;
  115. cout << "Матрица после обработки : " << endl;
  116. cout << endl;
  117. Print_Matr(matr, n, m/2+b);
  118.  
  119. }
  120.  
  121.  
  122. void main()
  123. {
  124. int n, m, i = 0, j = 0;
  125. setlocale(LC_ALL, "rus");
  126. cout << "Введите кол-во столбцов в двумерном массиве" << endl;
  127. cin >> n;
  128. cout << "Введите кол-во строк в двумерном массиве" << endl;
  129. cin >> m;
  130. time_t t;
  131. srand((unsigned)time(&t));
  132. int** matr = form_matr(n, m*2);
  133. cout << "Исходная матрица : " << endl;
  134. Print_Matr(matr, n, m);
  135. dobav_str(matr,n,m*2);
  136. }
Advertisement
Add Comment
Please, Sign In to add comment