// 5_2.cpp: Задание 2
#include <iostream>
#include <ctime>
using namespace std;
/*
* Запрашивает номер программы
* Возвращает номер программы
*/
int response()
{
int response;
cout << "Введите номер программы: ";
cin >> response;
cout << endl;
return response;
}
/*
* Процедура генерации целлочисленного массива с заданным диапазоном
*/
void arrGen(int* arr, int n)
{
int a;
int b;
do {
cout << "Введите левую границу диапазона случайных чисел: ";
cin >> a;
cout << "Введите правую границу диапазона случайных чисел: ";
cin >> b;
if (a > b)
{
cout << endl << "Выввели некорректный диапазон, попробуйте ещё раз!" << endl << endl;
}
} while (a > b);
for (int i = 0; i < n; i++)
{
arr[i] = a + rand() % b;
}
}
/*
* Процедура вывода целочисленного массива
*/
void arrOut(int* arr, int n)
{
cout << endl << "Вывод массива: " << endl;
for (int i = 0; i < n; i++)
{
cout << arr[i] << "\t";
}
cout << endl << endl;
}
/*
* Процедура замены серии цифр длинной равной заданной и вывод
*/
void changeMinLot(int* arr, int n, int k)
{
int number = 1;
int min = arr[0];
int max = 0;
int* arrNew = new int[n];
int s = 0;
int f = 1;
int h = 1;
for (int i = 1; i < n; i++)
{
if (arr[i] < min)
{
min = arr[i];
}
if (arr[i] > max)
{
max = arr[i];
}
}
int i = 0;
do
{
do
{
if ((arr[i] == arr[i + h]) and (arr[i]!= arr[i - 1]))
{
f++;
}
else
{
h = 1;
break;
}
h++;
} while (true);
if (f == k)
{
arrNew[s] = min + max;
s++;
i += f;
f = 1;
}
else
{
arrNew[s] = arr[i];
s++;
i++;
f = 1;
}
} while (i < n);
arrOut(arrNew, s);
}
/*
* Решение индивидуальной задачи
* Ничего не возвращает
*/
void program_3()
{
int n;
int k;
cout << "Введите кол-во элементов в массиве: ";
cin >> n;
cout << endl;
int* arr = new int[n];
// Генерация массива
arrGen(arr, n);
cout << "Введите длину серии: ";
cin >> k;
cout << endl;
// Вывод массива
arrOut(arr, n);
// Логика программы
changeMinLot(arr, n, k);
}
void main()
{
setlocale(LC_CTYPE, "rus"); // вызов функции настройки локали
int number;
do
{
number = response();
switch (number)
{
case 0:
{
break;
}
case 1:
{
break;
}
case 2:
{
break;
}
case 3:
{
program 3();
break;
}
default:
cout << "Такой программы не существует! Попробуйте ещё раз!" << endl << endl;
break;
}
} while (number!= 0);
}
5. Контрольный пример: