2 Блок–схема алгоритма
Представим описание алгоритма в графическом виде на рисунке 2.1.
Рисунок 2.1 – Блок-схема алгоритма программы
3 Исходный код
Программная реализация алгоритма для решения задачи представлена ниже.
Листинг 3.1 – Процедура выполнение кода по поставленной задачи
#include <iostream> using namespace std;
void input(int* &a, int &n); // Ввод массива void output(int* a, int n); // Вывод массива int countInRange(int* a, int n, int x, int y); // Счет чисел в диапазоне void addAfterMax(int* &a, int &n, int x); // Добавление числа после максимального void menu();
int main() { int n = 0; // количество элементов int* a = nullptr; // динамический массив menu(); int choice; while (true) { cout << "Укажите пункт меню: "; cin >> choice; switch (choice) { case 1: input(a, n); break; case 2: cout << "Массив: " << endl; output(a, n); break; case 3: { int x, y; cout << "Введите диапазон [x, y]: "; cin >> x >> y; int count = countInRange(a, n, x, y); cout << "Количество чисел в диапазоне [" << x << ", " << y << "]: " << count << endl; break; } case 4: { int x; cout << "Введите число для добавления: ";
Продолжение
Листинга
3.1 addAfterMax(a, n, x); break; } case 5: delete[] a; // Освобождение памяти return 0; default: cout << "Неверный выбор. Повторите ввод!" << endl; } } }
void input(int* &a, int &n) { cout << "Введите количество элементов массива (n <= 100): "; cin >> n; if (n > 100 || n <= 0) { cout << "Ошибка: количество элементов должно быть от 1 до 100." << endl; n = 0; return; } a = new int[n]; cout << "Введите элементы массива:" << endl; for (int i = 0; i < n; i++) { cin >> a[i]; } }
void output(int* a, int n) { for (int i = 0; i < n; i++) { cout << a[i] << " "; } cout << endl; }
int countInRange(int* a, int n, int x, int y) { int count = 0; for (int i = 0; i < n; i++) { if (a[i] >= x && a[i] <= y) { count++; } } return count; }
void addAfterMax(int* &a, int &n, int x) { if (n == 0) { cout << "Ошибка: массив пуст." << endl; return; } int maxIndex = 0; for (int i = 1; i < n; i++) { if (a[i] > a[maxIndex]) { maxIndex = i; } } int* newArray = new int[n + 1]; for (int i = 0; i <= maxIndex; i++) { newArray[i] = a[i]; } newArray[maxIndex + 1] = x; // adding the new element for (int i = maxIndex + 1; i < n; i++) { newArray[i + 1] = a[i]; } delete[] a; // освобождаем старый массив a = newArray; // заменяем указатель на новый массив n++; // увеличиваем размер }
void menu() { cout << "1. Ввод массива" << endl; cout << "2. Вывод массива" << endl; cout << "3. Количество чисел в диапазоне" << endl; cout << "4. Добавление числа после последнего максимального" << endl; cout << "5. Завершение работы" << endl; } |
Продолжение
Листинга
3.1
