Итак, я сделал этот код в c в Visual Studio, в основном он принимает в качестве входных данных код UPC продукта (12 целых чисел). Последнее целое число похоже на контрольную цифру, которая связана с предыдущими 11 цифрами с помощью формулы. Таким образом, код в основном проверяет, действителен ли код UPC или нет, используя формулу для вычисления контрольной цифры в самой программе, а затем сравнивает ее с введенным значением последней цифры: Проблема в том, что в Visual Studio только командная строка принимает ввод и зависает, так как в нем нет ввода, и если я нажимаю ввод, курсор мигает и просто переходит на новую строку ... Изменить: ввод, который я ему дал: 031564532525 Написано точно так же, без пробелов


int main() {
    // initialize the 11 digits of the UPC individually // 
    int d, i1, i2, i3, i4, i5, j1, j2, j3, j4, j5, first_sum, second_sum, total ;
    int end_dig;
    // take input from user of UPC digits //
    printf("Enter the UPC code:\n");
    scanf_s("%d%d%d%d%d%d%d%d%d%d%d%d", &d, &i1, &i2, &i3, &i4, &i5, &j1, &j2, &j3, &j4, &j5, &end_dig);
    
    // caclulate what the check digit SHOULD be according to the previous digits //
    int last_digit;
    first_sum = d + i2 + i4 + j1 + j3 + j5;
    second_sum = i1 + i3 + i5 + j2 + j4;
    total = (3 * first_sum) + second_sum;
    last_digit = 9 - ((total - 1) % 10);
    
    // compare calculated value of check digit with input value, to see wether its valid or not. //
    if (end_dig == last_digit) {
        printf("VALID\n");
    }
    else {
        printf("NOT VALID\n");
    }

    return 0;
    system("pause");

}
-1
dabadee 9 Дек 2020 в 18:50

1 ответ

Лучший ответ

Спецификатор формата %d считывает не просто одно число, а последовательность десятичных цифр. Таким образом, введенное вами число потребляется первым экземпляром %d, в результате чего программа ожидает ввода дополнительных данных, чтобы удовлетворить оставшиеся спецификаторы формата.

Вам нужно разделить цифры пробелами, чтобы вы могли читать каждую по отдельности:

0 3 1 5 6 4 5 3 2 5 2 5 

Если вы не хотите этого делать, вам нужно вместо этого прочитать одну строку, а затем проверить каждую цифру в строке.

1
dbush 10 Дек 2020 в 16:17