1

私は C++ が初めてで、このプログラムを作成するのに助けが必要です: リストのサイズを尋ね、次に整数を含むリストを取得し、次に 2 番目のリストのサイズを尋ね、それらの整数を取得する必要があります。

これまでのところ、私はこれを持っています:

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

}

したがって、最初のリストの入力が必要になります。次に、2 番目のリストについてこれを繰り返します。しかし重要な点は、2 つのリストを比較する必要があるということです。list1 が list2 にある場合は、はいと言います。そうでない場合は、いいえです。

これら 2 つのリストを比較するにはどうすればよいですか? そして、私は入力で正しい軌道に乗っていますか?

ありがとう、

空の平和

4

2 に答える 2

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 に答える
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 に答える