DZ4
/
project1.cpp
120 строк · 3.5 Кб
1//Реализуйте шаблонные функции для поиска максимума,
2//минимума, сортировки массива(любым алгоритмом сортировки), двоичного поиска в массиве, замены элемента
3//массива на переданное значение.
4#include <iostream>
5#include <string>
6using namespace std;
7
8template<typename T>
9class ArrayManipulation {
10public:
11
12void print() {
13T arr[10];
14
15for (int i = 0; i < 10; i++) {
16cin >> arr[i];
17}
18
19int option;
20cout << "Что хотите сделать с массивом? \n"
21"1. Найти максимальное и минимальное число. \n"
22"2. Сортировка массива. \n"
23"3. Двоичный поиск. \n"
24"4. Замена элемента. " << endl;
25
26cin >> option;
27switch (option) {
28case 1: {
29T max = arr[0];
30T min = arr[0];
31
32for (int i = 0; i < 10; i++) {
33if (arr[i] > max) {
34max = arr[i];
35}
36if (arr[i] < min) {
37min = arr[i];
38}
39}
40
41cout << "Максимальное число: " << max << endl;
42cout << "Минимальное число: " << min << endl;
43break;
44}
45case 2: {
46for (int i = 0; i < 10; i++) {
47for (int j = 0; j < 9; j++) {
48if (arr[j] > arr[j + 1]) {
49swap(arr[j], arr[j + 1]);
50}
51}
52cout << arr[i] << " ";
53}
54cout << endl;
55break;
56}
57case 3: {
58T key;
59cout << "Введите ключ для поиска: ";
60cin >> key;
61
62bool found = false;
63int left = 0;
64int right = 10 - 1;
65int mid;
66
67while (left <= right && !found) {
68mid = (left + right) / 2;
69
70if (arr[mid] == key) {
71found = true;
72}
73else if (arr[mid] < key) {
74left = mid + 1;
75}
76else {
77right = mid - 1;
78}
79}
80
81if (found) {
82cout << "Элемент найден по индексу " << mid << endl;
83}
84else {
85cout << "Элемент не найден" << endl;
86}
87break;
88}
89case 4: {
90int index;
91cout << "Введите индекс элемента для замены: ";
92cin >> index;
93
94T newValue;
95cout << "Введите новое значение: ";
96cin >> newValue;
97
98arr[index] = newValue;
99
100cout << "Массив после замены: ";
101for (int i = 0; i < 10; i++) {
102cout << arr[i] << " ";
103}
104cout << endl;
105break;
106}
107default: {
108cout << "Некорректный ввод" << endl;
109break;
110}
111}
112}
113};
114
115int main() {
116setlocale(LC_ALL, "RU");
117ArrayManipulation<int> array;
118array.print();
119return 0;
120}