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

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

Войти
Регистрация
Восстановить пароль
 
Алексей_Трунов
0 / 0 / 0
Регистрация: 16.11.2015
Сообщений: 7
#1

Найти максимум - C++

20.11.2015, 09:35. Просмотров 233. Ответов 6
Метки нет (Все метки)

Помогите советом начинающему, не могу понять в чём логическая ошибка. Есть у меня такая функция нахождения максимального числа из 4 введённых. Работает правильно если ввожу 10,11,12,13 или например 11,12,36,50. Но если ввожу 6,4,2,13 то выводит 0. В чём проблема, уже всю голову сломал
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
int max_of_four(int a, int b, int c, int d) {
    if (a > b)
    {
          if (a > c)
          {
                if (a > d)
                {
                 return a;
                }
          }
    }
    else if (b > c)
         {
               if (b > d)
               {
                return b;
               }
         }
    else if (c > d)
         {
               if (c = d)
               {
                     return c;
               }
         }
    else {
          return d;
         }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2015, 09:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти максимум (C++):

Найти максимум в диагонали матрицы и перевернуть строки, в которых есть этот максимум - C++
Найти максимум в диагонали матрицы и перевернуть строки, в которых есть этот максимум. Вот заполнение и максимум, но не знаю, как строки...

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

найти максимум из x[1]...x[n] - C++
нужно сделать ету програму на класах, помогите пожалуста!

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

Найти максимум - C++
здраствуйте,помогите написать программу на dev-c++,с объяснением пожалуста. условие: Ввести три числа и найти наибольшее из...

Найти максимум из чисел - C++
C=73 Найти максимум из чисел , среди цифр которых нет четных (C является признаком окончания ввода и в саму последовательность не входит .)

6
Тамика
Котовчанин
918 / 461 / 145
Регистрация: 16.02.2010
Сообщений: 3,197
Записей в блоге: 27
20.11.2015, 09:54 #2
Алексей_Трунов,
Цитата Сообщение от Алексей_Трунов Посмотреть сообщение
if (c = d)
Двойное равно. А вообще если интересно - много лишних действий в коде.

Добавлено через 1 минуту
Цитата Сообщение от Алексей_Трунов Посмотреть сообщение
if (c > d)
* * * * *{
* * * * * * * *if (c = d)
В эту область, кстати, Вы не зайдёте никогда. Потому что если вздуматься - если с больше д, входим. А дальше - если с равно д...

Добавлено через 2 минуты
Алексей_Трунов, как-то так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int max_of_four(int a, int b, int c, int d) 
{
    if (a > b)
        if (a > c)
            if (a > d)
                return a;
 
 
    if (b > c)
        if (b > d)
            return b;
 
    if (c > d)
        return c;
 
    return d;
}
Добавлено через 27 секунд
А если проще, то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <algorithm>
 
int main()
{
    int val1, val2, val3, val4;
    std::cin >> val1;
    std::cin >> val2;
    std::cin >> val3;
    std::cin >> val4;
    std::cout << std::max(std::max(std::max(val1, val2), val3), val4);
    system("pause > nul");
}
Добавлено через 1 минуту
Или так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <algorithm>
 
int main()
{
    int val1, val2, val3, val4;
    std::cin >> val1;
    std::cin >> val2;
    std::cin >> val3;
    std::cin >> val4;
    int vals[] = {val1, val2, val3, val4};
    std::cout << *std::max_element(vals, vals + 4);
    system("pause > nul");
}
0
Алексей_Трунов
0 / 0 / 0
Регистрация: 16.11.2015
Сообщений: 7
20.11.2015, 09:58  [ТС] #3
суть в том что нужно написать функцию, которая принимает 4 целых числа и выводит максимальное. С двойным равно не получается, тоже 0 выводит.
0
Тамика
Котовчанин
918 / 461 / 145
Регистрация: 16.02.2010
Сообщений: 3,197
Записей в блоге: 27
20.11.2015, 10:03 #4
Алексей_Трунов, Вы посмотрели код?!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int max_of_four(int a, int b, int c, int d) 
{
    if (a > b)
        if (a > c)
            if (a > d)
                return a;
 
 
    if (b > c)
        if (b > d)
            return b;
 
    if (c > d)
        return c;
 
    return d;
}
Там вообще не должно быть сравнения, ибо так программа никогда не войдет к return c. Не может одновременно одно число быть больше другого и равно ему.

Добавлено через 3 минуты
Цитата Сообщение от Алексей_Трунов Посмотреть сообщение
С двойным равно не получается, тоже 0 выводит.
Вывести может что угодно. Потому что получается так - у Вас ни один иф ничего не вернул, а дефолтного ретурна у Вас нет(в случае если ни один иф не сработал). Потому функция вернёт то, что в валяется в регистре. Если запустите где-то на другой машине - вернёт еще какое-то число. UB.
0
Алексей_Трунов
0 / 0 / 0
Регистрация: 16.11.2015
Сообщений: 7
20.11.2015, 10:27  [ТС] #5
спасибо за подсказку, нужно было через std::max
0
Тамика
Котовчанин
918 / 461 / 145
Регистрация: 16.02.2010
Сообщений: 3,197
Записей в блоге: 27
20.11.2015, 10:28 #6
Алексей_Трунов, Вы ж написали, что
Цитата Сообщение от Алексей_Трунов Посмотреть сообщение
нужно написать функцию, которая принимает 4 целых числа и выводит максимальное.
Решите уж, что там нужно...
0
Kerry_Jr
Модератор
Эксперт PHP
2206 / 2002 / 701
Регистрация: 14.05.2014
Сообщений: 5,867
Записей в блоге: 1
Завершенные тесты: 5
20.11.2015, 10:42 #7
Алексей_Трунов, Тамика, можно еще так попробовать
C++
1
2
3
4
5
6
7
8
9
int Max(int a, int b, int c, int d)
{
    int max = a;
    if (max < b) max = b;
    if (max < c) max = c;
    if (max < d) max = d;
    
    return max;
}
1
20.11.2015, 10:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2015, 10:42
Привет! Вот еще темы с ответами:

Функция. Найти максимум - C++
Даны шесть целых чисел. Определить максимальное из них. Оформить функцию, находящую максимальное из двух чисел. Использовать эту функцию.

Найти максимум в массиве - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; #include &lt;math.h&gt; using namespace std; int main() { ...

Найти максимум функции - C++
дана задача количество точек любое, есть функция у=(х*х)-(х/2), найти максимум этой функции! тоесть я понимаю так, для начала мы...

Найти максимум из трех переменных - C++
Нужно присвоить d как максимальное из переменных a,b,c.


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

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

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