Débutant en C++ ici et tableaux d'apprentissage. Le programme ci-dessous est censé séparer les nombres positifs et négatifs dans un tableau. Cependant, il renvoie des nombres aléatoires dans les fonctions splitPos et splitNeg.C++ Séparer les valeurs positives et négatives d'un tableau
Quelqu'un pourrait-il si gentiment conseiller et me montrer ce qui est incorrect dans les fonctions et que peut-on faire pour omettre ces chiffres aléatoires afin que seuls les chiffres positifs et négatifs soient retournés par le programme pour chaque fonction/boucle? Je ne vois évidemment pas et/ou ne comprends pas ce qui est incorrect.
Merci beaucoup pour votre aide et votre temps à l'avance !!!
#include <iostream>
using namespace std;
//function prototypes
int splitNeg(int[], int[], int);
int splitPos(int[], int[], int);
void displayArr(int[], int);
int main()
{
const int SIZE = 20;
int usedPos, usedNeg;
int origArr[SIZE] = { 4, -7, 12, 6, 8, -3, 30, 7, -20, -13, 17, 6, 31, -4, 3, 19, 15, -9, 12, -18 };
int posArray[SIZE];
int negArray[SIZE];
usedPos = splitPos(origArr, posArray, SIZE);
usedNeg = splitNeg(origArr, negArray, SIZE);
cout << "Positive Values: " << endl;
displayArr(posArray, usedPos);
cout << endl;
cout << "Negative Values: " << endl;
displayArr(negArray, usedNeg);
return 0;
}
int splitPos(int origArr[], int posArray[], int SIZE)
{
int j = 0;
for (int i = 0; i < SIZE; i++ && j++)
{
if (origArr[i] >= 0)
posArray[j] = origArr[i];
}
return j;
}
int splitNeg(int origArr[], int negArray[], int SIZE)
{
int k = 0;
for (int i = 0; i < SIZE; i++ && k++)
{
if (origArr[i] < 0)
negArray[k] = origArr[i];
}
return k;
}
void displayArr(int newArray[], int used)
{
for (int i = 0; i < used; i++)
cout << newArray[i] << endl;
return;
}
'i ++ && j ++' est mauvais parce que '' && les courts-circuits. Dans ce cas, vous devriez utiliser un opérateur virgule à la place: 'i ++, j ++' – Pubby
Question bien posée. – user4581301
[Regardez, pas de boucles!] (Http://ideone.com/lKycNF) – PaulMcKenzie