Форум программистов, компьютерный форум CyberForum.ru

Сортировка 3 чисел в порядке возрастания - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.95
programmer92ua
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 29
11.09.2013, 18:14     Сортировка 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
int main () 
{
    setlocale(LC_ALL, "russian");
    cout << "Введите три числа \n";
    int x , y, z;
    while (cin >> x >> y >> z)
    {
 
        int min=0;
        int max=0;
        int average=0;
 
        if ( x<y ) 
        {
            min = x;
            max = y;
 
        }
        else
        {
            min = y;
            max = x;
 
        }
        if ( z<min )
            min = z;
        else if  ( z>max )
            max = z;
 
        if ( x<max && x>min)
 
            average = x;
 
        if ( y<max && y>min)
 
            average = y;
 
        if ( z<max && z>min)
 
            average = z;
 
        cout << min << " | " << average << " | " << max << endl;
    }
 
 
}
Теперь мне стало интересно, а как же можно этот пример уменьшить в размерах, уж слишком он большой для сортировки 3 чисел, используя только if-else, или это оптимальный алгоритм?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2013, 18:14     Сортировка 3 чисел в порядке возрастания
Посмотрите здесь:

C++ Вывести на экран элементы массива целых чисел в порядке возрастания их числа делителей
C++ Все числа от 1 до К включительно отсортируйте в порядке возрастания суммы делителей числа (сортировка пузырьком)
Страуструп. Упражнение. Ввод 3 чисел и последующий их вывод в порядке возрастания. C++
C++ Дана последовательность чисел а1, а2, ..., аn. Требуется переставить числа в порядке возрастания.
Сортировка элементов массива размерности n в порядке возрастания C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
11.09.2013, 18:23     Сортировка 3 чисел в порядке возрастания #2
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <algorithm>
 
int main() {
    int a[3];
    std::cin >> a[0] >> a[1] >> a[2];
    std::sort( a, a+2 );
    std::cout << a[0] << " " << a[1] << " " << a[2];
    return 0;
}
programmer92ua
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 29
11.09.2013, 18:27  [ТС]     Сортировка 3 чисел в порядке возрастания #3
Цитата Сообщение от coloc Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <algorithm>
 
int main() {
    int a[3];
    std::cin >> a[0] >> a[1] >> a[2];
    std::sort( a, a+2 );
    std::cout << a[0] << " " << a[1] << " " << a[2];
    return 0;
}
Да не, это не то? Спс конечно за вариант, но допустим я не знаю что такое массив и не знаю что такое функции кроме main, я знаю как работает if-else конструкция как можно упросить тогда код?
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
11.09.2013, 18:37     Сортировка 3 чисел в порядке возрастания #4
если только 3 числа, то можно вот таким способом сделать :

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
#include <iostream>
using namespace std;
 
void Set(int &a, int &b, int &c)
{
    if (c < b) swap(c, b);
    if (b < a) swap(b, a);
}
 
 
int main()
{
    int a, b, c;
 
    a = 2;
    b = 1;
    c = 3;
 
    Set(a, b, c);
 
    cout << a << " " << b << " " << c;
 
    return 0;
}
Добавлено через 1 минуту
хотя мне кажется что эта функция при некоторых числах будет неверный результат выводить
alex1392
31 / 31 / 3
Регистрация: 24.07.2013
Сообщений: 187
11.09.2013, 18:39     Сортировка 3 чисел в порядке возрастания #5
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
#include <iostream>
using namespace std;
void main () 
{
    const int col=4;
    setlocale ( LC_ALL , "russian" );
    int arr[col]={0};
    cout << "Введите три числа \n ";
    for(int i=0;i<col;i++)
    {
        cout << "Введите "<<i+1<<"-е число= ";
        cin>>arr[i];
    }
    for(int i=0;i<col;i++)
    {
        for(int j=i;j<col;j++)
        {
            if(arr[i]>arr[j])
            {
                int b=arr[i];
                arr[i]=arr[j];
                arr[j]=b;
            }
        }
        cout<<arr[i]<<",";
    }
}
Вводиш в col количевство элементов и педалиш скоко душе угодно
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
11.09.2013, 18:41     Сортировка 3 чисел в порядке возрастания #6
Цитата Сообщение от alex1392 Посмотреть сообщение
педалиш скоко душе угодно
а ТС не нужно педалить скоко душе угодно. Третий пост читали?
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
11.09.2013, 18:41     Сортировка 3 чисел в порядке возрастания #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int min =  ( x<y && x<z )?x:(y<z?y:z);
int max =  ( x>y && x>z )?x:(y>z?y:z);
 
if ( x<max && x>min)
 
            average = x;
 
        if ( y<max && y>min)
 
            average = y;
 
        if ( z<max && z>min)
 
            average = z;
надеюсь тернарные операции вам уже знакомы
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
11.09.2013, 18:48     Сортировка 3 чисел в порядке возрастания #8
окончательный работающий вариант)

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
#include <iostream>
using namespace std;
 
void Set(int &a, int &b, int &c)
{
    if (a > b) swap(a, b);
    if (b > c) swap(b, c);
    if (a > b) swap(a, b);
}
 
int main()
{
    int a, b, c;
 
    a = 2;
    b = 1;
    c = 3;
 
    Set(a, b, c);
 
    cout << a << " " << b << " " << c;
 
    return 0;
}
Raali
11.09.2013, 18:52
  #9

Не по теме:

Цитата Сообщение от ___ Посмотреть сообщение
окончательный работающий вариант)
что то Биберу никто плюсики не ставит никогда

programmer92ua
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 29
11.09.2013, 19:00  [ТС]     Сортировка 3 чисел в порядке возрастания #10
Цитата Сообщение от Raali Посмотреть сообщение

Не по теме:


что то Биберу никто плюсики не ставит никогда

А у меня нет надписи +1 Спасибо под его постом просто
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
11.09.2013, 19:04     Сортировка 3 чисел в порядке возрастания #11
Цитата Сообщение от programmer92ua Посмотреть сообщение
А у меня нет надписи +1 Спасибо под его постом просто
я только недавно зарегистрировался на форуме. наверно поэтому нет
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2013, 19:06     Сортировка 3 чисел в порядке возрастания
Еще ссылки по теме:

C++ Получить в порядке возрастания N первых натуральных чисел, которые не делятся ни на какие простые числа, кроме 2, 3 и 5
C++ Сортировка 3-х значных чисел в порядке возрастания
C++ Сортировка строк матрицы в порядке возрастания их средних арифметических значений

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

Или воспользуйтесь поиском по форуму:
zer0mail
2187 / 1870 / 187
Регистрация: 03.07.2012
Сообщений: 6,656
Записей в блоге: 1
11.09.2013, 19:06     Сортировка 3 чисел в порядке возрастания #12
Можно Set не выделять в функцию - будет на 4 строки короче
Yandex
Объявления
11.09.2013, 19:06     Сортировка 3 чисел в порядке возрастания
Ответ Создать тему
Опции темы

Текущее время: 17:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru