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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.95
programmer92ua
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 29
#1

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

11.09.2013, 18:14. Просмотров 6145. Ответов 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
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, или это оптимальный алгоритм?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2013, 18:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка 3 чисел в порядке возрастания (C++):

Сортировка 3-х значных чисел в порядке возрастания - C++
Надо написать программу на С++. Сортировка 3-х значных чисел в порядке возрастания))

Сортировка чисел в порядке возрастания в массиве - C++
помогите написать программу на C++. Которая сортирует числа в порядке возрастания в массиве.

Сортировка массива в порядке возрастания и вывод элементов в обратном порядке - C++
нашла на форуме пару примеров, но они не полные и не запускаются, выбрала из них более менее подходящий, дальше было много вариантов но не...

Сортировка элементов массива размерности n в порядке возрастания - C++
1). Разработать функцию для сортировки элементов одномерного целочисленного массива размерности n в порядке возрастания. С использованием...

Сортировка строк матрицы в порядке возрастания их средних арифметических значений - C++
Необходимо строки матрицы переставить в порядке возрастания их средних арифметических значений. Вот что у меня получилось: int n =...

Сортировка столбцов матрицы в порядке возрастания элементов третьей строки - C++
Я студент первого курса Нужен код на С++ Задание было таким: Отсортировать столбцы матрицы в порядке возрастания элементов третьей...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
coloc
погромист
410 / 246 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
11.09.2013, 18:23 #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;
}
1
programmer92ua
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 29
11.09.2013, 18:27  [ТС] #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 конструкция как можно упросить тогда код?
0
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
11.09.2013, 18:37 #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 минуту
хотя мне кажется что эта функция при некоторых числах будет неверный результат выводить
0
alex1392
31 / 31 / 3
Регистрация: 24.07.2013
Сообщений: 187
11.09.2013, 18:39 #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 количевство элементов и педалиш скоко душе угодно
1
coloc
погромист
410 / 246 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
11.09.2013, 18:41 #6
Цитата Сообщение от alex1392 Посмотреть сообщение
педалиш скоко душе угодно
а ТС не нужно педалить скоко душе угодно. Третий пост читали?
0
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,061
Завершенные тесты: 1
11.09.2013, 18:41 #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;
надеюсь тернарные операции вам уже знакомы
1
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
11.09.2013, 18:48 #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;
}
0
Raali
11.09.2013, 18:52
  #9

Не по теме:

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

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

Не по теме:


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

А у меня нет надписи +1 Спасибо под его постом просто
1
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
11.09.2013, 19:04 #11
Цитата Сообщение от programmer92ua Посмотреть сообщение
А у меня нет надписи +1 Спасибо под его постом просто
я только недавно зарегистрировался на форуме. наверно поэтому нет
0
zer0mail
2334 / 1960 / 192
Регистрация: 03.07.2012
Сообщений: 7,033
Записей в блоге: 1
11.09.2013, 19:06 #12
Можно Set не выделять в функцию - будет на 4 строки короче
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2013, 19:06
Привет! Вот еще темы с ответами:

Сортировка списка студентов в порядке возрастания даты рождения, применяя динамические списки - C++
1) В каждой строке текстового файла Date.in записаны имена с заглавной буквы и даты рождения студентов группы. Напишите фрагмент программы...

Ввод чисел в консоль и их вывод в порядке возрастания - C++
Имеется ряд любых чисел, причем чисел может быть любое количество. Эти числа вводят в консоль, разделяя пробелом, например:11 23 34 12 45...

Страуструп. Упражнение. Ввод 3 чисел и последующий их вывод в порядке возрастания. - C++
Добрый вечер. Я только-только начал изучать программирование и начал с книги Страуструпа - Принципы и практика использования С++. Решил...

Дана последовательность чисел а1, а2, ..., аn. Требуется переставить числа в порядке возрастания. - C++
Сортировка вставками. Дана последовательность чисел а1, а2, ..., аn. Требуется переставить числа в порядке возрастания. Делается это...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.09.2013, 19:06
Ответ Создать тему
Опции темы

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