• 締切済み

プログラミング

c言語プログラミングについて教えてください。 2次元配列で以下の様に数字の昇順(渦巻き状に)にアクセスするにはどうしたらいいでしょうか? 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9

みんなの回答

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

アクセスするヶ所の添字を定義しておくとか。 struct position_t { int x; int y; }; struct position_t pos[] = { { 0, 0}, { 1, 0}, { 2, 0}, { 3, 0}, { 4, 0}, { 4, 1}, { 4, 2}, { 4, 3}, { 4, 4}, { 3, 4}, { 2, 4}, { 1, 4}, { 0, 4}, { 0, 3}, { 0, 2}, { 0, 1}, { 1, 1}, { 2, 1}, { 3, 1}, { 3, 2}, { 3, 3}, { 2, 3}, { 1, 3}, { 1, 2}, { 2, 2}, {-1, -1}, }; int dim2x2[5][5]; for (int i = 0; pos[i].x >= 0; i++) { dim2x2[pos[i].y][pos[i].x] }

  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.1

動作確認していないけれどこんな感じかな。 int count, index1, index2, direction1, direction2, range; begin, val; index1=-1; direction1=1; range=5; for (count=1; count<=25;count++){ index1+=direction1; index2+=direction2; val=array[index1][index2]; if (index1==range && index2==begin) { direction1=0; direction2=1; } else if (index1==range && index2==range) { direction1=-1; direction2=0; } else if (index1==begin && index2==range) { range--; begin++; direction1=0; direction2=-1; } else if (index1==begin && index2==begin) { direction1=1; direction2=0; } }

関連するQ&A