DZ4

Форк
0
/
project1.cpp 
120 строк · 3.5 Кб
1
//Реализуйте шаблонные функции для поиска максимума,
2
//минимума, сортировки массива(любым алгоритмом сортировки), двоичного поиска в массиве, замены элемента
3
//массива на переданное значение.
4
#include <iostream>
5
#include <string>
6
using namespace std;
7

8
template<typename T>
9
class ArrayManipulation {
10
public:
11

12
    void print() {
13
        T arr[10];
14

15
        for (int i = 0; i < 10; i++) {
16
            cin >> arr[i];
17
        }
18

19
        int option;
20
        cout << "Что хотите сделать с массивом? \n"
21
            "1. Найти максимальное и минимальное число. \n"
22
            "2. Сортировка массива. \n"
23
            "3. Двоичный поиск. \n"
24
            "4. Замена элемента. " << endl;
25

26
        cin >> option;
27
        switch (option) {
28
        case 1: {
29
            T max = arr[0];
30
            T min = arr[0];
31

32
            for (int i = 0; i < 10; i++) {
33
                if (arr[i] > max) {
34
                    max = arr[i];
35
                }
36
                if (arr[i] < min) {
37
                    min = arr[i];
38
                }
39
            }
40

41
            cout << "Максимальное число: " << max << endl;
42
            cout << "Минимальное число: " << min << endl;
43
            break;
44
        }
45
        case 2: {
46
            for (int i = 0; i < 10; i++) {
47
                for (int j = 0; j < 9; j++) {
48
                    if (arr[j] > arr[j + 1]) {
49
                        swap(arr[j], arr[j + 1]);
50
                    }
51
                }
52
                cout << arr[i] << " ";
53
            }
54
            cout << endl;
55
            break;
56
        }
57
        case 3: {
58
            T key;
59
            cout << "Введите ключ для поиска: ";
60
            cin >> key;
61

62
            bool found = false;
63
            int left = 0;
64
            int right = 10 - 1;
65
            int mid;
66

67
            while (left <= right && !found) {
68
                mid = (left + right) / 2;
69

70
                if (arr[mid] == key) {
71
                    found = true;
72
                }
73
                else if (arr[mid] < key) {
74
                    left = mid + 1;
75
                }
76
                else {
77
                    right = mid - 1;
78
                }
79
            }
80

81
            if (found) {
82
                cout << "Элемент найден по индексу " << mid << endl;
83
            }
84
            else {
85
                cout << "Элемент не найден" << endl;
86
            }
87
            break;
88
        }
89
        case 4: {
90
            int index;
91
            cout << "Введите индекс элемента для замены: ";
92
            cin >> index;
93

94
            T newValue;
95
            cout << "Введите новое значение: ";
96
            cin >> newValue;
97

98
            arr[index] = newValue;
99

100
            cout << "Массив после замены: ";
101
            for (int i = 0; i < 10; i++) {
102
                cout << arr[i] << " ";
103
            }
104
            cout << endl;
105
            break;
106
        }
107
        default: {
108
            cout << "Некорректный ввод" << endl;
109
            break;
110
        }
111
        }
112
    }
113
};
114

115
int main() {
116
    setlocale(LC_ALL, "RU");
117
    ArrayManipulation<int> array;
118
    array.print();
119
    return 0;
120
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.