我想要做的是比较两个数组A和B,以及数组B中没有出现在数组A中的数字。
http://pastebin.com/u44DKsWf我的完整代码。
我认为问题始于第42行。
int writingPosition = 1;
for (int c = 1; c<=firstArrayLength; c++)
{
for(int z = 1; z>secondArrayLength; z++)
{
if (firstArray[c] != secondArray[z])
{
thirdArray[writingPosition] = secondArray[z];
writingPosition++;
}
if (firstArray[c] == secondArray[z])
{
thirdArray[c] == '0'; // NEED FIXING I GUESS
}
}
}
我的想法是我将不适合我的任务的数字标记为'0',所以稍后我可以打印数组而忽略0。
谢谢!
答案 0 :(得分:1)
您可以使用C ++标准库中binary_search
模块中的algorithm
请注意,这适用于std::vector
。
#include <array>
#include <iostream>
#include <algorithm>
int main()
{
std::array<int, 3> firstArray { 1, 3, 5 }; // stack based array like int[3]
std::array<int, 3> secondArray { 2, 3, 4 };
// Sort first array to be able to perform binary_search on it
std::sort(firstArray.begin(), firstArray.end());
for (const auto secondArrayItem : secondArray)
{
// Binary search is a very efficient way of searching an element in a sorted container of values
if (std::binary_search(firstArray.begin(), firstArray.end(), secondArrayItem) == false)
{
std::cout << "Item " << secondArrayItem << " does not exist in firstArray" << std::endl;
}
}
return 0;
}
答案 1 :(得分:0)
您的代码有很多问题。
大小s
的数组总是从0到s-1
,所以在你的情况下你应该使用
for(int g = 0; g<50; g++)
i.s.o。
for(int g = 0; g<=50; g++)
和其他数组相似
其次,您使用char
元素填充第三个数组,然后将它们与int
进行比较
thirdArray[c] == '0';
以后
if(thirdArray[g] != 0)
两次都使用'0'
或0
,但不要混淆它们。
但是通用算法也没有多大意义,你将基于索引c
作为索引z
覆盖第三个数组。
z
的范围也没什么意义。
(我认为这是家庭作业,或者至少你正在努力学习,所以不会简单地给出解决方案)
答案 2 :(得分:0)
为什么不存储字符串中不存在的数字然后从cout打印字符串?这就是你如何做到这一点:
string output = "";
bool isFound = false;
for (int c = 1; c<=secondArrayLength; c++)
{
isFound = false;
for(int z = 1; z>firstArrayLength; z++)
{
if (secondArray[c] == firstArray[z])
{
isFound = true;
}
}
if(!isFound)
output+=(secondArray[c].str()+" ");
}
cout<<output;
试试这个必须正常工作
答案 3 :(得分:0)
对代码的更正应该有点像:
int writingPosition = 1;
for (int c = 1; c<=firstArrayLength; c++)
{
for(int z = 1; z<=secondArrayLength; z++)
{
if (firstArray[c] != secondArray[z])
{
thirdArray[writingPosition] = secondArray[z];
writingPosition++;
}
if (firstArray[c] == secondArray[z])
continue;
}
}
旁注:首选使用
0
作为数组的基本索引。