Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
FluM
0 / 0 / 0
Регистрация: 03.03.2018
Сообщений: 18
#1

Разработать консольное приложение, позволяющее сортировать введенный одномерный массив действительных чисел - C++

07.03.2018, 01:29. Просмотров 188. Ответов 3
Метки нет (Все метки)

1. Разработать консольное приложение, позволяющее сортировать введенный одномерный массив действительных чисел

Требования к программе:

Вводится: размер массива, значения элементов массива.

Выводится: введенный массив, отсортированный по возрастанию массив, отсортированный по убыванию массив.

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
#include <iostream>
#include <windows.h>
#include <clocale>
 
void print_array(double *, int); //выводит содержимое массива
 
void sort_max(double *, int);
void reverse(double *, int);
 
int main()
 
{
    setlocale(LC_CTYPE,"Russian");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    int size;
    std::cout << "Выберите размер массива: ";
    std::cin >> size;
 
    double *array = new double[size];
 
    for (int i = 0; i < size; i++)
    {
        std::cout << "Выберите размер массива: ";
        std::cin >> array[i];
    }
        
        std::cout << "Элементы массива:" << std::endl;
        print_array(array, size);
 
    std::cout << "\nСортировка по убыванию:" << std::endl;
    sort_max(array, size);
    print_array(array, size);
 
    std::cout << "\nСортировка по убыванию:" << std::endl;
 
    reverse(array, size);
    print_array(array, size);
    
    std::cin.ignore();
    std::cout << "\nВыберите 1 для продолжения";
    std::cout << "\nВыберите 0 для выхода\n";
    std::cin.get();
}
void print_array(double *array, int size)
{
    for (int i = 0; i < size; i++)
    {
        std::cout << array[i] << " ";
    }
}
 
 
void sort_max(double *array, int size)
{
    for (int x = 0; x < size; x++)
    {
        double buffer = array[x];
 
        for (int y = x; y < size; y++)
        {
            if (array[y] > array[x])
            {
                array[x] = array[y];
                array[y] = buffer;
            }
        }
    }
}
void reverse(double *array, int size)
{
    double buffer;
 
    for (int i = 0; i < size; i++)
    {
        buffer = array[i];
        array[i] = array[size - 1 - i];
    }
}

Что не правильно? поправьте пожалуйста!!!
программы должны позволять пользователю после вывода результата выйти из программы или возвратиться на ввод исходных данных;
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2018, 01:29
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Разработать консольное приложение, позволяющее сортировать введенный одномерный массив действительных чисел (C++):

Сортировать одномерный массив вещественных чисел
Помогите написать функцию, кто знает! Условие: допускается использование...

Дан одномерный массив состоящий из n целых чисел, надо сортировать элементы по уменьшению
Дан одномерный массив состоящий из n целых чисел, надо сортировать элементы по...

Отсортировать одномерный массив действительных чисел методом пузырька (по убыванию)
Отсортировать одномерный массив действительных чисел методом пузырька (по...

Как описать одномерный массив целых и действительных чисел одновременно?
как описать одномерный массив целых и действительных чисел вместе???

Разработать приложение, позволяющее организовать работу по учету занятости номеров гостиницы
Всем доброго времени суток! Решила сама начать осваивать С++ до поступления в...

Дан одномерный массив действительных чисел. Определить количество положительных, отрицательных и нулевых элементов
Реализовать следующую задачу с использованием статических и динамических...

3
qwe123qwea
25 / 25 / 14
Регистрация: 20.03.2017
Сообщений: 159
Завершенные тесты: 1
07.03.2018, 07:53 #2
В функции
C++
1
void sort_max(double *array, int size)
строку
C++
1
double buffer = array[x];
нужно внести в проверку условия:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void sort_max(double *array, int size)
{
    for (int x = 0; x < size; x++)
    {
        for (int y = x; y < size; y++)
        {
            if (array[x] < array[y])
            {
                double buffer = array[x];
                array[x] = array[y];
                array[y] = buffer;
            }
        }
    }
}
И будет нормально всё сортироваться.

Добавлено через 9 минут
Для функции
C++
1
void reverse(double *array, int size)
либо вставить код из функции
C++
1
void sort_max(double *array, int size)
и сменить знак в условии с < на >. А вообще у вас в функции void reverse(double *array, int size) не сортировка, а просто переписывание массива в обратном порядке, которое не совсем правильно сделано.

Добавлено через 11 минут
Вот как-то так все будет выглядеть:
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
#include <iostream>
#include <windows.h>
#include <clocale>
 
void print_array(double *, int); //выводит содержимое массива
 
void sort_max(double *, int);
void reverse(double *, int);
 
int main()
{
    setlocale(LC_ALL,"");
 
    int size;
    bool flag = true;
    while(flag)
    {
        std::cout << "Выберите размер массива: ";
        std::cin >> size;
 
        double *array = new double[size];
 
        for (int i = 0; i < size; i++)
        {
            std::cout << "Введите элемент массива: ";
            std::cin >> array[i];
        }
 
        std::cout << "Элементы массива:" << std::endl;
        print_array(array, size);
 
        std::cout << "\nСортировка по убыванию:" << std::endl;
        sort_max(array, size);
        print_array(array, size);
 
        std::cout << "\nСортировка по возрастанию:" << std::endl;
 
        reverse(array, size);
        print_array(array, size);
 
        for(;;)
        {
            std::cout << "\nВыберите 1 для продолжения";
            std::cout << "\nВыберите 0 для выхода\n";
            int cont = -1;
            std::cin >>cont;
            if(cont == 1)
                break;
            if(cont == 0)
            {
                flag = false;
                break;
            }
            else
                std::cout << "Вы ввели неправильное значение, введите снова!";
        }
 
    }
    return 0;
}
 
void print_array(double *array, int size)
{
    for (int i = 0; i < size; i++)
    {
        std::cout << array[i] << " ";
    }
}
 
 
void sort_max(double *array, int size)
{
    for (int x = 0; x < size; x++)
    {
        for (int y = x; y < size; y++)
        {
            if (array[x] < array[y])
            {
                double buffer = array[x];
                array[x] = array[y];
                array[y] = buffer;
            }
        }
    }
}
void reverse(double *array, int size)
{
    for (int x = 0; x < size; x++)
    {
        for (int y = x; y < size; y++)
        {
            if (array[x] > array[y])
            {
                double buffer = array[x];
                array[x] = array[y];
                array[y] = buffer;
            }
        }
    }
}
1
Yetty
451 / 453 / 419
Регистрация: 18.12.2017
Сообщений: 1,854
07.03.2018, 17:15 #3
FluM, немного компактнее:

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
#include <iostream>
using namespace std;
 
void Print (double *a, size_t n)
{
    for (size_t i = 0; i < n; i++)    
        cout << a[i] << " ";
    cout <<endl;
} 
 
void Sort_max (double *a, size_t n)
{
    double temp;
    for (size_t i=0; i<n-1; i++)    
        for (size_t j=0; j<n-i-1; j++)        
            if (a[j] > a[j+1]) 
                {
                    temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;             
                } 
}
 
void Sort_min (double *a, size_t n)
{
    double temp;
    for (size_t i=0; i<n-1; i++)    
        for (size_t j=0; j<n-i-1; j++)        
            if (a[j] < a[j+1]) 
                {
                    temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;             
                }      
}
 
int main()
{    
    int k=1;
    size_t n;
    while(k==1)
    {
        cout <<"Enter n: "; cin >>n;
 
        double *a = new double[n];
        
        cout <<"Enter elements:\n";
        for (size_t i = 0; i < n; i++)
        cin >> a[i];  
        
        Print (a, n);
        
        Sort_max(a, n);
        Print (a, n);
 
        Sort_min(a, n);
        Print (a, n);
 
        cout <<"Continue? (1 - YES) "; cin >>k;
    }   
system("pause");
return 0;
}
1
VPL
3 / 4 / 4
Регистрация: 22.10.2017
Сообщений: 31
07.03.2018, 18:48 #4
Лучший ответ Сообщение было отмечено FluM как решение

Решение

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
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,t;
    int a[200];
    cin>>n;
    for(int i = 0;i<n;i++)
        cin>>a[i];
        sort(a,a+n); 
        for(int i=0;i<n;i++)
 
            cout<<a[i]<<" ";
for(int i = 0; i < n - 1; i++)
{
    for(int j = i + 1; j < n; j++)
    {
        if (a[i] < a[j])
        {
            t = a[i];
            a[i] = a[j];
            a[j] = t;
        }
    }
}
cout<<endl;
for(int i =0;i<n;i++)
 
    cout<<a[i]<<" ";
 
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2018, 18:48
Привет! Вот еще темы с решениями:

Разработать консольное приложение
Условие: Разработать консольное приложение для управления программными...

Разработать консольное приложение, производящее табулирование заданной функции
Буду признателен за помощь или за ваши возможные варианты решения, не кто не...

Разработать консольное приложение, имитирующее работу простого калькулятора
Разработать консольное приложение, эмитирующее работу простого калькулятора.

Дан одномерный массив,введенный с клавиатуры
Дан одномерный массив,введенный с клавиатуры. -Найти сумму неотрицательных...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru