Попытка найти самый низкий введенный ввод, но всегда оценивается в 0 - PullRequest
0 голосов
/ 26 марта 2019

Цель состоит в том, чтобы пользователь ввел числа и напечатал самое высокое и самое низкое введенное значение.Моя проблема в том, что результат всегда оценивается в 0.

Я пробовал объявлять переменные внутри и снаружи основной функции.Однако я бы предпочел оставить их в основной функции.

Я также пытался сделать их необъявленными и равными 0, но в итоге я получил тот же результат.

float accumulate = 0;
int inpt;

    //While loop that lasts until while loop breaks. Printf outside of while loop because it's annoying.
    printf("Enter some numbers. Enter -1 to stop.\n");
    while (inpt > -1) {
        scanf_s("%i", &inpt);

        if(inpt < lowest & inpt > 0) {
            lowest = inpt;
            total++;
            accumulate += inpt;
            printf("%i\n", lowest);

Если я введу 5, 6, 7, я ожидаю, что самое низкое целое число будет 5, но оно выдает 0

Ответы [ 2 ]

1 голос
/ 26 марта 2019

Ну, нет четкого понимания в том, что вы пытаетесь там архивировать.Пока у вас нет значений min и max, с которыми вы можете сравнить его, вы можете попробовать что-то вроде следующего:

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

int main( void )
{
    int input   = 0;
    int min     = 0;
    int max     = 0;
    int flag    = 0;
    int i       = 0;

    while (  i < 10 ) // stop after 9 Inputs
    {
        printf( "INPUT = " );
        if ( scanf( "%d", &input ) != 1 )
        {
            printf( "Error,scanf()\n" );
            exit( EXIT_FAILURE );
        }

        if ( flag == 0 )
        {
            min = input;
            flag = 1;
        }

        if ( input > max )
        {
            max = input;
        }else if ( input < min )
        {
            min = input;
        }
        if ( min != max ) // Do not print if input is always the same.
        {
            printf( "\t\tlow = %d | High = %d\n", min, max );
        }
        i++;
    }
}

Вывод:

INPUT = 5
INPUT = 6
        low = 5 | High = 6
INPUT = 7
        low = 5 | High = 7
INPUT = 4
        low = 4 | High = 7
INPUT = 5
        low = 4 | High = 7
INPUT = 1
        low = 1 | High = 7
INPUT = 2
        low = 1 | High = 7
INPUT = 8
        low = 1 | High = 8
INPUT = 7
        low = 1 | High = 8
INPUT = 3
        low = 1 | High = 8

Ваша программа должна знать, какой номер lower, а какой номер higher, если у вас нет номеров, вам нужно установить их самостоятельно.

0 голосов
/ 26 марта 2019

Я не очень понимаю, что говорят некоторые из вас, ребята, и этот код, который я разместил, был неполным, но если кто-то пытается, чтобы пользователь ввел набор чисел и вернул наименьшее число,

Я обошел это, изменив

if(inpt < lowest && inpt > 0) {
            lowest = inpt;
            total++;
            accumulate += inpt;

до

if(inpt < lowest && inpt > 0 || lowest == 0) {
            lowest = inpt;
            total++;
            accumulate += inpt;

Это помещает оператор ИЛИ, который проверяет, установлено ли наименьшее значение 0, и заменяет его на первый введенный фактический номер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...