gpt4 book ai didi

C++ 从数组中分离正值和负值

转载 作者:搜寻专家 更新时间:2023-10-31 01:33:57 26 4
gpt4 key购买 nike

C++ 初学者在这里学习数组。下面的程序应该将数组中的正数和负数分开。但是,它在 splitPos 和 splitNeg 函数中返回随机数。

有没有人能如此友善地建议并告诉我函数中有什么不正确的地方,以及可以做些什么来省略这些随机数字,以便程序为每个函数/循环分别返回正数和负数?我显然没有看到和/或理解不正确的地方。

非常感谢您的帮助和提前时间!!!

#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;

}

最佳答案

如果您稍微更改一下 for 循环:

int splitPos(int origArr[], int posArray[], int SIZE)
{
int j = 0;

for (int i = 0; i < SIZE; i++)
{

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++)
{
if (origArr[i] < 0)
negArray[k++] = origArr[i];

}

return k;
}

你会得到你想要的结果。

只有当您找到符合小于(或大于)0 标准的值时,目标数组的计数器变量才会增加。

老实说,我不明白你试图通过......嗯......“组合”增加来实现什么,比如 i++ && j++,这进入了短路评估。

关于C++ 从数组中分离正值和负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40445102/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com