Anfänger in C++ hier und lernen Arrays. Das folgende Programm soll positive und negative Zahlen in einem Array trennen. Es gibt jedoch Zufallszahlen in den Funktionen splitPos und splitNeg zurück.C++ Separate positive und negative Werte von einem Array
Könnte jemand jemals so freundlich beraten und mir zeigen, was in den Funktionen falsch ist und was getan werden kann, um diese zufälligen Ziffern wegzulassen, so dass nur positive und negative Ziffern vom Programm für jede Funktion/Schleife zurückgegeben werden? Ich sehe und/oder verstehe offensichtlich nicht, was falsch ist.
Vielen Dank für Ihre Hilfe und Zeit im Voraus !!!
#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 ++' ist schlecht, weil '&&' Kurzschluss. In solchen Fällen sollten Sie stattdessen einen Komma-Operator verwenden: 'i ++, j ++' – Pubby
Gut gestellte Frage. – user4581301
[Schau, keine Schleifen!] (Http://ideone.com/lKycNF) – PaulMcKenzie