1

我是 C++ 新手,我需要一些帮助来创建这个程序:我需要询问列表的大小,然后获取包含整数的列表,然后询问第二个列表的大小并获取这些整数。

到目前为止,我有这个:

#include <iostream>
using namespace std;
int main()

{
long int ARR[10];
int i,n;

printf("List 1 size: ");
scanf("%d",&n);

printf("List 1 data: ");
for(i=0;i<n;i++)
{
    scanf("%ld",&ARR[i]);

}

所以这将作为第一个列表的输入。现在我将在第二个列表中重复这一点。但关键是我现在需要比较这两个列表。如果 list1 在 list2 中,那么我说是,或者如果不是,那么不。

我该如何比较这两个列表?我在输入的正确轨道上吗?

谢谢,

空和平

4

2 回答 2

0

我认为您应该使用动态数组或 stl 的向量来存储数据。

例如,动态。大批:

int size;
scanf("%d", size);
int *tab = new int[size];
...
delete[] tab;

或矢量方式:

#include <vector>
...
int size;
scanf("%d", size);
vector <int> tab(size);
// to insert an element, use tab.push_back( number );
// and getting an element goes array-way, for example tab[0];

还有我的话——如果你用 C++ 编写,请使用 cin 和 cout 进行输入/输出,除非你需要额外的速度或特定的格式。请记住,该列表与数组/向量不同。

于 2012-12-08T23:34:48.660 回答
0

我想这就是你所期望的。

#include <iostream>
#include <algorithm>
#include <vector>
#include <utility>

using namespace std;

bool mypredicate (int i, int j) {
  return (i==j);
}

int main(){
    int size_list = 0;
    vector<int> list1, list2;

    cin >> size_list;

    list1.resize(size_list);
    list2.resize(size_list);

    cout << list1.size() << endl;

    for (int i = 0; i < size_list; i++)
        cin >> list1[i];

    for (int i = 0; i < size_list; i++)
        cin >> list2[i];

    pair<vector<int>::iterator,vector<int>::iterator> mypair;
    mypair = mismatch (list1.begin(), list1.end(), list2.begin(), mypredicate);


    if( mypair.first == list1.end() && mypair.second == list2.end() )
        cout << "are equals" << endl;
    else{
        cout << "aren't " << endl;
        cout << *mypair.first << ", " << *mypair.second << endl;
    }

    system("pause");
    return 0;
}
于 2012-12-08T23:58:14.533 回答