невозможно преобразовать отрицательные значения в положительные в массиве? - PullRequest
0 голосов
/ 15 ноября 2018

Мне нужно вернуть true / false, если в массиве было какое-либо целое число, преобразованное в положительное число, я могу вернуть true или false, однако я не могу преобразовать отрицательные целые числа в положительное?

#include <iostream>
using namespace std;

int convertArray (int a[],int sizeofArray )     

{
bool v = false;
for (int i=0; i<sizeofArray; i++)
{   

    if(a[i]<0)
    {
        abs(a[i]);
        v = true;

    }

  cout << i << "  " << a[i] << endl;  
}
return v;



}
int main()

{
    int b[5] = {1,-2,3,5,2};
    cout << convertArray (b,5)<<endl;

        return 0;
}

Ответы [ 4 ]

0 голосов
/ 15 ноября 2018

Ваша строка

abs(a[i]);

вычисляет абсолютное значение массива "a" в позиции i и отбрасывает его, потому что он останется недоступным.

Вы должны написать

a[i] = abs(a[i]);

или более просто

a[i] = -a[i];

для преобразования отрицательного числа a [i] в ​​положительное.

0 голосов
/ 15 ноября 2018

abs просто возвращает абсолютное значение своего аргумента, которое вы затем игнорируете, не используя его. Вместо этого вам следует переназначить это значение обратно на элемент массива:

a[i] = abs(a[i]);
0 голосов
/ 15 ноября 2018

Вы получаете только абсолютное значение, но не устанавливаете его, вам нужно будет сделать a[i] = abs(a[i]);

0 голосов
/ 15 ноября 2018

утверждение:

abs(a[i]);

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

a[i] = abs(a[i]);
...