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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 32, средняя оценка - 4.69
ProProger
6 / 2 / 0
Регистрация: 19.09.2012
Сообщений: 95
04.11.2012, 18:14     Вывести данные три числа в порядке возрастания #1
Задача:
Напишите программу, предлагающую пользователю ввести три целых числа, а затем вывести их в порядке возрастания, разделяя запятыми. Например, если пользователь вводит числа 10 4 6, то программа должна вывести на экран числа 4,6,10. Если два числа совпадают, то они должны быть упорядочены одновременно. Например, если пользователь вводит числа 4 5 4, то программа должна вывести на экран числа 4, 4, 5.

Мое решение(неполное)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "std_lib_facilities.h"
int main()
{
    int a; 
    int b;
    int c;
    cout << "vvedi 3 chisla\n";
    cin >> a >> b >> c;
    if(a > b && b > c)
        cout << c << ',' << b << ',' << a;
    if(a > b && a > c && b < c)
        cout << b << ',' << c << ',' << a;
    if(b > a && a > c)
        cout << c << ',' << a << ',' << b;
    if(b > c && a < c)
        cout << a << ',' << c << ',' << b;
    if(c > a && a > b)
        cout << b << ',' << a << ',' << c;
    if(c > b && a < b)
        cout << a << ',' << b << ',' << c;
}
Это решение верно но если числа повторяются, то все ппц Я подумал если делать чтобы условие "Если два числа совпадают, то они должны быть упорядочены одновременно. Например, если пользователь вводит числа 4 5 4, то программа должна вывести на экран числа 4, 4, 5. " соблюдалось нада в два раза больше кода написать. А есть ли какие то варианты чтобы можно было короче решить задачу.

Добавлено через 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
#include "std_lib_facilities.h"
int main()
{
    int a; 
    int b;
    int c;
    cout << "vvedi 3 chisla\n";
    cin >> a >> b >> c;
    if(a > b && b > c)
        cout << c << ',' << b << ',' << a;
    if(a > b && a > c && b < c)
        cout << b << ',' << c << ',' << a;
    if(b > a && a > c)
        cout << c << ',' << a << ',' << b;
    if(b > c && a < c)
        cout << a << ',' << c << ',' << b;
    if(c > a && a > b)
        cout << b << ',' << a << ',' << c;
    if(c > b && a < b)
        cout << a << ',' << b << ',' << c;
    if(a == b && b > c)
        cout << c << ',' << b << ',' << a;
    if(a == c && c > b)
        cout << b << ',' << a << ',' << c;
    if(a == b && b == c)
        cout << c << ',' << b << ',' << a;
    if(a == b && b < c)
        cout << a << ',' << b << ',' << c;
    if(a == c && c < b)
        cout << a << ',' << c << ',' << b;
    if(b == c && c < a)
        cout << c << ',' << b << ',' << a;
    if(b == c && c > a)
        cout << a << ',' << b << ',' << c;
}
народ а кто покороче знает можете написать буду благодарен
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2012, 18:14     Вывести данные три числа в порядке возрастания
Посмотрите здесь:

C++ Вывести все целые числа, расположенные между данными числами, включая сами эти числа, в порядке их возрастания
C++ Ввести три числа и вывести их в порядке возрастания
C++ Ввести 3 числа, вывести их в порядке возрастания
Введите три числа. По условию выведите их в порядке возрастания и вычислите площадь полученного треугольника C++
Три числа в порядке возрастания C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
04.11.2012, 18:24     Вывести данные три числа в порядке возрастания #2
Только пробелы на запятые поменяй!

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
#include <iostream>
#include <conio.h>
using namespace std;
 
int main(){
    int a,b,c;
    cin>>a>>b>>c;
        if(a<b&&a<c) 
        {
            cout<<a<<" ";
            if(b<c)
                cout<<b<<" "<<c;
            else
                cout<<c<<" "<<b;
        }
        else if(b<a&&b<c) 
        {
            cout<<b<<" ";
            if(a<c)
                cout<<a<<" "<<c;
            else
                cout<<c<<" "<<a;
        }
        else
        {
            cout<<c<<" ";
            if(b<a)
                cout<<b<<" "<<a;
            else
                cout<<a<<" "<<b;
        }
        system("pause");
return 0;
}
snw
10 / 10 / 0
Регистрация: 11.10.2012
Сообщений: 93
04.11.2012, 18:25     Вывести данные три числа в порядке возрастания #3
попробуйте пересмотреть некоторые шаги сравнения с операцией || или.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
04.11.2012, 18:39     Вывести данные три числа в порядке возрастания #4
А стандартной функцией сортировки пользоваться нельзя?
ProProger
6 / 2 / 0
Регистрация: 19.09.2012
Сообщений: 95
04.11.2012, 19:30  [ТС]     Вывести данные три числа в порядке возрастания #5
Цитата Сообщение от I.M. Посмотреть сообщение
А стандартной функцией сортировки пользоваться нельзя?
Я только начал изучать с++(на 100 странице в одной книге уже). Могли бы вы написать решение используя эту стандартную функцию сартировки

Добавлено через 8 минут
Цитата Сообщение от vasiliy21 Посмотреть сообщение
Только пробелы на запятые поменяй!

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
#include <iostream>
#include <conio.h>
using namespace std;
 
int main(){
    int a,b,c;
    cin>>a>>b>>c;
        if(a<b&&a<c) 
        {
            cout<<a<<" ";
            if(b<c)
                cout<<b<<" "<<c;
            else
                cout<<c<<" "<<b;
        }
        else if(b<a&&b<c) 
        {
            cout<<b<<" ";
            if(a<c)
                cout<<a<<" "<<c;
            else
                cout<<c<<" "<<a;
        }
        else
        {
            cout<<c<<" ";
            if(b<a)
                cout<<b<<" "<<a;
            else
                cout<<a<<" "<<b;
        }
        system("pause");
return 0;
}
Блин как я сразу не догадался. А вы сколько с++ изучаете? Просто я недавно начал изучать так вот шас даже обидно стало неделю изучаю а пишу какойто говнокод это нормально?
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
04.11.2012, 19:46     Вывести данные три числа в порядке возрастания #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <algorithm>
#include <array>
#include <iostream>
 
int main()
{
    std::array<int, 3> data = {{10, 4, 4}};
 
    std::sort(data.begin(), data.end());
 
    for(auto it = data.cbegin(); it != data.cend(); ++it)
    {
        std::cout << *it << " ";
    }
    system("pause");
    return 0;  
}
Собственно, вот с использованием сортировки

Добавлено через 5 минут
Наверное, так проще для понимания:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <algorithm>
#include <iostream>
 
int main()
{
   const int size = 3;
 
   int data[size] = {10, 4, 4};
     
   std::sort(data, data+size);
   
   for(int i = 0; i < size; ++i)
   {
      std::cout << data[i] << " ";
   }
   system("pause");
   return 0;  
}
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
04.11.2012, 19:47     Вывести данные три числа в порядке возрастания #7
Цитата Сообщение от ProProger Посмотреть сообщение
Блин как я сразу не догадался. А вы сколько с++ изучаете? Просто я недавно начал изучать так вот шас даже обидно стало неделю изучаю а пишу какойто говнокод это нормально?
Я надолго учу (где-то 2 месяца), только структуры начал учить. Если только неделю, то и так хорошо, что додумались как написать)
ProProger
6 / 2 / 0
Регистрация: 19.09.2012
Сообщений: 95
04.11.2012, 20:14  [ТС]     Вывести данные три числа в порядке возрастания #8
Цитата Сообщение от vasiliy21 Посмотреть сообщение
Я надолго учу (где-то 2 месяца), только структуры начал учить. Если только неделю, то и так хорошо, что додумались как написать)
Понятно. Ну спс вам за решение. Удачи в изучении.

Добавлено через 1 минуту
Цитата Сообщение от I.M. Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <algorithm>
#include <array>
#include <iostream>
 
int main()
{
    std::array<int, 3> data = {{10, 4, 4}};
 
    std::sort(data.begin(), data.end());
 
    for(auto it = data.cbegin(); it != data.cend(); ++it)
    {
        std::cout << *it << " ";
    }
    system("pause");
    return 0;  
}
Собственно, вот с использованием сортировки

Добавлено через 5 минут
Наверное, так проще для понимания:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <algorithm>
#include <iostream>
 
int main()
{
   const int size = 3;
 
   int data[size] = {10, 4, 4};
     
   std::sort(data, data+size);
   
   for(int i = 0; i < size; ++i)
   {
      std::cout << data[i] << " ";
   }
   system("pause");
   return 0;  
}
Спс вам но код я ваше не понел просто тока начал изучать.
Nexy
1 / 1 / 0
Регистрация: 26.05.2013
Сообщений: 4
26.05.2013, 04:42     Вывести данные три числа в порядке возрастания #9
Неделю занимаюсь по замечательному учебнику Страуструпа. Решение далось нелегко, но процесс захватил неописуемо. Мерещились ужастные формулы которые наверняка по умолчанию должен знать любой, кто начал изучать программирование и проклинал себя за слабое знание математики (давно учил ее и почему то неохотно, зато теперь охоты хоть отбавляй ).
Не смейтесь, но решил пойти следующим путем.
На бумаге составил алгоритм в виде конечных вариантов и их реализации, а потом перенес в виде кода в редактор.

Алгоритм:
Для 3 разных чисел.
ABC --- A < B B < C
BAC --- B < A A < C
CAB --- C < A A < B
BCA --- B < C C < A
CBA --- C < B B < A
Для двух одинаковых:
(AB)C --- A = B C > A
(AC)B --- A = C B > A
(BC)A --- B = C A > C
Для трех одинаковых:
(ABC) --- A = B B = C
В виде кода (простите за столь громкое название, но мне правда было трудно и я очень старался):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main()
{
    setlocale(LC_ALL,"RUS");
    cout << "Введите три целых числа через пробел. \n" ;
    int a ;
    int b ;
    int c ;
    while(cin >> a >> b >> c) {
    if(a < b && b < c) 
    cout << a << ", " << b << ", " << c << '\n' ;
    if(b < a && a < c) 
    cout << b << ", " << a << ", " << c << '\n' ;
    if(c < a && a < b) cout << c << ", " << a << ", " << b << '\n' ;
    if(b < c && c < a) cout << b << ", " << c << ", " << a << '\n' ;
    if(c < b && b < a) cout << c << ", " << b << ", " << a << '\n' ;
    if(a == b && c > a) cout << a << ", " << b << ", " << c << '\n' ;
    if(a == c && b > a) cout << a << ", " << c << ", " << b << '\n' ;
    if(b == c && a > c) cout << b << ", " << c << ", " << a << '\n' ;
    if(a == b && b == c) cout << a << ", " << b << ", " << c << '\n' ;
    }
    keep_window_open() ;
}
Искал альтернативные варианты решения и случайно нашел этот замечательный форум. Спасибо!
-=ЮрА=-
Заблокирован
Автор FAQ
26.05.2013, 09:56     Вывести данные три числа в порядке возрастания #10
ProProger, вот как это делается
Страуструп. Упражнение. Ввод 3 чисел и последующий их вывод в порядке возрастания.


Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от I.M. Посмотреть сообщение
А стандартной функцией сортировки пользоваться нельзя?
- это задача известная задача из учебника Страустурпа и подразумевает обойтись без циклов и сортировок - одними лишь условными операторами

chaik
0 / 0 / 0
Регистрация: 20.12.2014
Сообщений: 1
20.12.2014, 10:56     Вывести данные три числа в порядке возрастания #11
Еще как вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
int main()
{
    int a,b,c;
    cout << "введите три целых числа:\n";
    while (cin >>a >>b >>c)
    if (a<=b)
      if (b<=c) cout <<a <<"," <<b <<"," <<c <<'\n';
        else if (a<=c) cout <<a <<"," <<c <<"," <<b <<'\n';
          else cout <<c <<"," <<a <<"," <<b <<'\n';
      else if (a<=c) cout <<b <<"," <<a <<"," <<c <<'\n';
        else if (b<=c) cout <<b <<"," <<c <<"," <<a <<'\n';
          else cout <<c <<"," <<b <<"," <<a <<'\n';
}
SlavaSSU
213 / 158 / 44
Регистрация: 17.07.2012
Сообщений: 580
20.12.2014, 11:27     Вывести данные три числа в порядке возрастания #12
еще вариантик

C++ (Qt)
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
#include <iostream>
 
using namespace std;
 
int main(){
    int a, b, c;
    cin >> a >> b >> c;
    int sum = a + b + c;
 
    int min_val = a;
    if(b < min_val)
        min_val = b;
    if(c < min_val)
        min_val = c;
 
    int max_val = a;
    if(b > max_val)
        max_val = b;
    if(c > max_val)
        max_val = c;
 
    cout << min_val << ' ' << sum - min_val - max_val << ' ' << max_val << endl;
 
    return 0;
}
wondermilk
4 / 4 / 3
Регистрация: 12.12.2014
Сообщений: 64
20.12.2014, 16:10     Вывести данные три числа в порядке возрастания #13
Почитай про сортировку пузырьком
PVD
24 / 24 / 6
Регистрация: 01.06.2014
Сообщений: 135
20.12.2014, 16:37     Вывести данные три числа в порядке возрастания #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
 
int main(int argc, char *argv[])
{
    int a, b, c; cin >> a >> b >> c;
    if (a > b) swap(a, b);
    if (b > c) swap(b, c);
    if (a > b) swap(a, b);
    cout << a << ' ' << b << ' ' << c << '\n';
    system("pause");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2014, 17:06     Вывести данные три числа в порядке возрастания
Еще ссылки по теме:

Нужно ввести любые три числа и чтобы они расположились в порядке возрастания C++
C++ Вывести 4 числа в порядке возрастания
C++ Вывести на экран числа из строки в порядке возрастания

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

Или воспользуйтесь поиском по форуму:
D_in_practice
 Аватар для D_in_practice
330 / 330 / 159
Регистрация: 02.10.2014
Сообщений: 666
20.12.2014, 17:06     Вывести данные три числа в порядке возрастания #15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
using namespace std;
 
int Min(int a, int b) {return a < b ? a : b;}
int Max(int a, int b) {return a > b ? a : b;}
 
int main(){
    
    int a, b, c;
    cin >> a >> b >> c;
    cout << Min(c, Min(a, b)) << ' ' 
         << a + b + c -  Min(c, Min(a, b)) - Max(c, Max(a, b)) << ' '
         << Max(c, Max(a, b)) << endl;
}
Yandex
Объявления
20.12.2014, 17:06     Вывести данные три числа в порядке возрастания
Ответ Создать тему
Опции темы

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