task20
unknown
c_cpp
2 years ago
2.0 kB
10
Indexable
#include <iostream>
#include <locale.h>
/* 20. Дан целочисленный массив размерности n. Определить является ли
последовательность элементов, находящаяся между первым нечетным элементом
массива и последним нечетным элементом массива, арифметической прогрессией.
Выдать сообщение, если в массиве нет такой последовательности. */
bool checkArithmeticProg(int* a, int begin, int end) {
int d = a[begin + 2] - a[begin + 1];
for (int i = begin + 1; i < end - 1; i++) {
if (a[i + 1] - a[i] != d)
return false;
}
return true;
}
void firstAndLastOddNumber(int* a, int n, int &l, int &r) {
l = 0;
r = n - 1;
for (int i = 0; i < n; i++) {
if (a[i] % 2 == 1) {
l = i;
break;
}
}
for (int i = n-1; i > l; i--) {
if(a[i] % 2 == 1){
r = i;
return;
}
}
}
int main() {
setlocale(LC_ALL, "");
int n;
printf("Введите количество элементов n: ");
scanf_s("%d", &n);
int* arr = new int[n];
printf("Введите элементы массива:");
for (int i = 0; i < n; i++)
scanf_s("%d", &arr[i]);
int left, right;
firstAndLastOddNumber(arr, n, left, right);
if (right - left < 2)
printf("Последовательности нет.\n");
else {
if (checkArithmeticProg(arr, left, right))
printf("Последовательность между первым и последним нечётными элементами массива является арифметической прогрессией.\n");
else
printf("Последовательность между первым и последним нечётными элементами массива НЕ является арифметической прогрессией.\n");
}
return 0;
}Editor is loading...
Leave a Comment