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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 32, средняя оценка - 4.69
ProProger
6 / 2 / 0
Регистрация: 19.09.2012
Сообщений: 95
#1

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

04.11.2012, 18:14. Просмотров 6239. Ответов 14
Метки нет (Все метки)

Задача:
Напишите программу, предлагающую пользователю ввести три целых числа, а затем вывести их в порядке возрастания, разделяя запятыми. Например, если пользователь вводит числа 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;
}
народ а кто покороче знает можете написать буду благодарен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2012, 18:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести данные три числа в порядке возрастания (C++):

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

Вывести три числа в порядке возрастания разделяя запятыми - C++
здравствуйте,только вчера начал изучать c++ по книге Страуструпа(для новичков) помогите пожалуйста решить задачку,до меня пока туговато...

Вывести на экран три введеных числа в порядке возрастания - C++
Пользователем вводится три целых числа: a1, a2, a3. Вывести эти числа на экран в порядке возрастания.

Три числа в порядке возрастания - C++
Только начинаю программировать в Borland C++. Нужно три введенных числа, упорядочить по возрастанию. #include &lt;iostream.h&gt; ...

Ввести три числа и выдать их на экран в порядке возрастания - C++
Помогите плиз создать прогу: &quot;ввести три числа и выдать их на экран в порядке возрастания&quot; Это нужно сделать в Visual Studio.

Нужно ввести любые три числа и чтобы они расположились в порядке возрастания - C++
Помогите решить задачу! Нужно ввести любые три числа и чтобы они расположились в порядке возрастания.

14
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;
}
1
snw
10 / 10 / 0
Регистрация: 11.10.2012
Сообщений: 93
04.11.2012, 18:25 #3
попробуйте пересмотреть некоторые шаги сравнения с операцией || или.
0
I.M.
566 / 549 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
04.11.2012, 18:39 #4
А стандартной функцией сортировки пользоваться нельзя?
0
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;
}
Блин как я сразу не догадался. А вы сколько с++ изучаете? Просто я недавно начал изучать так вот шас даже обидно стало неделю изучаю а пишу какойто говнокод это нормально?
0
I.M.
566 / 549 / 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;  
}
0
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
04.11.2012, 19:47 #7
Цитата Сообщение от ProProger Посмотреть сообщение
Блин как я сразу не догадался. А вы сколько с++ изучаете? Просто я недавно начал изучать так вот шас даже обидно стало неделю изучаю а пишу какойто говнокод это нормально?
Я надолго учу (где-то 2 месяца), только структуры начал учить. Если только неделю, то и так хорошо, что додумались как написать)
0
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;  
}
Спс вам но код я ваше не понел просто тока начал изучать.
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() ;
}
Искал альтернативные варианты решения и случайно нашел этот замечательный форум. Спасибо!
0
-=ЮрА=-
Заблокирован
Автор FAQ
26.05.2013, 09:56 #10
ProProger, вот как это делается
Страуструп. Упражнение. Ввод 3 чисел и последующий их вывод в порядке возрастания.


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

Не по теме:

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

1
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';
}
0
SlavaSSU
216 / 161 / 45
Регистрация: 17.07.2012
Сообщений: 587
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;
}
0
wondermilk
4 / 4 / 3
Регистрация: 12.12.2014
Сообщений: 114
20.12.2014, 16:10 #13
Почитай про сортировку пузырьком
0
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");
}
0
D_in_practice
331 / 331 / 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;
}
0
20.12.2014, 17:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2014, 17:06
Привет! Вот еще темы с ответами:

Введите три числа. По условию выведите их в порядке возрастания и вычислите площадь полученного треугольника - C++
Введите три числа.Если они могут быть длинами сторон разностороннего тупоугольного треугольника,выведите их в порядке возрастания и...

Вывести 4 числа в порядке возрастания - C++
В результате выполнения задачи, появились 4 переменные, необходимо вывести их в порядке возрастания.

Ввести 3 числа, вывести их в порядке возрастания - C++
1) &quot;Считалочка&quot; программа просит ввести число от 0 до 9 и выводит его письменно. Ввести 3 числа, вывести их в порядке возрастания.

Вывести все целые числа, расположенные между данными числами, включая сами эти числа, в порядке их возрастания - C++
Вот собственно задачи, решение которых мне бы очень помогло, за решение каждой из них буду очень признателен: 1 - Даны две переменные...


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

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

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