Моя программа на C для поиска ближайшей пары чисел из пользовательского ввода не печатает правильный вывод? - PullRequest
0 голосов
/ 09 марта 2019

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

#include <stdio.h>
#include <math.h>

int main()
{
    int i, j,arr[50], first,second;

    //loop input
    for(i=0;i<50;i++) //loop 50 times
    {
        scanf("%d", &i); //scan
        //break if i=-1      
        if (i==-1)
            break;
        //if not print    
    }
    //2nd num - 1st num < 3rd num-1st num, closest = 1st and 2nd num
    //i[0]=num1, j[0+i]=2nd num, i= 4 , 5, 7, ans=arr,
    //if j[0+i]-i[0]= ans < j[0+i]-i[i]=ans 
    //arr[i]=8,2,17,4,25
    for(i=0;i<50;i++)
    {
        for(j=i+1;j<50;j++)
        {
            if(arr[j]-arr[i]<arr[j+1]-arr[i])
            {
                first = arr[i];//3
                second = arr[j+1];//5
            }
        }   
    }
    printf("%d %d\n", first, second);

 return 0;

}

Ответы [ 2 ]

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

Не публикуйте его как ответ, вместо этого отредактируйте код.В любом случае, проблема здесь:

for (j = i + 1; j < len; j++)//j<i <-why is it wrong?

Как это не так?Вы инициализировали j значением i+1.Как это должно быть когда-либо меньше i?И из-за этого он получает значения из массива и дает вам неожиданные результаты.

Правильная форма:

for (j = 0; j < i; j++)
1 голос
/ 09 марта 2019

Проблема с этим фрагментом кода. Вы сканируете в переменной счетчика i вместо массива. И затем вы манипулируете вещами, используя массив arr. Почему это должно работать в любом сценарии?

 for(i=0;i<50;i++) //loop 50 times
        {
            scanf("%d", &i); //scan
            //break if i=-1      
            if (i==-1)
                break;
            //if not print    
        }

И i никогда не может быть -1, если это не чудо.

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