Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 19.02.2019
Сообщений: 52
1

Линейный поиск в массиве действительных чисел

27.02.2019, 12:26. Показов 594. Ответов 1

Author24 — интернет-сервис помощи студентам
Не работает поиск и иногда выводит числа с более чем 2 числами после запятой
Что делать?
C++
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;
}
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2019, 12:26
Ответы с готовыми решениями:

Линейный поиск в массиве действительных чисел
Не работает поиск и иногда выводит числа с более чем 2 числами после запятой Что делать? //...

Линейный поиск в массиве double чисел
При попытке найти номер элемента в массиве с double чисел, каждый раз получаю что элемента не...

Задача. Отсортировать линейный массив из 20 действительных чисел методом включения
Ну плиз помогите решыть!

Даны линейный массив действительных чисел. Найти произведение третьего и максимального элементов
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;iomanip&gt; using namespace std; int main(void) { ...

1
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,162
27.02.2019, 16:16 2
Цитата Сообщение от Starykh Посмотреть сообщение
Что делать?
Не дублировать темы, когда в прошлой был дан ответ

Линейный поиск в массиве действительных чисел
0
27.02.2019, 16:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2019, 16:16
Помогаю со студенческими работами здесь

Даны линейный массив действительных чисел. Вычислить сумму последнего и минимального элементов массива
#include &lt;iostream&gt; using namespace std; int main() { setlocale(0,&quot;Rus&quot;); int N,S; int...

Даны линейный массив действительных чисел. Вычислить произведение всех элементов, значения которых больше 4 и меньше 10
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cmath&gt; using namespace std; int main() { ...

Линейный поиск в массиве
Подскажите пожалуйста ,что нужно сделать для реализации линейного поиска в данном массиве? Буду...

Линейный поиск в массиве и списке
Добрый день, дорогие форумчане! Имеется программа, которая должна выполнять линейный поиск по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru