Как найти индекс № минимума нет.в массиве? - PullRequest
0 голосов
/ 19 октября 2018

Я должен распечатать индекс минимального числа, только если они нечетные.У меня есть код, но я получил неправильный ответ?Это полный код

#include <iostream>

using namespace std;

int main()
{ 
int array[8] = { 0, 0, 0, 0, 0, 0, 0, 0};  
int min = array[0]; 
int max = array[0]; 
int indexOfMin = 0; 
int indexOfMax = 0; 
int found = 0; 

cout << "Enter the array: "; 

int k;
for(k = 0; k <= 7; k++){ 
    cin >> array[k];
}
for (int i = 0; i < 7; i++){
    if(array[i] <= min){
        min = array[i];
        indexOfMin = i;
    }

}
for (int i = 1; i < 8; i++){
    if(array[i] % 2 != 0){
    found = (array[indexOfMin] % 2) != 0;
    }
    else{
        found = 0;
    }
}
if(found == (array[indexOfMin] % 2) != 0){
    cout << indexOfMin << min << endl;
}
else{
    cout << "not found";
}

return 0;
}

Я думаю, что проблема в последнем cout

0, 5, 9, 1, 2, 9, 1, 3.для данного массива ответ должен быть 3 и 6

1 Ответ

0 голосов
/ 20 октября 2018

Ваша проблема в том, что вы печатаете минимальное значение, если любое число нечетное.

for (int i = 0; i < 7; i++){
    if(array[i] % 2 != 0){
    found == 1;
    }
}

Этот код просматривает каждое число в массиве, устанавливая флаг, если он естьодин из них странный.Вам нужно только проверить один номер.Таким образом, вы можете заменить приведенный выше код следующим:

found = (array[indexOfMin] % 2) != 0;

или более элегантно

found = array[indexOfMin] & 1;

... при условии, что вы действительно нашли значение, что не произойдет, если вынеправильно инициализировал min.Из вашего примера похоже, что min инициализируется нулем.Вы должны использовать большое число, такое как INT_MAX, чтобы убедиться, что array[0] всегда меньше min, или явно установить min в array[0] после его инициализации , а затем пропустить тестированиеarray[0].

Примечание В настоящее время ваш код содержит дополнительную ошибку.Если вы собираетесь инициализировать min в array[0], вам нужно сделать это после того, как array[0] содержит действительные данные, а не заранее.Написанный код напечатает неверный индекс, если пользователь введет 8 7 6 5 4 3 2 1.

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