2) Вставлять новый элемент перед каждым, соответствующим условию, будем с помощью функции
void insert_s(unsigned long arr[], int &n, unsigned long newElement)
3) Проверять, является ли число простым, будем с помощью функции
bool simple(unsigned long element)
4) Удалять все числа массива, следующие за простым числом, будем с помощью функции
void del_s(unsigned long* arr, int &n)
5) Искать максимальное число среди четных чисел массива будем искать с помощью функции
unsigned long maxEvenNum(unsigned long* arr, int n)
6) Для сортировки массива методом линейного выбора будем использовать функцию
unsigned long* sort(unsigned long* arr, int n)
Реализация функций
unsigned long* sort(unsigned long* arr, int n) { //сортировка массива методом прямого выбора
int imin;
for (int i = 0; i < n - 1; i++) {
imin = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] <= arr[imin]) {
imin = j;
}
}
swap(arr[i], arr[imin]);
}
return arr;
}
unsigned long maxEvenNum(unsigned long* arr, int n) { //максимальное четное число массива
int max, i = n - 1;
bool flag = false;
arr = sort(arr, n);
if (!n) {
return 1;
|
|
}
else {
while (!flag) {
if (!(arr[i] % 2)) {
max = arr[i];
flag = true;
}
else {
i--;
}
}
}
if (n < 1) {
return 1;
}
else if (flag) {
return max;
}
else
{
return 1;
}
}
bool even(unsigned long element) { //проверка эл-та на четность кол-ва цифр
int calc = 0;
while (element!= 0) {
element /= 10;
calc++;
}
return (calc % 2)? false: true;
}
void insert_s(unsigned long arr[], int &n, unsigned long newElement) { //вставка нового элемента после каждого с четными цифрами
int calc = n;
for (int i = 0; i < calc; i++) {
if (even(arr[i])) {
calc++;
for (int j = calc; j > i; j--) {
arr[j] = arr[j - 1];
}
arr[i] = newElement;
i++;
}
}
n = calc;
}
bool simple(unsigned long element) { //простое ли число
if (element == 0 || element == 1) {
return false;
}
else if (element == 2) {
return true;
}
else {
int calc = 0;
for (int i = 2; i <= element / 2; i++) {
if (!(element % i)) {
calc++;
}
}
return (calc >= 1)? false: true;
}
}
void del_s(unsigned long* arr, int &n) {//удалить элементы, следующие за простым числом
int calc = 0;
for (int i = 0; i < n; i++) {
if (simple(arr[i])) {
for (int j = i + 1; j < n; j++) {
arr[j] = 0;
}
calc++;
break;
}
else {
calc++;
}
}
n = calc;
}