C/C++

Функции и массивы в С++

2.1 Используя функции, сформировать с помощью ДСЧ одномерный массив и вывести его на печать. (Отсортировать по возрастанию только те элементы массива, которые являются простыми числами.)
2.2 Выполнить обработку одномерного массива в соответствии с вариантом, используя функции, результат вывести на печать.
2.3 Используя функции, сформировать с помощью ДСЧ двумерный массив и
вывести его на печать. (Все четные строки матрицы сдвинуть циклически на К элементов вправо.)
2.4 Выполнить обработку двумерного массива в соответствии с вариантом, используя функции, результат вывести на печать.
2.1 и 2.2:

#include <iostream>
using namespace std;

bool is_simple(int x) //проверка на простоту
{
if (x < 2) return false;
for (int i = 2; i <= x / 2; i++)
if (!(x % i)) return false;
return true;
}
void fill(int* array, uint16_t size) //заполнить массив
{
srand(time(nullptr));
for (uint16_t i = 0; i < size; i++) array[i] = rand() % 101;
}
void print(int* array, uint16_t size) //печать элементов массива
{
for (uint16_t i = 0; i < size; i++) cout << array[i] << " "; cout << "\n";
}
void sort(int* array, uint16_t size) //сортировка
{
bool chk;
int simples[100], sim_size = 0; //строим индексы простых чисел
for (uint16_t i=0;i<size;i++)
if (is_simple(array[i]))
{
simples[sim_size] = i; sim_size++;
}
if (sim_size <= 1) return; //ничего не сортировать если простых числел нет или оно единственное.

do {
chk = false;
for (uint16_t i = 1; i < sim_size; i++) //сортируем простые числа используя массив их индексов
if (array[simples[i-1]] > array[simples[i]])
{
swap(array[simples[i - 1]],array[simples[i]]); chk = true;
}
sim_size--;
} while (chk); //продолжать цикл сортировки пока были перестановки
}
int main()
{
setlocale(0,"");
int A[100]{};
uint16_t n;
cout << "Введите размер массива: \n";
cin >> n;
if (n > 100) { cout << "Ошибка\n"; return 1; }
fill(A, n);
print(A, n);
sort(A, n);
print(A, n);
}
Саня Кекер
Саня Кекер
51 411
Лучший ответ