2.1 Используя функции, сформировать с помощью ДСЧ одномерный массив и вывести его на печать. (Отсортировать по возрастанию только те элементы массива, которые являются простыми числами.)
2.2 Выполнить обработку одномерного массива в соответствии с вариантом, используя функции, результат вывести на печать.
2.3 Используя функции, сформировать с помощью ДСЧ двумерный массив и
вывести его на печать. (Все четные строки матрицы сдвинуть циклически на К элементов вправо.)
2.4 Выполнить обработку двумерного массива в соответствии с вариантом, используя функции, результат вывести на печать.
C/C++
Функции и массивы в С++
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);
}
#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);
}
Похожие вопросы
- Функции и массивы С++
- Функции и массивы в С++
- Функции и массивы в С++
- Как работать с элементами динамического массива из функции?
- Массив функции c++ помогите
- Как в функции распечатать двумерный динамический массив в Си
- Рекурс.функцию, которая принимает 2х-мерный массив целых чисел и кол-во сдвигов и выполняет круговой сдвиг массива влево
- Написать РЕКУРСИВНУЮ функцию, которая принимает двухмерный массив целых чисел и выполняет круговой сдвиг массива ВЛЕВО.
- С++ Составить функцию, которая меняет местами пары соседних элементов в массиве
- Как массив передать в функцию и обратно? (Язык C)