gpt4 book ai didi

c++ - 如何将两个负数数组合并为一个数组?

转载 作者:行者123 更新时间:2023-11-30 01:45:45 24 4
gpt4 key购买 nike

我需要合并两个数组中的负数。所以我在做什么:向数组添加尽可能多的元素,然后尝试添加到 <0 的合并数组元素。这是我的尝试代码:

int main()
{

int arr1[100], arr2[100], size1, size2, size, i, j, k, merge[200];
cout<<"Enter Array 1 Size : ";
cin>>size1;
cout<<"Enter Array 1 Elements : ";
for(i=0; i<size1; i++)
{
cin>>arr1[i];
}
cout<<"Enter Array 2 Size : ";
cin>>size2;
cout<<"Enter Array 2 Elements : ";
for(i=0; i<size2; i++)
{
cin>>arr2[i];
}
for(i=0; i<size1; i++)
{
if(arr1[i]<0)
{
merge[i]=arr1[i];
}

}

size=size1+size2;
for(i=0, k=size1; k<size && i<size2; i++, k++)
{
if(arr2[i]<0)
{
merge[k]=arr2[i];
}
}
cout<<"Now the new array after merging is :\n";
for(i=0; i<size; i++)
{
cout<<merge[i]<<" ";
}

}

编译后,我得到了错误的合并数组。它打印所有负数和所有正数(但以随机数 2084562 等)。也许您知道出了什么问题以及如何解决?

最佳答案

设置合并数组元素的 2 个循环中存在逻辑错误。每次值不为负时,它们都会跳过混合数组中的索引。跳过的值在打印时仍未初始化,因此理论上它们可以是任何东西(实际上是未定义的行为)。

如何解决这个问题的一个例子是创建一个整数来计算合并数组集中的元素数量。例如:

int negativecount = 0;
for(i=0; i<size1; i++)
{
if(arr1[i]<0)
{
merge[negativecount++]=arr1[i];
}
}
size=size1+size2;
for(i=0; i<size2 && negativecount < size; i++)
{
if(arr2[i]<0)
{
merge[negativecount++]=arr2[i];
}
}

这样,您将跟踪已存储的元素数量,并且所有元素都将被正确设置。您可以使用以下方式打印它们:

for(i = 0; i < negativecount; ++i)
{
std::cout << merge[i] << " ";
}

关于c++ - 如何将两个负数数组合并为一个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34107109/

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