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

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

07.03.2018, 01:29. Просмотров 875. Ответов 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
Ответы с готовыми решениями:

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

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

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

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

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

3
qwe123qwea
63 / 52 / 26
Регистрация: 20.03.2017
Сообщений: 312
Завершенные тесты: 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
1021 / 790 / 664
Регистрация: 18.12.2017
Сообщений: 3,060
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