Текст программы с комментариями

// 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. Контрольный пример:


 



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: