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

Упорядочить по возрастанию три введенных числа - C++

Восстановить пароль Регистрация
 
kre-sod
0 / 0 / 0
Регистрация: 25.03.2014
Сообщений: 16
Записей в блоге: 9
30.03.2014, 15:29     Упорядочить по возрастанию три введенных числа #1
Что-то у меня не получается, а почему - не могу понять.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include "../../std_lib_facilities.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
    double a;
    double b;
    double c;
    cout << "Vvedite 3 cifri: \n";
    while (cin >> a >> b >> c) {
    if (a >= b, b >= c)
        cout << c << ", " << b << ", " << a << '\n';
    if (a >= c, c >= b)
        cout << b << ", " << c << ", " << a << '\n';
    if (a <= b, b <= c)
        cout << a << ", " << b << ", " << c << '\n';
    if (a <= c, c <= b);
        cout << a << ", " << c << ", " << b << '\n';
    }
    system ("pause");
    return 0;
}
Нагородил тут, конечно...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2014, 15:29     Упорядочить по возрастанию три введенных числа
Посмотрите здесь:

Упорядочить целые числа в строке по возрастанию. C++
дано 3 числа. упорядочить их по возрастанию C++
C++ расположить три числа по возрастанию
C++ Найти все простые числа в массиве и упорядочить их по возрастанию
Составить программу, печатающую ДА или НЕТ в зависимости от того, имеют ли три целых введенных числа одинаковую четность C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Аркалык
13 / 13 / 4
Регистрация: 24.09.2013
Сообщений: 138
30.03.2014, 15:47     Упорядочить по возрастанию три введенных числа #2
kre-sod, Можно так (через массив):
C++
1
2
3
4
5
6
int func(int *a, int n)
{
    for(int i=0; i<n; i++)
    for (int j = i+1; j < n; j++)
    if (a[i] > a[j]) swap(a[i],a[j]);
}
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,207
Завершенные тесты: 1
30.03.2014, 15:50     Упорядочить по возрастанию три введенных числа #3
Цитата Сообщение от kre-sod Посмотреть сообщение
if (a >= b, b >= c)
Некорректная запись/ Операция "запятая" не работает как логическое "И"
C++
1
if (a >= b &&  b >= c)
kre-sod
0 / 0 / 0
Регистрация: 25.03.2014
Сообщений: 16
Записей в блоге: 9
31.03.2014, 00:54  [ТС]     Упорядочить по возрастанию три введенных числа #4
Цитата Сообщение от zss Посмотреть сообщение
Некорректная запись/ Операция "запятая" не работает как логическое "И"
C++
1
if (a >= b &&  b >= c)
Все равно то же самое

Добавлено через 2 минуты
Цитата Сообщение от Аркалык Посмотреть сообщение
kre-sod, Можно так (через массив):
C++
1
2
3
4
5
6
int func(int *a, int n)
{
    for(int i=0; i<n; i++)
    for (int j = i+1; j < n; j++)
    if (a[i] > a[j]) swap(a[i],a[j]);
}
Проблема в том, что до массивов я ещё не дошёл. Конечно, может Страуструп ошибся и впихнул задание не туда, но походу нужно без массивов
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,207
Завершенные тесты: 1
31.03.2014, 11:58     Упорядочить по возрастанию три введенных числа #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
int main()
{
    double a;
    double b;
    double c;
    cout << "Vvedite 3 chisla: \n";
    while (cin >> a >> b >> c) 
    {
        double m1=max(a,b); // большее из a,b
        m1=max(m1,c);  // большее из a,b,c
        double n1=min(a,b);// меньшее из a,b
        n1=min(n1,c);  // меньшее из a,b,c
        double avg=a+b+c-m1-n1; // оставшееся 3-е число равно сумме всех - максимальное - минимальное
        cout<<n1<<" "<<avg<<" "<<m1<<endl;
    }
    system ("pause");
    return 0;
}
kre-sod
0 / 0 / 0
Регистрация: 25.03.2014
Сообщений: 16
Записей в блоге: 9
31.03.2014, 14:59  [ТС]     Упорядочить по возрастанию три введенных числа #6
max тоже пока не знаю) в общем, пока вот что получилось
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
// Vozrastanie_chisel.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "../../std_lib_facilities.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
    int a;
    int b;
    int c;
    string a1;
    string b1;
    string c1;
    cout << "Vvedite 3 cifri: \n";
    while (cin >> a >> b >> c) {
    if (a >= b)
            if (b>=c)
                cout << c << b << a << '\n';
    if (a>=c)
        if (c>=b)
            cout << b << c << a << '\n';
    if (b>=a)
        if (a>=c)
            cout << c << a << b << '\n';
    if (b>=c)
        if (c>=a)
            cout << a << c << b << '\n';
    if (c>=a)
        if (a>=b)
            cout << b << a << c << '\n';
    if (c>=b)
        if (b>=a)
            cout << a << b << c << '\n';
    }
    system ("pause");
    return 0;
}
Но работает все еще не так, как нужно. При вводе 3 2 3 (две одинаковые цифры) на них бросаются сразу две >= , т.е он выводит
2 3 3
2 3 3
две строки. Если напишу 1 1 1, то работают сразу все if. Вот не знаю, как исправить. Пробовал убрать в некоторых равенство, но мозг тут же сломался
IrineK
Заблокирован
31.03.2014, 15:18     Упорядочить по возрастанию три введенных числа #7
kre-sod если хочется поветвить, то будет так:

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
#include <iostream>
#include <iomanip>
using std::cin;
using std::cout;
 
struct ORDER
{   int min, middle, max;
};
 
void arrange(ORDER *order, int a, int b, int c)
{   if(a>b)
    {   if(b>c)
        {   order->min = c;
            order->middle = b;
            order->max = a;
        }
        else if(a>c)
        {   order->min = b;
            order->middle = c;
            order->max = a;
        }
        else
        {   order->min = b;
            order->middle = a;
            order->max = c;
        }
    }
    else
    {   if(b<c)
        {   order->min = a;
            order->middle = b;
            order->max = c;
        }
        else if(a<c)
        {   order->min = a;
            order->middle = c;
            order->max = b;
        }
        else
        {   order->min = c;
            order->middle = a;
            order->max = b;
        }
    }
}
 
 
int main()
{   int a,b,c;
    ORDER order;
 
    cout << "Enter three integers\n";
    cin >> a >> b >> c;
    cin.sync();
 
    arrange(&order, a, b, c);
    cout << "Ordered as increasing sequence\n";
    cout << order.min << '\t' << order.middle << '\t' << order.max;
 
    cin.get();
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2014, 15:27     Упорядочить по возрастанию три введенных числа
Еще ссылки по теме:

C++ Сколько сравнений понадобится в худшем случае, чтобы упорядочить по возрастанию 4 различных числа
Проверить, имеют ли три введенных пользователем числа одинаковую четность C++
Расположить три целых числа по возрастанию C++

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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,207
Завершенные тесты: 1
31.03.2014, 15:27     Упорядочить по возрастанию три введенных числа #8
Если не хочется пользоваться max и min, То можно их вписать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
int main()
{
    double a;
    double b;
    double c;
    cout << "Vvedite 3 chisla: \n";
    while (cin >> a >> b >> c) 
    {
        double m1=a>b?a:b; // большее из a,b
        m1=m1>c?m1:c;  // большее из a,b,c
        double n1=a<b?a:b;// меньшее из a,b
        n1=n1<c?n1:c;  // меньшее из a,b,c
        double avg=a+b+c-m1-n1; // оставшееся 3-е число равно сумме всех - максимальное - минимальное
        cout<<n1<<" "<<avg<<" "<<m1<<endl;
    }
    system ("pause");
    return 0;
}
Yandex
Объявления
31.03.2014, 15:27     Упорядочить по возрастанию три введенных числа
Ответ Создать тему
Опции темы

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