Как проверить, что входные данные массива положительны, если в цикле for - PullRequest
0 голосов
/ 30 марта 2020

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

Я не уверен, почему это не найдено, хотя я верю, что это может быть связано с индексацией моего массива. Вот мой код:

#include <stdio.h>
#include <string.h>

double quiz_1(){
    int test_scores[3];
    double result;

    printf("Please Enter The Students Test Score (e.g. 85 65 75): ");

    for (int i = 0; i < (sizeof test_scores / sizeof test_scores[0]); i++) {
        if(scanf("%d", &test_scores[i]) < 0){
             printf("\nInvalid Input\nPlease Enter The Students Test Score (e.g. 85 65 75): ");
             i = 0;
         }
    }

result = (test_scores[0] * 0.2) + (test_scores[1] * 0.3) + (test_scores[2] * 0.5);

printf("\nThe Student's Final Grade is %.2f", result);

return 0;

}

int main() {
   quiz_1();
   return 0;
}

1 Ответ

1 голос
/ 30 марта 2020

scanf возвращает количество элементов списка аргументов, успешно заполненных. Я думаю, что вы собираетесь проверить if (test_scores[i] < 0).

...