Username77177

Dahl-Programming-Lab8-16

Dec 4th, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.55 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. #include <cmath>
  5. #include <vector>
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10.     srand(time(0)); // Генерация сида для рандомных чисел
  11.     /*Задача 1. Сжать массив, удалив из него все элементы, модуль которых не превышает 1.
  12.     Освободившиеся в конце массива элементы заполнить нулями.*/
  13.     int *amountofelents;
  14.     while (true)
  15.     {
  16.         cout << "Введите количество элементов: ";
  17.         cin >> *amountofelents;
  18.         if (*amountofelents)
  19.             break;
  20.     }
  21.     double array[*amountofelents];
  22.     vector<float> filter; // Вектор (тип коллекции) (можно удалять и добавлять данные динамически) создан для чисел по фильтру
  23.     vector<int> indexes;  // Индексы отфильтрованных элементов в массиве
  24.     for (int i = 0; i < *amountofelents; i++)
  25.     {
  26.         double temprand = (rand() % 7 - 3);
  27.         temprand /= 2;       //? Делим на 2, чтобы получились рациональные
  28.         array[i] = temprand; // Быстрое заполнение массива [-3;3]
  29.         cout << "Элемент " << i << ":" << array[i] << endl;
  30.         if (abs(array[i]) >= 1)
  31.         {
  32.             filter.push_back(array[i]); // std::Vector.push_back() - добавить переменную в вектор
  33.             indexes.push_back(i);
  34.         } // Добавление чисел в вектор
  35.     }
  36.     cout << "Отфильтрованные элементы (индекс в массиве :: значение)" << endl;
  37.     for (int i = 0; i < filter.size(); i++) //filter.size() - длина вектора
  38.     {
  39.         cout << indexes[i] << " :: " << filter[i] << endl;
  40.     }
  41.  
  42.     /*Задача 2. В матрице Y(4×4) определите максимальный элемент.
  43.     Упорядочить строку по возрастанию, если пересекается с максимальным элементом. */
  44.  
  45.     int Y[4][4], max = 0, row; //Массив, максимальное значение, строка в которой максимальное значение, minimal in row - минимальное в строке
  46.     for (int i = 0; i < 4; i++)
  47.     {
  48.         for (int k = 0; k < 4; k++)
  49.         {
  50.             Y[i][k] = rand() % 20 + 1;
  51.             cout << Y[i][k] << " ";
  52.             if (Y[i][k] > max)
  53.             {
  54.                 max = Y[i][k]; //Наибольший элемент
  55.                 row = i;       //Строка, в которой наибольшее число
  56.             }
  57.         }
  58.         cout << "\n";
  59.     }
  60.  
  61.     //Сортировка (метод пузырька)
  62.     int temp; //Временная переменная для перестановки элементов массива местами
  63.     for (int i = 0; i < 3; i++)
  64.     {
  65.         for (int j = 0; j < 3 - i; j++)
  66.         {
  67.             if (Y[row][j] > Y[row][j + 1]) //Если следующий элемент больше, то следующий элемент меняется с данным
  68.             {
  69.                 temp = Y[row][j];
  70.                 Y[row][j] = Y[row][j + 1];
  71.                 Y[row][j + 1] = temp;
  72.             }
  73.         }
  74.     }
  75.     for (int i = 0; i < 4; i++)
  76.     {
  77.         cout << Y[row][i] << ", ";
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment