Я работаю над поиском минимального значения в случайном массиве, и кто-нибудь знает, почему мой код не работает? C ++ - PullRequest
1 голос
/ 01 октября 2019

Вот что я сделал. Я работаю над поиском минимального значения в случайном массиве. Кто-нибудь знает, почему мой код не работает? Выводится с наименьшим значением: 0 и находится на комплексном числе

#include <iostream>
#include <stdlib.h> 
using namespace std;

int main()
{
    int x,min,n;
    int array[1000];
    for(int i=1;i<=1000;i++)
        {
        x = rand()% 1000 + 1;
        array[i] = x;
        }
    min=array[0];
    for(int i=0;i<1000;i++)
        {       
            if(array[i]<min) 
            {   
                min=array[i];
                n=i;
            }
        }
        cout<<"The Lowest Value : "<<min<<"\nIts located at { "<< n <<" }"<<endl;
        cout<<" "<<endl;
    return 0;
}

1 Ответ

1 голос
/ 01 октября 2019

Привыкайте всегда инициализировать ваши переменные. В этом случае вы используете n до того, как оно будет написано в первый раз.

int x=1,min=1001,n=0;

Также прислушайтесь к подсказке seccpur (в качестве альтернативы моей) из комментариев.
Опять моя, для полного ответа:
Привыкайте for(int i=0;i<arraysize;i++) в C ++. В противном случае вы всегда будете отключаться при индексировании 0.

for(int i=0;i<1000;i++)

Обе проблемы вместе приводят к проблеме вывода странного индекса (из неинициализированного n) и неправдоподобного значения 0 (из неинициализированногоarray[0]).
При вашем способе случайных чисел 0 невозможно, но если оно окажется в индексе 0, то оно будет самым низким из всех и никогда не будет заменено чем-либо незначительным.

Вам повезло (на самом деле я считаю, что мне не повезло, что мне не сообщили об ошибке такого рода ...) с доступом за пределы массива ...

...