#include <iostream>
using namespace std;
int main()
{
int a, count = 0;
cin >> a;
int x[a], y[a], istix[a], istiy[a], br1 = 0, br2 = 0;
for (int i = 0; i < a; i++)
cin >> x[i] >> y[i];
for (int i = 0; i < a; i++){
for (int j = 0; j < a; j++){
if(x[i] == y[j]){
count++;
istix[br1] = i;
istiy[br2] = j;
br1++;
br2++;
}
}
}
if (count >= 3){
cout << "Pozicii na isti elementi vo prvata niza:" << endl;
for (int i = 0; i < br1; i++)
cout << istix[i] << endl;
cout << "Pozicii na isti elementi vo vtorata niza:" << endl;
for (int i = 0; i < br2; i++)
cout << istiy[i] << endl;
}
return 0;
}
我正在编写一个任务,我必须检查两个数组中是否有超过3个元素具有相同的值,如果是这样,我必须在两个数组中输出它们的索引。
我的程序正确输出第一个数组,但不适用于第二个数组。我对两者使用了相同的方法,为什么它不起作用?
5
9 4
2 5
4 1
5 9
12 59
Pozicii na isti elementi vo prvata niza:
0
2
3
Pozicii na isti elementi vo vtorata niza:
3
0
1
这是实际输出,除最后一个数组外,一切都正确:
3
0
1
应该是:
0
1
3
答案 0 :(得分:0)
int a, count = 0;
cin >> a;
int x[a], y[a], istix[a], istiy[a] ...; // WRONG!
这不是有效的C ++代码。你不能声明一个未知大小的数组 - 它必须是一个常量表达式。
如果您需要动态数组,则需要使用new
(以及相应的delete
)或使用适合您的工作容器(例如std::vector
)。< / p>
int a;
cin >> a;
int* x = new int[a]; // this will create a dynamic array with a elements
...
delete [] x;
或者
int a;
cin >> a;
std::vector<int> vec(a);