Предупреждение о контроле расхода в функции

Я сделал функцию, чтобы проверить массив на наличие отрицательных чисел, а затем вернуть значение; это занимает int testArray[] в качестве первого параметра и int n=14 как размер массива. Я использовал цикл for, чтобы перейти через массив. Я использую if заявление для сравнения testArray[i]<0 и у меня есть else Заявление на печать сообщения о том, что не найдено отрицательных чисел. Код компилируется без ошибок, но у меня нет вывода. Я получаю предупреждение:

In function 'int countNegative(int*, int)':
28:1: warning: control reaches end of non-void function [-Wreturn-type]

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

    #include <iostream>
#include <cstdlib>
using namespace std;

int countNegative(int testArray[],int n);

int main(){
int testArray[] = {-2,0,44,12,-45,17,934,-21,67,88,91,1,0,6};
int n = 14;

countNegative(testArray,n);

system("PAUSE");
//EXIT_SUCCESS;
return 0;
}

int countNegative(int testArray[],int n){
for(int i=0; i<n; i++){
if(testArray[i]<0){
int index = testArray[i];
return index;
}
else{
cout << "No Negative Numbers";
}
}
}

0

Решение

Есть несколько проблем с вашим countNegative функция.

int countNegative(int testArray[],int n){
for(int i=0; i<n; i++){
if(testArray[i]<0){
int index = testArray[i]; // <= You are returning value here, not the index in the array.
return index;
}
else{
cout << "No Negative Numbers";
// No return here, should have returned 0 ?
}
}
// No return here ?
}

По названию функции похоже, что она будет считать отрицательные значения в testArray и вернуть общее количество отрицательных значений.

Почему вы получаете это предупреждение?

Это потому, что, скажем, нет отрицательных чисел в testArray, В таком случае вы ничего не возвращаете, т. Е. Ваш элемент управления может также достичь вашего оператора else без какого-либо возвращаемого значения. Элемент управления также может достигать конца вашей функции, не возвращая никакого значения оттуда. Поскольку вы отметили тип возвращаемого значения как int, вы должны возвращать целочисленное значение во всех этих условиях.

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

    int countNegative(int testArray[],int n){
int total_negatives = 0;
for(int i=0; i<n; i++){
if(testArray[i]<0){
total_negatives++;
}
}
if (total_negatives == 0)  cout << "No Negative numbers\n";
return total_negatives;
}

комплектно-программа

0

Другие решения

У вас должна быть переменная int, чтобы получить возвращаемое значение от вызова функции. Ваш написанный код вернет только первый индекс первого отрицательного числа, найденного в вашем массиве. Если вам нужно количество отрицательных чисел, вы не должны сразу возвращаться. Кроме того, если у вашего массива нет отрицательных значений, вы никогда ничего не возвращаете, вы только распечатали бы сообщение о том, что отрицательных значений нет, и в итоге вы напечатали бы, что для каждого элемента в вашем массиве способ написания вещей ,

Я бы переписал это так. Эта функция будет возвращать количество отрицательных чисел, найденных в массиве, или 0, если отрицательные числа не были найдены.

int countNegative(int testArray[],int n){
int negs = 0;

for(int i=0; i<n; i++){
if(testArray[i]<0){
negs++;
}
}

return (negs);

}

И тогда вы должны изменить свою основную функцию следующим образом.

int main(){
int testArray[] = {-2,0,44,12,-45,17,934,-21,67,88,91,1,0,6};
int n = 14;
int foundNegatives = countNegative(testArray,n);
if ( ! foundNegatives ) {
cout << "No Negative Numbers";
}

system("PAUSE");
//EXIT_SUCCESS;
return 0;
}
0

По вопросам рекламы [email protected]