前提・実現したいこと
matrix[N][N]の配列を[i][j]=[j][i]となるように代入によって書き換えること。
書き変えた後に、matrix[i][j]で表示させること。
/ここを考える/の所を変更することで、書き換えます。
発生している問題・エラーメッセージ
・斜め上側だけ書きかえれて、斜め下半分が書きかえれないこと。
matrix[i][j]=matrix[j][i];
にすると、半分から上と下が同じ値が表示される。
temp=matrix[i][j];、matrix[i][j]=matrix[j][i]、matrix[i][j]=temp;
を行っても同じ値が表示されること。
該当のソースコード
c言語
#include <stdio.h>
#define N 5
int main(void) {
int i, j,temp;
int matrix[N][N] ={
{ 12, 43, 26, 75, 20 },
{ 89, 72, 49, 42, 38 },
{ 91, 29, 54, 71, 9 },
{ 69, 77, 14, 92, 28 },
{ 50, 62, 90, 77, 19 }};
printf("転置前に確認する。\n"); printf("{\n"); for (i = 0; i < N; i++) { printf("{ "); for (j = 0; j < N; j++) { printf("%2d, ", matrix[i][j]); } printf(" },\n"); } printf("}\n"); /* ここを考えて下さい */ for (i = 0; i < N ; i++) { for (j =i+1 ; j < N ; j++) { temp = matrix[i][j]; matrix[i][j] = matrix[j][i]; } } /* ここを考えて下さい */ printf("転置後に確認する。\n"); printf("{\n"); for (i = 0; i < N; i++) { printf("{ "); for (j = 0; j < N; j++) { printf("%2d, ", matrix[i][j]); } printf(" },\n"); } printf("}\n"); return 0;
}
試したこと
・下半分だけを交換する繰り返しを作ること(同時に使えなかった)
・tempに配列をよけて、再度代入すること。
・iとjを入れ替えること
補足情報(FW/ツールのバージョンなど)
サクラエディタを使ってます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/04 12:56