1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
| #include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
void arraygen(float* arr, int num);
void BubbleSort(float *mas, int i);
void arraycout(float* arr, int num);
int linSearch(float* arr, float requiredKey, int arrSize);
void ChoiceSort(float* array, int size);
int main() {
int choice = 0; // будет хранить выбор пользователя
bool var = true; // управляющая переменная цикла do while
int num; // размер массива
int nElement = 0; // номер элемента массива
float requiredKey;
cout << "Enter integer value: ";
cin >> num; // получение от пользователя размера массива
float *arr = new float[num]; // Выделение памяти для массива
cout << "\nYour array is: ";
arraygen(arr,num); //ген масива
arraycout(arr,num); //вывод масива
cout << "\n\nHow to sort array?";
cout << "\n1 - Bubble sort";
cout << "\n2 - Choice sort";
cout << "\nYour choice is ";
do {
cin >> choice; // ввод значения
cout << endl;
switch (choice) // switch принимает переменную answer и ищет подходящий case
{
case 1: // если choice равно 1, на экран выйдут сообщения этого case
BubbleSort(arr, num);//сортування
cout << endl << "\nBubble sort: ";
arraycout(arr, num);
break; // выход из switch. иначе будет переход case(2) и т.д.
case 2: // если choice равно 2
ChoiceSort(arr, num);
cout << endl << "\nChoice sort: ";
arraycout(arr, num);
break;
default: // если ни один case не сработал, сработает default
cout << "Incorrect choice! ";
cout << "Do the right choice: ";
}
// если введено правильное значение (от 1 до 4)
// default не сработает и выполнится блок if
// переменная var примет значение false
// и цикл do while не повторится
if (choice >= 1 && choice <= 2)
var = false;
} while (var); //цикл повторится, пока var не изменит значение на false
cout << endl << "\nEnter key of num: ";
cin >> requiredKey; // ввод искомого числа
//поиск искомого числа и запись номера элемента
nElement = linSearch(arr, requiredKey, num);
if (nElement != -1)
{
//если в массиве найдено искомое число - выводим индекс элемента на экран
cout << "Value " << requiredKey << " is in the cell with the index: " << nElement << endl;
}
else
{
//если в массиве не найдено искомое число
cout << "There is no such value in the array." << endl;
}
delete[] arr; // очистка памяти
_gettch();
return 0;
}
void arraygen(float* arr, int num)
{
srand(time(NULL));
for (int i = 0; i < num; i++) {
// Заполнение массива и вывод значений его элементов
arr[i] = float(rand() % 20001) / 100 - 100;//диапазон чисел [-1000; 1000] с двумя знаками после запятой
}
}
void arraycout(float* arr, int num)
{
for (int i = 0; i < num; i++) {
// Заполнение массива и вывод значений его элементов
if (i % 10 == 0) cout << endl;
cout << arr[i] << " ";
}
}
int linSearch(float* arr, float requiredKey, int arrSize)
{
for (int i = 0; i < arrSize; i++)
{
if (arr[i] == requiredKey)
return i;
}
return -1;
}
void BubbleSort(float *mas, int i) //rabotaet
{ for (int k = 0;k<i - 1;k++)
for (int j = k + 1;j<i;j++)
if (mas[k]<mas[j])
swap(mas[k], mas[j]);
}
void ChoiceSort(float* array, int size)
{for (int i = 0; i < size - 1; i++) {
/* устанавливаем начальное значение минимального индекса */
int min_i = i;
/* находим индекс минимального элемента */
for (int j = i + 1; j < size; j++) {
if (array[j] < array[min_i]) {
min_i = j;
}
}
/* меняем значения местами */
float temp = array[i];
array[i] = array[min_i];
array[min_i] = temp;
}
} |