Advertisement
Viktor_Profa

Лабораторна робота №1

Oct 21st, 2024
17
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.85 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cstdlib> // Для rand() і srand()
  4. #include <ctime> // Для time()
  5.  
  6. using namespace std;
  7.  
  8. // Функція для введення або генерації масиву
  9. void initializeArray(vector<vector<int>> &array, int rows, int cols, bool randomInit) {
  10. if (randomInit) {
  11. // Ініціалізація випадковими числами
  12. srand(time(0)); // Ініціалізація генератора випадкових чисел
  13. for (int i = 0; i < rows; i++) {
  14. for (int j = 0; j < cols; j++) {
  15. array[i][j] = rand() % 21 - 10; // Числа в діапазоні від -10 до 10
  16. }
  17. }
  18. } else {
  19. // Ініціалізація з клавіатури
  20. cout << "Введіть елементи масиву (" << rows << "x" << cols << "):\n";
  21. for (int i = 0; i < rows; i++) {
  22. for (int j = 0; j < cols; j++) {
  23. cin >> array[i][j];
  24. }
  25. }
  26. }
  27. }
  28.  
  29. // Функція для виведення масиву на екран
  30. void printArray(const vector<vector<int>> &array) {
  31. for (const auto &row : array) {
  32. for (int elem : row) {
  33. cout << elem << " ";
  34. }
  35. cout << endl;
  36. }
  37. }
  38.  
  39. // Функція для перевірки рядка на умову (рівність додатних і від'ємних елементів)
  40. bool isRowBalanced(const vector<int> &row) {
  41. int positiveCount = 0, negativeCount = 0;
  42. for (int elem : row) {
  43. if (elem > 0) {
  44. positiveCount++;
  45. } else if (elem < 0) {
  46. negativeCount++;
  47. }
  48. }
  49. return positiveCount == negativeCount;
  50. }
  51.  
  52. // Функція для вставки рядків з нулів
  53. void insertZeroRows(vector<vector<int>> &array, int cols) {
  54. for (int i = 0; i < array.size(); i++) {
  55. if (isRowBalanced(array[i])) {
  56. // Вставка ряду з нулів після поточного ряду
  57. vector<int> zeroRow(cols, 0);
  58. array.insert(array.begin() + i + 1, zeroRow);
  59. i++; // Пропустити щойно вставлений рядок
  60. }
  61. }
  62. }
  63.  
  64. int main() {
  65. while (true) {
  66. int rows, cols;
  67. char choice;
  68.  
  69. // Введення кількості рядків і стовпців
  70. cout << "Введіть кількість рядків: ";
  71. cin >> rows;
  72. cout << "Введіть кількість стовпців: ";
  73. cin >> cols;
  74.  
  75. // Створення двовимірного масиву
  76. vector<vector<int>> array(rows, vector<int>(cols));
  77.  
  78. // Вибір способу ініціалізації масиву
  79. cout << "Як ви хочете ініціалізувати масив? (r - випадково, m - вручну): ";
  80. cin >> choice;
  81. bool randomInit = (choice == 'r');
  82.  
  83. // Ініціалізація масиву
  84. initializeArray(array, rows, cols, randomInit);
  85.  
  86. // Виведення початкового масиву
  87. cout << "\nПочатковий масив:\n";
  88. printArray(array);
  89.  
  90. // Вставка рядків з нулів
  91. insertZeroRows(array, cols);
  92.  
  93. // Виведення результату
  94. cout << "\nМасив після вставки рядків з нулів:\n";
  95. printArray(array);
  96.  
  97. // Запит на продовження чи завершення програми
  98. cout << "\nБажаєте продовжити? (y/n): ";
  99. char continueChoice;
  100. cin >> continueChoice;
  101. if (continueChoice != 'y') {
  102. break;
  103. }
  104. }
  105.  
  106. return 0;
  107. }
  108.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement