-8
#include <iostream>
#include <vector>
using namespace std;


vector<int> niz(10);

int main() {

    int i;
    for(i=0; i<10; i++){
        cout<<"Unesi broj: ";
        cin>>niz[i];
    }

    vector<int> obrnuto(10);
    niz[i] = obrnuto[i];

    for(i=10; i>0; i--){
        cout<<obrnuto[i]<<",";
    }
    return 0;
}

最初のベクトルに数値を逆方向に書き込んで、2 番目のベクトルに保存することになっていました...何が間違っているのかわかりません。助けてください

4

2 に答える 2

0

コードに 2 つの大きなエラーがあります。どちらも C++ などの言語のインデックスに関連しています。

0C++ では、配列のインデックスはから始まることを覚えておく必要がありますsizeOfArray-1

あれは :

for(i=0;i<10;i++){
    cout<<"Unesi broj: ";
    cin>>niz[i];
}

vector<int> obrnuto(10);
niz[i]=obrnuto[i];          // First error

for(i=10;i>0;i--){          // Second error
    cout<<obrnuto[i]<<",";
}

最初のエラー: for ループの後i=10です。したがって、ここに最初の境界外エラーがあります。

2 番目のエラー : 2 番目の for ループを 10 で開始します。つまり、開始すると、obrnuto[i]再び範囲外になります。

あなたの場合、ベクトルには 10 個の要素があるため、それらのインデックスは から0になり9ます。


次のようにして修正できます。

for(i=0;i<10;i++){
    cout<<"Unesi broj: ";
    cin>>niz[i];
}

vector<int> obrnuto(10);
niz = obrnuto; // You just want to copy the members of the vector into the second one right ?
//^^^^^^^^^^^

for ( i = 9; i >= 0; i-- ) {
    //    ^     ^
    cout<<obrnuto[i]<<",";
}
于 2013-08-26T07:54:12.960 に答える