前提・実現したいこと
2次元配列に1からxをfor文を使って[0][y]から順番に格納したいです。 つまり x=20 y=3としたとき 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 0 0 0 0 0 このように表示したいです。
発生している問題・エラーメッセージ
xを20、yを3とすると x=20 y=3 0 0 0 0 0 0 0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 このような結果になってしまいます。
該当のソースコード
C++
1#include <iostream> 2#include <iomanip> 3#include <vector> 4 5int main() 6{ 7 int x,y; 8 std::cout<<"x="; 9 std::cin>>x; 10 std::cout<<"y="; 11 std::cin>>y; 12 const int a{6}, b{7}; 13 std::vector< std::vector<int> > v(a, std::vector<int>(b)); 14 for(int i=0; i < a; i++) { 15 if(i==0){ 16 for (int j=y; j<7-b; j++) { 17 for (int k=1; k<=7-b; k++){ 18 v[i][j]=k; 19 } 20 } 21 }else if(i!=0){ 22 for (int j=0; j<b; j++) { 23 for (int k=7-b; k<x+1 ; k++){ 24 v[i][j]=k; 25 } 26 } 27 } 28 } 29 for (int i=0; i<a; i++) { 30 for (int j=0; j<b; j++) { 31 std::cout << std::setw(3) << v[i][j]; 32 } 33 std::cout << "\n"; 34 } 35 return 0; 36}
試したこと
for文の中身や順番を変えてみたりしましたが
Segmentation fault
このようなエラーがでました。
回答としては不完全なので、こっちに書きます。
カレンダーの1行目の処理で、
for (int j=y; j<7-b; j++) {
としてますが、
bの値が7なので、このループは1周も回らないのではないでしょうか?
回答1件
あなたの回答
tips
プレビュー