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

Сравнение чисел. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.82
ArtyrKa
1 / 1 / 0
Регистрация: 16.06.2010
Сообщений: 10
16.09.2010, 20:11     Сравнение чисел. #1
Вообщем нужно ввести с клавы 3 числа.
Нужно чтобы прога вывела их в порядке max, min, middle.
В голову кроме if(max<min){}ничего не приходит. Просто код получиться очень большой. Есть другой вариант ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2010, 20:11     Сравнение чисел.
Посмотрите здесь:

C++ Сравнение двух чисел
Сравнение чисел C++
C++ Сравнение рациональных чисел
C++ Сравнение строк, чисел и т.д
C++ Сравнение 3 чисел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Хохол
Эксперт C++
 Аватар для Хохол
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
16.09.2010, 20:16     Сравнение чисел. #2
C++
1
2
3
4
int a[3];
std::cin >> a[0] >> a[1] >> a[2];
std::sort(a,a+3);
std::cout << a[2] << a[0] << a[1];
ArtyrKa
1 / 1 / 0
Регистрация: 16.06.2010
Сообщений: 10
16.09.2010, 20:39  [ТС]     Сравнение чисел. #3
Цитата Сообщение от Хохол Посмотреть сообщение
C++
1
2
3
4
int a[3];
std::cin >> a[0] >> a[1] >> a[2];
std::sort(a,a+3);
std::cout << a[2] << a[0] << a[1];
Спасибо тока я в с++ не разбираюсь, можно в С увидеть ?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
16.09.2010, 20:46     Сравнение чисел. #4
C
1
2
3
4
5
6
7
8
9
10
11
12
int a[3];
scanf("%d %d %d", &a[0], &a[1], &a[2]);
for(int i=0; i<3; ++i)
{
     for(int j=i; j<3; ++j)
     {
          int temp=a[i];
          a[i]=a[j];
          a[j]=temp;
     }
}
printf("%d %d %d\n", a[2], a[0], a[1]);
ArtyrKa
1 / 1 / 0
Регистрация: 16.06.2010
Сообщений: 10
16.09.2010, 21:03  [ТС]     Сравнение чисел. #5
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <conio.h>
int main(){
int temp, i,j, a[3];
scanf("%d %d %d", &a[0], &a[1], &a[2]);
for(i=0; i<3; i++)
{
     for(j=i; j<3; j++)
     {
          temp=a[i];
          a[i]=a[j];
          a[j]=temp;
     }
}
printf("%d %d %d\n", a[2], a[0], a[1]);
 
getch();
}
Вот рабочий код только прога не работает как надо. Если вводить например 3 числа 6,4,2 то ответ будет выглядеть как 2,6,4.... но если ввести те же числа в другой последовательности например 2,6,4, то ответ будет выглядеть как 4,2,6... то есть косячок.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
16.09.2010, 21:04     Сравнение чисел. #6
ArtyrKa, Хм. С сортировкой накосячил значит. Сейчас.
Хохол
Эксперт C++
 Аватар для Хохол
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
16.09.2010, 21:05     Сравнение чисел. #7
C++
1
2
3
4
5
for(i=0; i<2; i++)
{
     for(j=i+1; j<3; j++)
         if(a[i] > a[j])
         {
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
16.09.2010, 21:07     Сравнение чисел. #8
Или так.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
int main()
{
int i, j, temp;
int a[3];
scanf("%d %d %d", &a[0], &a[1], &a[2]);
for(i=0; i<3; ++i)
{
     for(j=i; j<3; ++j)
     {
          if(a[i]>a[j])
          {
              temp=a[i];
              a[i]=a[j];
              a[j]=temp;
     }
     }
}
printf("%d %d %d\n", a[2], a[0], a[1]);
return 0;
}
ArtyrKa
1 / 1 / 0
Регистрация: 16.06.2010
Сообщений: 10
16.09.2010, 21:40  [ТС]     Сравнение чисел. #9
ок спасибо большое. вот код отлично компилируется в dev c++ и работает =)
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
#include <stdio.h>
#include <conio.h>
int main()
{
int i,j,a[3];
 
scanf("%d", &a[0]);
scanf("%d", &a[1]);
scanf("%d", &a[2]);
for(i=0; i<3; i++)
{
     for(j=i; j<3; j++)
     {
                 if(a[i]>a[j])
                 {
          int temp=a[i];
          a[i]=a[j];
          a[j]=temp;
                 }
     }
}
printf("%d %d %d\n", a[2], a[0], a[1]);
getch();
 
}
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
16.09.2010, 22:06     Сравнение чисел. #10
Цитата Сообщение от ArtyrKa Посмотреть сообщение
В голову кроме if(max<min){}ничего не приходит. Просто код получиться очень большой.
Уверен, что код большой?
C
1
2
3
if (a > b) t = a, a = b, b = t;
if (b > c) t = b, b = c, c = t;
if (a > b) t = a, a = b, b = t;
ArtyrKa
1 / 1 / 0
Регистрация: 16.06.2010
Сообщений: 10
16.09.2010, 22:08  [ТС]     Сравнение чисел. #11
Somebody, да мне уже тоже предложили такой вариант. Просто башка не варит, думал по другом, ветвлением сделать, а это строк на 30-50
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
16.09.2010, 22:36     Сравнение чисел. #12
Можно и по другому извратиться.

C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
int main()
{
    int a=3, b=4, c=5;
    std::cout<<((a>b&&a>c)?a:(b>c)?b:c);
        std::cout<<((a<b&&a<c)?a:(b<c)?b:c);
    std::cout<<(((a<b&&a>c)||(a>b&&a<c))?a:((b<c&&b>a)||(b>c&&b<a))?b:c);
    return 0;
}
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main()
{
    int a, b, c;
    printf("Enter a, b, c\n");
    scanf("%d %d %d", &a, &b, &c);
    int max=((a>b&&a>c)?a:(b>c)?b:c);
    int middle=(((a<b&&a>c)||(a>b&&a<c))?a:((b<c&&b>a)||(b>c&&b<a))?b:c);
    int min=((a<b&&a<c)?a:(b<c)?b:c);
    printf("%d %d %d\n", max, min, middle);
    return 0;
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
17.09.2010, 00:34     Сравнение чисел. #13
Цитата Сообщение от ArtyrKa Посмотреть сообщение
можно в С увидеть ?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
#define MAX(a, b, c) (a) > (b) ? (a) > (c) ? (a) : (c) : (b) > (c) ? (b) : (c)
#define MIN(a, b, c) (a) < (b) ? (a) < (c) ? (a) : (c) : (b) < (c) ? (b) : (c)
#define MIDDLE(a, b, c) (a) > (b) ? (b) > (c) ? (b) : (a) > (c) ? (c) : (a) : (a) > (c) ? (a) : (b) > (c) ? (c) : (b)
 
int main(void){
    int a, b, c;
    
    printf("A = ");
    scanf("%d", &a);
    printf("B = ");
    scanf("%d", &b);
    printf("C = ");
    scanf("%d", &c);
    
    printf("MAX = %d\tMIN = %d\tMIDDLE = %d\n", MAX(a, b, c), MIN(a, b, c), MIDDLE(a, b, c));
    
    return 0;
}
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
17.09.2010, 00:38     Сравнение чисел. #14
Цитата Сообщение от easybudda Посмотреть сообщение
#define MAX(a, b, c) (a) > (b) ? ( (a) > (c) ? (a) : (c) ) : (b) > (c) ? (b) : (c)
#define MIN(a, b, c) (a) < (b) ? ( (a) < (c) ? (a) : (c) ) : (b) < (c) ? (b) : (c)
#define MIDDLE(a, b, c) (a) > (b) ? ( (b) > (c) ? (b) : ( (a) > (c) ? (c) : (a) ) ) : (a) > (c) ? (a) : (b) > (c) ? (c) : (b)
а ты любитель поизвращаться

Добавлено через 1 минуту
кочмар.. почему до сих пор, во всяких образовательных учреждениях, заставляют писать на Си?!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2010, 00:51     Сравнение чисел.
Еще ссылки по теме:

Сравнение чисел C++
C++ Сравнение чисел
C++ Поразрядное сравнение чисел

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
17.09.2010, 00:51     Сравнение чисел. #15
Цитата Сообщение от niXman Посмотреть сообщение
почему до сих пор, во всяких образовательных учреждениях, заставляют писать на Си?!
Ну всё-таки С++ это не "улучшеный" С, а совсем другой язык программирования с другими возможностями, а соответственно и другой областью применения. Вообще, если эту тему продолжать - скатимся к холивару С vs C++ Вот что ни говорите, а есть у С свои преймущества! При отсутствии необходимости навороченного объектно-ориентированного подхода все плюсы С++ собственно в куче готовых велосипедов. При этом реализацию на С можно сделать и компактнее и быстрее просто по тому, что к стандартному велосипеду ещё куча деталек (читай - функций, свойств, etc...) прилагается, надобность в которых и не возникнет...
Yandex
Объявления
17.09.2010, 00:51     Сравнение чисел.
Ответ Создать тему
Опции темы

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