Member 14955513 Ответов: 4

Программа выводит случайное 7 значное целое число вместо предполагаемого


#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a, b, c, notmin, min, max;
    printf("enter first integer\n");
    scanf("%d", &a);
    printf("enter second integer\n");
    scanf("%d", &b);
    printf("enter third integer\n");
    scanf("%d", &c);
    (a > b) ? (a = notmin) : (b = notmin);
    (c > notmin) ? (c = max) : (notmin = max);
    printf("%d", max);
    return 0;
}


Что я уже пробовал:

Я попытался написать программу, которая выводит наибольшее число из 3 целых чисел. Однако выход всегда представляет собой случайные 7-значные целые числа. В чем же проблема?

KarstenK

вы должны увидеть это при использовании отладчика :-O

4 Ответов

Рейтинг:
8

CPallini

Если вам действительно нравится C тернарный оператор, попытка

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,b,c,max;
    printf("enter first integer\n");
    scanf("%d", &a);
    printf("enter second integer\n");
    scanf("%d", &b);
    printf("enter third integer\n");
    scanf("%d", &c);

    max = a > b ? ((a > c) ? a : c) : ((b > c) ? b : c);

    printf("%d\n", max);

    return 0;
}


Однако для большей ясности я бы посоветовал вам использовать если...еще заявление[^].


Рейтинг:
28

OriginalGriff

Взгляните на свой код и задайте себе несколько вопросов.
1) Что делать notmin, min, и max с чего начать?
2) Какие изменения max?
3) Почему вы используете x ? y : z вместо if ... else?

Если вы хотите получить наибольшее из трех чисел, это легко:

Is a bigger than b?
If it is, max becomes a, otherwise it becomes b;
Is c bigger than max?
If it is, max becomes c.
Что тебе нужно min и notmax для чего?


Рейтинг:
12

Patrice T

Цитата:
Я попытался написать программу, которая выводит наибольшее число из 3 целых чисел. Однако выход всегда представляет собой случайные 7-значные целые числа. В чем же проблема?

Одна из проблем заключается в том, что вы, похоже, не знаете, как сохранить значение в переменной, проблема в том, что это курс C 101.
Во-первых, попробуйте заменить:
(a > b) ? (a = notmin) : (b = notmin);
(c > notmin) ? (c = max) : (notmin = max);

с:
(a > b) ? (notmin = a) : (notmin = b);
(c > notmin) ? (max = c) : (max = notmin);

тогда правильный синтаксис таков:
notmin = (a > b) ? a : b;
max = (c > notmin) ? c : notmin;

Совет: учитесь правильно C/C++


Рейтинг:
0

Richard MacCutchan

Вы не установили никаких значений в notmin, min или max.


Member 14955513

Но когда я устанавливаю значение в начале, оно просто распечатывается, а не число a, b, c

jeron1

Чтобы установить значение max, оно должно находиться в левой части операции присваивания, как в

макс = 5;

Richard MacCutchan

Но эти числа не являются постоянными. Вы должны начать с установки max на ноль, а min на максимально возможное значение. Затем для каждого введенного числа вам нужно сравнить его с каждым из этих чисел. Если введенное число больше max, то установите max в это новое значение. Если введенное число меньше min, то установите min в это новое значение. Я понятия не имею, что такое "нотмин".