Как сравнить пользовательский ввод с массивом, проверяя, меньше ли он последнего ввода - PullRequest
0 голосов
/ 18 февраля 2019

Я должен запросить ввод данных для 10 разных номеров.Я должен увидеть, если пользовательский ввод меньше, чем последний введенный номер (который был добавлен в массив).У меня возникли проблемы при сравнении, так как моя логика кажется здравой, но по какой-то причине она не будет хранить младшие числа, введенные ранее в цикле.Может быть, вы, ребята, можете взглянуть и увидеть, в чем проблема в моем заявлении if.Функция getNum () просто получает пользовательский ввод и возвращает его, если вам интересно.Заранее спасибо!

#include <stdio.h>   //including for the use of printf

/* == FUNCTION PROTOTYPES == */
int getNum(void);

/* === COMPILER DIRECTIVE - to ignore the sscanf() warning === */
#pragma warning(disable: 4996)


int main(void)
{   
// defining varibles
int myArray[11] = { 0 };
int counter = 0;
int indexTracker = -1;
int numInput = 0;
int lowestNum = 0;
int lowestNumPlace = 0;

// printing as to why I need 10 numbers
printf("I require a list of 10 numbers to save the world!\n");

// while loop
// while 'counter' is less than or equal to 9, loop
while (counter <= 9)
{
    // adding 1 to each varible, everytime the program loops
    indexTracker += 1;
    counter += 1;

    // printing to request a number, giving which number they are 
            // inputting
    // out of the list of 10
    // calling getNum() for input, saving the number into the array
    printf("Please enter a number for #%d: ", counter, "spot\n");
    numInput = getNum();
    myArray[indexTracker] = numInput;

    if (numInput <= myArray[indexTracker])
    {
        lowestNum = numInput;
        lowestNumPlace = indexTracker;
    }
}
// printing the lowest value and its index
printf("The lowest number is: %d at index [%d].", lowestNum, 
lowestNumPlace);

return 0;
}

1 Ответ

0 голосов
/ 18 февраля 2019

Вы всегда присваиваете новое значение lowestNum

numInput = getNum();
myArray[indexTracker] = numInput;

if (numInput <= myArray[indexTracker])
{
    lowestNum = numInput;
    lowestNumPlace = indexTracker;
}

... потому что после выполнения A = B B <= A будет логически всегда истинным. </p>

Попробуйте вместо этого:

numInput = getNum();
myArray[indexTracker] = numInput;

if (numInput <= lowestNum)  // note, comparing to the lowest number, not the current one
{
    lowestNum = numInput;
    lowestNumPlace = indexTracker;
}
...