2017-01-01 25 views
-1

私はすべての文字列インデックスを調べ、偶数インデックスを最初に印刷し、すべての奇数インデックスを印刷しようとしています。しかし、私はセグメンテーションエラーが発生していると私はそれが原因で発生するか分からない。ここで文字列配列内のすべての文字を移動する

は私のコードです:

int sum; 
vector<string> array; 
string temp; 
for (int i = 0; i < num; i++) { 
    cin >> array[i]; 
} 

for (int i = 0; i < num; i++) { 
    temp = array[i]; 
    for (int j = 0; j < temp.size(); j++) { 
     sum = j; 
     if (sum % 2 == 0) { 
      cout << array[i][j]; 
     } 
    } 
} 
cout << " "; 
for (int i = 0; i < num; i++) { 
    temp = array[i]; 
    for (int j = 0; j < temp.size(); j++) { 
     sum = j; 
     if (sum % 2 != 0) { 
      cout << array[i][j]; 
     } 
    } 
} 

誰もが私が間違っているのか見ていますか?

+0

変数 'sum'のポイントは何ですか? – Shubham

+0

'sum%2'は必要ありません。インクリメントを 'i + = 2'に、' j'を同様に設定する必要があります。偶数の場合は0から、奇数の場合は1から開始します。 –

答えて

0

vector<string> arrayvectorですが、あなたは、このように範囲外の取得、最初のループでcin >> array[i];とそのi番目の値にアクセスしようとしている(インデックス番目一切iはありません!)とセグメンテーション違反。

あなたは動的ベクトルに新しい値を追加する必要がありますまたはスペースの必要量を事前に割り当て:

// in the first loop 
string test; 

cin >> test; 
array.push_back(test); 

別のオプション:

// change the declaration 
vector<string> array(num); // a vector of size num 

// or pre-allocate memory after initialisation 
vector<string> array; 
array.resize(num); 
// then the loop... 
0

あなたはサイズを宣言していませんstd::vector <std::string> arrayで、セグメント化エラーが発生するインデックスを作成しようとしています。 array.push_back()を使用して値を挿入するか、ベクトルを宣言するときにサイズを定義する必要があります。

次のいずれかの

std::vector <std::string> array (num); // given num is known beforehand 

または:あなたのループが範囲外に行っているので、

vector<string> array; 
string temp; 
for (int i = 0; i < num; i++) { 
    cin >> temp; 
    array.push_back(temp); 
} 
1

あなたは、正しく配列を移入されていません。

代わりに、より多くのこのような何かを試してみてください:

vector<string> array; 
string temp; 

array.resize(num); 
for(int i = 0; i < num; ++i) 
{ 
    cin >> array[i]; 
} 
/* Alternatively: 
for(int i = 0; i < num; ++i) 
{ 
    cin >> temp; 
    array.push_back(temp); 
} 
*/ 
/* Alternatively: 
copy_n(istream_iterator<string>(cin), num, back_inserter(array)); 
*/ 

for(int i = 0; i < num; ++i) 
{ 
    temp = array[i]; 
    for(int j = 0; j < temp.size(); j += 2) 
    { 
     cout << temp[j]; 
    } 
} 

cout << " "; 

for(int i = 0; i < num; ++i) 
{ 
    temp = array[i]; 
    for(int j = 1; j < temp.size(); j += 2) 
    { 
     cout << temp[j]; 
    } 
} 
関連する問題