C программа для check_order не работает должным образом - PullRequest
0 голосов
/ 08 июня 2018

Я использую онлайн GeeksforGeeks для обучения кодированию.Я только начал изучать, но по какой-то причине компилятор возвращает мусор, когда сумма моего ввода превышает 3616. Может ли кто-нибудь из профессионалов объяснить, почему и как улучшить мой код?

Например.вход: 1 2 3 4 5 0 выход: возрастающий порядок // сумма входных данных <3616 </p>

вход: 1 2 3614 0 выход: не возрастающий порядок // сумма входных данных> 3616

Thisбыл вопрос:

Напишите программу check_order.c для чтения в списке натуральных чисел.Программа должна продолжать запрашивать следующее положительное целое число, пока введенные целые числа находятся в возрастающем порядке.В тот момент, когда входные данные не в порядке возрастания или входное значение равно нулю, ввод заканчивается.Затем программа должна сообщить, находятся ли входные данные в порядке возрастания или нет.Вы можете предположить, что будет введено хотя бы одно положительное целое число.Если в списке только одно положительное целое число, мы будем рассматривать список в порядке возрастания.Вы можете написать весь код в функции main ().

#include <stdio.h>  

int main(void){
    int input, input2;
    do{
        input2 = input;
        scanf("%d", &input);
        printf("Enter positive integer: %d\n", input);
    }

    while(input> input2);

    if(input< input2){
        if(input == 0){
            printf("Data are in increasing order.");  
        }
        else{
            printf("Data are not in increasing order.");
        }
    }
    else{
        printf("Data are in increasing order.");
    }
    return 0;
}

Решено.Спасибо всем!!!:)

1 Ответ

0 голосов
/ 08 июня 2018

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

#include <stdio.h>  

int main() {
    int input = 0, input2;
    do {
        input2 = input;
        scanf("%d", &input);
        printf("Enter positive integer: %d\n", input);
    }
    while(input > input2);
    if (input < input2) {
        if(input == 0) {
            printf("Data are in increasing order.");  
        }
        else {
        printf("Data are not in increasing order.");
        }
    }
    else {
        printf("Data are in increasing order.");
    }
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...