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

Отсортировать массив c++

26.04.2017, 13:21. Показов 358. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
Подскажите 
как переделать чтобы до введенного числа числа шли по возрастанию а после по убыванию
у меня все наоборот
 
#include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;
enum ConsoleColor {
    Black, Blue, Green, Cyan, Red, Magenta, Brown, LightGray, DarkGray,
    LightBlue, LightGreen, LightCyan, LightRed, LightMagenta, Yellow, White
};
void SetColor(int text, int background)
{
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}
void main() {
 
    setlocale(LC_ALL, "");
    srand(time(NULL));
 
    const int n = 10;
    int a[n];
    int i = 0, x = 0, y = n, z = 0, j, temp, key;
    srand(time(NULL));
 
    cout << "Введите число для поиска\n";
    SetColor(2, 0);
    cin >> key;
 
    while (i < n){                  //Инициализация массива случайными значениями
        a[i] = rand() % 10;
        i++;
    }
 
    for (i = 1; i < n; i++)     //Сортировка массива
    {
        j = i;
        while (j > 0 && a[j] < a[j - 1])
        {
            temp = a[j];
            a[j] = a[j - 1];
            a[j - 1] = temp;
            j--;
        }
    }
    //Печать массива
 
    cout << " Index " << setw(13) << "Volume" << " \n";
 
    i = 0;
    while (i < n){
        SetColor(7, 0);
        cout << setw(5) << i << setw(13) << a[i] << " \n";
        i++;
    }
    //Поиск элемента массива со значением key
    temp = 0;
    while (x <= y)
    {
        z = (x + y) / 2;
        if (key == a[z]) {
            SetColor(2, 0);
            cout << "Значение " << key << " в элементе массива с индексом = " << z << " \n";
            for (int i = z; i < n; i++)
                //Сортировка массива
            {
                j = i;
                while (j > 0 && a[j] > a[j - 1])
                {
                    temp = a[j];
                    a[j] = a[j - 1];
                    a[j - 1] = temp;
                    j--;
                }
 
            }
            temp = 1;
            break;
        }
        else if (key<a[z])
            y = z - 1;
        else if (key>a[z])
            x = z + 1;
    }
    if (temp == 0){
        cout << "Значение " << key << " в элементах массива не найдено \n";
    }
    
    for (int i = 0; i < n; i++)
    {
        SetColor(7, 0);
        cout << setw(5)<< a[i] ;
    }
    system("pause");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2017, 13:21
Ответы с готовыми решениями:

Отсортировать массив по убыванию, затем добавить недостающий элемент и отсортировать массив по возрастанию
2) В массиве a ...a встречаются по одному разу все целые числа от 0 до n, кроме одного. За n...

Ввести массив А. В массив В перенести все элементы массива А, стоящие правее максимального элемента, и имеющие нечетный индекс. Массив В отсортировать
Добрый Вечер! Написал первую часть программы по этому заданию&quot;Ввести массив А. В массив В перенести...

Массив: преобразорвать двумерный массив в одномерный и отсортировать его методом пузырька
всем привет. народ помогите с прогой, конкретно с функцией sort (65 строка), она должна двухмерный...

Создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию
создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию....

2
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
26.04.2017, 14:56 2
Не вникая в суть окружающего, поменял только знаки в местах сортировки и void main на int main.
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
#include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;
enum ConsoleColor {
    Black, Blue, Green, Cyan, Red, Magenta, Brown, LightGray, DarkGray,
    LightBlue, LightGreen, LightCyan, LightRed, LightMagenta, Yellow, White
};
void SetColor(int text, int background)
{
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}
int main() {
 
    setlocale(LC_ALL, "");
    srand(time(NULL));
 
    const int n = 10;
    int a[n];
    int i = 0, x = 0, y = n, z = 0, j, temp, key;
    srand(time(NULL));
 
    cout << "Введите число для поиска\n";
    SetColor(2, 0);
    cin >> key;
 
    while (i < n){                  //Инициализация массива случайными значениями
        a[i] = rand() % 10;
        i++;
    }
 
    for (i = 1; i < n; i++)     //Сортировка массива
    {
        j = i;
        while (j > 0 && a[j] > a[j - 1])
        {
            temp = a[j];
            a[j] = a[j - 1];
            a[j - 1] = temp;
            j--;
        }
    }
    //Печать массива
 
    cout << " Index " << setw(13) << "Volume" << " \n";
 
    i = 0;
    while (i < n){
        SetColor(7, 0);
        cout << setw(5) << i << setw(13) << a[i] << " \n";
        i++;
    }
    //Поиск элемента массива со значением key
    temp = 0;
    while (x <= y)
    {
        z = (x + y) / 2;
        if (key == a[z]) {
            SetColor(2, 0);
            cout << "Значение " << key << " в элементе массива с индексом = " << z << " \n";
            for (int i = z; i < n; i++)
                //Сортировка массива
            {
                j = i;
                while (j > 0 && a[j] < a[j - 1])
                {
                    temp = a[j];
                    a[j] = a[j - 1];
                    a[j - 1] = temp;
                    j--;
                }
 
            }
            temp = 1;
            break;
        }
        else if (key<a[z])
            y = z - 1;
        else if (key>a[z])
            x = z + 1;
    }
    if (temp == 0){
        cout << "Значение " << key << " в элементах массива не найдено \n";
    }
 
    for (int i = 0; i < n; i++)
    {
        SetColor(7, 0);
        cout << setw(5)<< a[i] ;
    }
    system("pause");
}
0
-1 / 1 / 1
Регистрация: 14.01.2017
Сообщений: 322
26.04.2017, 15:03  [ТС] 3
Спасибо
0
26.04.2017, 15:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2017, 15:03
Помогаю со студенческими работами здесь

Создать линейный массив, отсортировать его в другой массив, вывести адрес всех елементов
Помогите пожалуйста с кодом ,нужно за час сдать , напишите код , только попроще Создать линейный...

Создать линейный массив, отсортировать его в другой массив, вывести адрес всех елементов
Помогите пожалуйста, за час нужно сдать , напишите код , только попроще создать линейный массив...

Отсортировать (по неубыванию) методом прямого выбора массив целых чисел A[n], n> 100. Массив заполнить случайным образом
Во втором button сортировка не работает. Помогите( ...

Массив: отсортировать массив в порядке возрастания и найти количество соседних пар элементов отличающихся между собой
Дано массив целых чисел 20, отсортировать его в порядке возрастания и найти количество соседних пар...


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

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