Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
13 / 12 / 0
Регистрация: 13.05.2013
Сообщений: 152
Записей в блоге: 3
1

Сравнение чисел

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

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

Всем заранее спасибо)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.12.2013, 20:55
Ответы с готовыми решениями:

Сравнение чисел
Строго не судите, логику кода понять можно. Где проблема? Значение value не присваивается на 31...

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

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

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

43
13 / 12 / 0
Регистрация: 13.05.2013
Сообщений: 152
Записей в блоге: 3
31.12.2013, 22:22  [ТС] 21
Author24 — интернет-сервис помощи студентам
это как?
0
Заблокирован
31.12.2013, 22:39 22
EasyProgramer96, еще одна ошибка, там где поиск ср. ариф. Замените на:
C++
1
cout << "Частное равно " << (double)(a + b + c)/3 << endl;
Добавлено через 58 секунд
Цитата Сообщение от EasyProgramer96 Посмотреть сообщение
это как?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 if ( ( a > b) && (a > c) && (b > c) )
     {
        cout << "Наибольшее равно"  << a;
        cout << "Наименьшее равно"  << c;
          
     }
     if ( (b > a) && (b > c ) && (a > c) )
     {
          cout << "Наибольшее равно " << b;
          cout << "Наименьшее равно " << c;
          
     }
     if ( (c > a) && (c > b) && (a > b))
     {
        cout << "ННаибольшее равно " << c;
        cout << "Наименьшее равно " << b;
     }
0
13 / 12 / 0
Регистрация: 13.05.2013
Сообщений: 152
Записей в блоге: 3
31.12.2013, 22:42  [ТС] 23
странно,я также делал,но у меня ничего не выводилось
0
50 / 31 / 11
Регистрация: 10.06.2012
Сообщений: 395
31.12.2013, 22:45 24
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  
    if(a>b && b>c && c<a){
    cout<<"наименьшее "<<c;
    cout<<"наибольшее"<<a ;
   
    return 0;
  
}
    if(c>a && c>b && a>b){
    cout<<"наименьшее"<<b;
    cout<<"наибольшее"<<c;
  
    return 0;
  
   }
    if(a<b && b>c && c<a)
    cout<<"наименьшее"<<c;
    cout<<"наибольшее"<<b;
    
    return 0;
    }
или так последний участок.
0
Заблокирован
31.12.2013, 22:45 25
EasyProgramer96, вы исправили ошибку, насчет "частного"?
0
50 / 31 / 11
Регистрация: 10.06.2012
Сообщений: 395
31.12.2013, 22:56 26
И еще условия добавить когда : a>b ,b<c ,a<c и a>b ,b<c, a>c. С новым годом!
0
13 / 12 / 0
Регистрация: 13.05.2013
Сообщений: 152
Записей в блоге: 3
02.01.2014, 10:11  [ТС] 27
Цитата Сообщение от sergei60 Посмотреть сообщение
С новым годом!
Спасибо!Да все дописал и исправил,но ничего не получилось

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
#include <iostream>
 
using namespace std;
 
int main()
{
   setlocale( LC_ALL,"" ); 
   
   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;
    
}

Проверьте пожалуйста что не так,а то выводится не то, что надо.

Добавлено через 53 секунды
Если отставить только первое условие,то все вроде бы работает

Добавлено через 2 минуты
Программа должна выглядеть так : 13 27 14

Введите три различных числа
Сумма равна 54
Среднее значение равно 18
Произведение равно 4914
Наименьшее равно
Наибольшее равно 27


Числа так, для примера
0
50 / 31 / 11
Регистрация: 10.06.2012
Сообщений: 395
02.01.2014, 10:56 28
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
 #include <iostream>
    #include <cmath>
  
  
    using namespace std;
     
    int main () {
    int a,b,c;
    cout<<"введите три числа "<<endl;
    cin>>a;
    cin>>b;
    cin>>c;
    cout << "Сумма равна " << a + b + c << endl;
   cout << "Произведение равно " << a * b * c <<endl;
   
    if(a<b && b<c && c>a ){
    cout<<"меньшее "<<a;
    cout<<"большее"<<c;
 return 0;
}
    if(a>b && b>c && c<a){
    cout<<"меньшее "<<c;
    cout<<"большее"<<a;
    return 0;
}
    if(a>b && b<c && c>a){
    cout<<"меньшее"<<b;
    cout<<"большее"<<c;
    return 0;
}
    if(a<b && b>c && c<a){
    cout<<"меньшее"<<c;
    cout<<"большее"<<b;
    return 0;
}
    if(a<b && b>c && c>a){
    cout<<"меньшее"<<a;
    cout<<"большее"<<c;
    return 0;
 
}
    return 0;
    }
Добавлено через 12 минут
EasyProgramer96,поэкспериментируй,это же так интересно! Вообще язык С++это как закон физики существующий как данность.Вот он есть и все! Ну это личные мои ощущения.Удивительный язык!
0
13 / 12 / 0
Регистрация: 13.05.2013
Сообщений: 152
Записей в блоге: 3
02.01.2014, 10:59  [ТС] 29
Цитата Сообщение от sergei60 Посмотреть сообщение
Удивительный язык!
Я тоже так считаю!У вас работала эта программа?
0
50 / 31 / 11
Регистрация: 10.06.2012
Сообщений: 395
02.01.2014, 11:04 30
http://ideone.com/LdSIIJ проверьте,может что-то не дописал ,все работает отлично! Выложи скопированный код Тот что у тебя не проходит.
0
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
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
50 / 31 / 11
Регистрация: 10.06.2012
Сообщений: 395
02.01.2014, 11:36 32
EasyProgramer96Может ты набираешь числа ,например 2 7 5 ,а этого условия в моем коде нет. Так дописать по аналогии очень просто.И еще не рассматривались 5 условий ,когда a=b ,b=c, a=c .Тоже все они пишутся аналогично.
0
128 / 125 / 39
Регистрация: 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
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
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
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
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
03.01.2014, 16:59 36
В реальных программах даже нужно.

Добавлено через 9 минут
Сейчас вам главное понять как это работает.Попробуйте это же проделать с 4мя,5ю цифрами.Не бойтесь экспериментировать с кодом будет только лучше для вас.Удачи.
0
13 / 12 / 0
Регистрация: 13.05.2013
Сообщений: 152
Записей в блоге: 3
03.01.2014, 17:05  [ТС] 37
Понятно,большое спасибою
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
03.01.2014, 17:09 38
http://stackoverflow.com/quest... ments-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
50 / 31 / 11
Регистрация: 10.06.2012
Сообщений: 395
03.01.2014, 17:15 39
outoftime,эти коды у меня например не идут ,видимо нужна поддержка С++11 ,а до этого надо дорасти еще... Но интересно познакомиться,спасибо.
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 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
03.01.2014, 17:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.01.2014, 17:28
Помогаю со студенческими работами здесь

Сравнение чисел.
Вообщем нужно ввести с клавы 3 числа. Нужно чтобы прога вывела их в порядке max, min, middle. В...

Сравнение 3 чисел
Всем привет)) В колледже задали задание: написать программу, которая сравнивает 3 числа. Три...

Сравнение чисел double в do {} while
у меня такой вопрос, есть ли какие нибудь особенности в сравнение чисел типа double? double...

Сравнение трех чисел
Здравствуйте, Как записать функцию сравнения трех чисел в более компактном виде. Например поиск...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru