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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
EasyProgramer96
13 / 12 / 0
Регистрация: 13.05.2013
Сообщений: 152
Записей в блоге: 3
#1

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

31.12.2013, 20:55. Просмотров 1411. Ответов 43
Метки нет (Все метки)

Привет всем!Люди помогите написать программ,которая сравнивает три числа и выдает наибольшее и наименьшее из них.Задача из книги Дейтелов.

Всем заранее спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.12.2013, 20:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сравнение чисел (C++):

Сравнение чисел - C++
Скажите, пожалуйста, логику сравнения трёх чисел на языке алгоритма, чтобы рез-т был таким: первое > второе > третье

Сравнение чисел - C++
Есть у меня 2 числа: 3.1000000000000017 и 3.1000000000000000 Они как бы равны, но не получается их в блоке if сравнить. Как их...

Сравнение чисел - C++
дан 40 число если число меньше 25 надо прибавить 10. можете помочь

Сравнение 3 чисел - C++
Всем привет)) В колледже задали задание: написать программу, которая сравнивает 3 числа. Три варианта я сделал: #include <iostream> ...

Сравнение чисел. - C++
Вообщем нужно ввести с клавы 3 числа. Нужно чтобы прога вывела их в порядке max, min, middle. В голову кроме if(max<min){}ничего не...

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

43
Genn55
375 / 222 / 41
Регистрация: 26.12.2012
Сообщений: 733
02.01.2014, 11:08 #31
У вас после if написаны 2 строчки,а выполняться будет 1.Для того,чтобы выполнялись обе строчки их нужно заключить в фигурные скобочки.
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
#include <iostream>
#include <stdlib.h>
using namespace std;
 
int main()
{
   //setlocale( LC_ALL,"" );
system("chcp 1251 > nul");
   int a, b, c;
 
   cout << "Введите два числа: "  << endl;
   cin >> a >> b >> c;
 
   cout << "Сумма равна " << a + b + c << endl;
   cout << "Произведение равно " << a * b * c <<endl;
 
 
   if ( (a > b) && (a > c) && (b > c) )
      {
         cout << "Большее: " << a << endl;
         cout << "Меньшее: " << c;
      }
 
   if ( (b > a) && (b >c) && (a > c) )
      {
        cout << "Большее: " << b << endl;
        cout << "Меньшее: " << c;
      }
 
   if ( (c > a) && (c >b) && (a > b) )
      {
        cout << "Большее: " << c << endl;
        cout << "Меньшее: " << b;
      }
 
   // system("pause>>void");
    return 0;
 
}
1
sergei60
47 / 28 / 4
Регистрация: 10.06.2012
Сообщений: 374
02.01.2014, 11:36 #32
EasyProgramer96Может ты набираешь числа ,например 2 7 5 ,а этого условия в моем коде нет. Так дописать по аналогии очень просто.И еще не рассматривались 5 условий ,когда a=b ,b=c, a=c .Тоже все они пишутся аналогично.
0
Alexdemath
125 / 122 / 6
Регистрация: 11.04.2010
Сообщений: 255
03.01.2014, 01:22 #33
Цитата Сообщение от EasyProgramer96 Посмотреть сообщение
Привет всем!Люди помогите написать программ,которая сравнивает три числа и выдает наибольшее и наименьшее из них.Задача из книги Дейтелов.
Всем заранее спасибо)
Вариант с тернарным оператором

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(0,"rus");
    cout << "Введите три числа:\n";
    int a,b,c;
    cin >> a >> b >> c;
 
    int min3 = (a < b && a < c) ? a : (b < a && b < c) ? b : c,
        max3 = (a > b && a > c) ? a : (b > a && b > c) ? b : c;
 
    cout << "\nМинимальное число:  " << min3
         << "\nМаксимальное число: " << max3;
 
    system("pause > null");
    return 0;
}
0
Genn55
375 / 222 / 41
Регистрация: 26.12.2012
Сообщений: 733
03.01.2014, 01:56 #34
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
using namespace std;
 
int main()
{
 
    int a, b, c;
    cin >> a >> b >> c;
    cout << "Max: " << max(max(a, b), c) << "\n";
    cout << "Min: " << min(min(a, b), c) << "\n";
 
    return 0;
}
и тернарного оператора не нужно.Но про 4ю переменную ничего не говорилось.

Добавлено через 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
#include <iostream>
 
using namespace std;
 
int main()
{
int x, y, z;
 
cout << "Vvedite 3 celih chisla: \n";
cin >> x >> y >> z;
 
cout << "Summa =  " << x + y + z << endl;
cout << "Srednee =  " << (x + y + z) / 3 << endl;
cout << "Proizvedenie =  " << x * y * z << endl;
 
if (x > y)
if (x > z)
cout << "Naibolshee =  "  << x << endl;
if (y > x)
if (y > z)
cout << "Naibolshee =  "  << y << endl;
if (z > x)
if (z > y)
cout << "Naibolshee =  " << z << endl;
if (x < y)
if (x < z)
cout << "Naimenshee =  " << x << endl;
if (y < x)
if (y < z)
cout << "Naimenshee =  " << y << endl;
if (z < x)
if (z < y)
cout << "Naimenshee =  " << z << endl;
 
return 0;
}
если я все правильно понял.

Добавлено через 7 минут
Выполняться будет когда все 3 числа разные.
1
EasyProgramer96
13 / 12 / 0
Регистрация: 13.05.2013
Сообщений: 152
Записей в блоге: 3
03.01.2014, 16:43  [ТС] #35
Спасибо заработало,только дописал system("pause>>void"),чтобы не закрывалась.

Добавлено через 5 минут
Цитата Сообщение от Genn55 Посмотреть сообщение
Выполняться будет когда все 3 числа разные.
Скажите а можно вместо
C++
1
2
if (x > y)
if (x > z)
написать
C++
1
if( (x > y) && (x > z))
0
Genn55
375 / 222 / 41
Регистрация: 26.12.2012
Сообщений: 733
03.01.2014, 16:59 #36
В реальных программах даже нужно.

Добавлено через 9 минут
Сейчас вам главное понять как это работает.Попробуйте это же проделать с 4мя,5ю цифрами.Не бойтесь экспериментировать с кодом будет только лучше для вас.Удачи.
0
EasyProgramer96
13 / 12 / 0
Регистрация: 13.05.2013
Сообщений: 152
Записей в блоге: 3
03.01.2014, 17:05  [ТС] #37
Понятно,большое спасибою
0
outoftime
║XLR8║
717 / 617 / 76
Регистрация: 25.07.2009
Сообщений: 3,115
Записей в блоге: 5
03.01.2014, 17:09 #38
http://stackoverflow.com/questions/1...arguments-in-c
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <iterator>
#include <initializer_list>
 
template<typename T>
T min(std::initializer_list<T> list)
{
    T res = *list.begin();
    for (auto elem : list)
    {
        if (res > elem)
            res = elem;
    }
    return res;
}
 
int main()
{
    std::cout << min<double>({1,2,3,4,5,6,-5.5,21,3});
}
Добавлено через 3 минуты
Или так
C++
1
2
3
4
5
6
7
8
9
10
11
12
template<typename T>
const T &min(std::initializer_list<T> list)
{
    const T *res = list.begin(),
            *it  = list.begin();
    while (++it != list.end())
    {
        if (*res > *it)
            res = it;
    }
    return *res;
}
1
sergei60
47 / 28 / 4
Регистрация: 10.06.2012
Сообщений: 374
03.01.2014, 17:15 #39
outoftime,эти коды у меня например не идут ,видимо нужна поддержка С++11 ,а до этого надо дорасти еще... Но интересно познакомиться,спасибо.
0
outoftime
║XLR8║
717 / 617 / 76
Регистрация: 25.07.2009
Сообщений: 3,115
Записей в блоге: 5
03.01.2014, 17:28 #40
Еще можно рекурсивный вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
template<typename T>
const T &min(const T &value)
{
    return value;
}
 
template<typename T, typename... Args>
const T &min(const T &value, Args... args)
{
    const T *res = &min<T>(args...);
    return *res < value ? *res : value;
}
Добавлено через 2 минуты
P.S. для рекурсивного варианта много либ подключать не надо.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
template<typename T>
const T &min(const T &value)
{
    return value;
}
 
template<typename T, typename... Args>
const T &min(const T &value, Args... args)
{
    const T *res = &min<T>(args...);
    return *res < value ? *res : value;
}
 
int main()
{
    std::cout << min<double>(1,2,3,4,5,6,-5.5,21,3);
}
Добавлено через 3 минуты
Bash
1
2
3
4
5
6
7
8
9
mingw32-g++.exe -Wall -fexceptions  -std=c++98 -g     -c D:\Projects\c++\help\help\main.cpp -o obj\Debug\main.o
D:\Projects\c++\help\help\main.cpp:9:30: warning: variadic templates only available with -std=c++11 or -std=gnu++11 [enabled by default]
 template<typename T, typename... Args>
                              ^
D:\Projects\c++\help\help\main.cpp:10:38: warning: variadic templates only available with -std=c++11 or -std=gnu++11 [enabled by default]
 const T &min(const T &value, Args... args)
                                      ^
mingw32-g++.exe  -o bin\Debug\help.exe obj\Debug\main.o    
Output size is 107.28 KB
Собирается на ура, только предупреждений много

Добавлено через 43 секунды
А ну да (: Видимо без C++11 никак (:

Добавлено через 32 секунды
Цитата Сообщение от outoftime Посмотреть сообщение
warning: variadic templates only available with -std=c++11 or -std=gnu++11 [enabled by default]
вот
0
Genn55
375 / 222 / 41
Регистрация: 26.12.2012
Сообщений: 733
03.01.2014, 17:34 #41
EasyProgramer96 выбор конечно ваш,но лучше напишите то же самое ,но для 5ти чисел пусть он будет корявый,но ваш.А опыт придет.От того,что вы перепишите красивый код,поверьте, пользы не будет ни какой.Все когда то делали первый шаг,но никто не начинал с середины.Но поступайте как знаете.Вам работать.
0
EasyProgramer96
13 / 12 / 0
Регистрация: 13.05.2013
Сообщений: 152
Записей в блоге: 3
03.01.2014, 22:17  [ТС] #42
нет я сам всегда переписываю код,чтобы запомнить и закрепить.

Добавлено через 2 минуты
Цитата Сообщение от Genn55 Посмотреть сообщение
У вас после if написаны 2 строчки,а выполняться будет 1.Для того,чтобы выполнялись обе строчки их нужно заключить в фигурные скобочки.
Код 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
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
* *//setlocale( LC_ALL,"" );
system("chcp 1251 > nul");
* *int a, b, c;
cout << "Введите два числа: " *<< endl;
* *cin >> a >> b >> c;
cout << "Сумма равна " << a + b + c << endl;
* *cout << "Произведение равно " << a * b * c <<endl;
if ( (a > b) && (a > c) && (b > c) )
* * * {
* * * * *cout << "Большее: " << a << endl;
* * * * *cout << "Меньшее: " << c;
* * * }
if ( (b > a) && (b >c) && (a > c) )
* * * {
* * * * cout << "Большее: " << b << endl;
* * * * cout << "Меньшее: " << c;
* * * }
if ( (c > a) && (c >b) && (a > b) )
* * * {
* * * * cout << "Большее: " << c << endl;
* * * * cout << "Меньшее: " << b;
* * * }
// system("pause>>void");
* * return 0;
}
Код работает за исключением того,что если второе число больше первого программа не показывает большие и меньшее числа
0
xoror
29 / 31 / 2
Регистрация: 15.12.2013
Сообщений: 147
03.01.2014, 22:33 #43
Цитата Сообщение от EasyProgramer96 Посмотреть сообщение
Люди помогите написать программ,которая сравнивает три числа и выдает наибольшее и наименьшее из них.
Вот ещё вариантик с макросами

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
#define minimus(a, b)   ( ((a)<(b)) ? (a) : (b) )
#define maximus(a, b)   ( ((a)>(b)) ? (a) : (b) )
 
 
int main()
{
    int     a,  b,  c;
 
    std::cin >> a >> b >> c;
 
    std::cout << "Min = " << minimus(a,  minimus(b,c)) << std::endl;
    std::cout << "Max = " << maximus(a,  maximus(b,c)) << std::endl;
 
    system("pause");
    return 0;
}
0
Genn55
375 / 222 / 41
Регистрация: 26.12.2012
Сообщений: 733
03.01.2014, 22:33 #44
C++
1
2
3
4
5
if ( (a > b) && (a > c) && (b > c) )
 {
cout << "Большее: " << a << endl;
cout << "Меньшее: " << c;
}
Ваше условие гласит:если a > b И a > c И b > c то Большее a Это верно?При чем тут b > c ?
(a > b) && (a > c) то Большее a,логично.
0
03.01.2014, 22:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2014, 22:33
Привет! Вот еще темы с ответами:

Сравнение двух чисел - C++
Заданы два натуральных числа A и B. Требуется вывести =, если они равны; &lt;, если A &lt; B; и &gt;, если A &gt; B. Гарантируется, что числа не...

Сравнение двух чисел - C++
Даны целые числа m и n. Если числа не равны, то заменить каждое из них одним и тем же числом, равным большему из исходных, а если равны, то...

Сравнение трёх чисел - C++
Теоретический вопрос. Драсте. Наткнулся на форуме на эту тему: http://www.cyberforum.ru/pascal/thread32113.html. Пробежался глазами, особо...

Сравнение двух чисел - C++
Здравствуйте. Мне нужно решить простенькую задачу - нужно найти результат выражения c=a/b. Но имеется определенное условие - результат...


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

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

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