質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

1回答

599閲覧

m×nの行列の転置行列を求める関数の作成

cchann

総合スコア0

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

1クリップ

投稿2022/01/08 16:40

編集2022/01/08 17:38

m×nの行列の転置行列を求める関数の作成をしたいのです。
3×3や4×5など数が決まっている場合はできるのですが、数が未定の場合の関数の作り方がわかりません。

void trans(int a[4][5]) {
int i, j;
for (i = 0; i < 4; ++i) {
for (j = i+1; j < 5; ++j) {
int tmp = a[i][j];
a[i][j] = a[j][i];
a[j][i] = tmp;


気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2022/01/08 17:12

> 3×3や4×5など数が決まっている場合はできるのですが、数が未定の場合の関数の作り方がわかりません。 「3×3や4×5など数が決まっている場合」のコードを載せていただくと回答しやすくなるかと思います。(現状では言語も不明ですので)
cchann

2022/01/08 17:20

void trans(int a[4][5]) { int i, j; for (i = 0; i < 4; ++i) { for (j = i+1; j < 5; ++j) { int tmp = a[i][j]; a[i][j] = a[j][i]; a[j][i] = tmp; } } } こんな感じです。 あとc言語です。情報不足で申し訳ないです。
meg_

2022/01/08 17:36

> こんな感じです。 > あとc言語です。情報不足で申し訳ないです。 質問は編集できますのでコードは質問に追記してください。 言語の情報は質問タグを付けると回答が付きやすくなるかと思います。
guest

回答1

0

おはようございます。

以下の感じでどうでしょう。

C

1#include <stdio.h> 2 3#define A_ROW_NUM 2 4#define A_COL_NUM 4 5#define B_ROW_NUM A_COL_NUM 6#define B_COL_NUM A_ROW_NUM 7 8void trans(int a[A_ROW_NUM][A_COL_NUM],int b[B_ROW_NUM][B_COL_NUM]){ 9 int i,j; 10 11 for(i=0;i<A_ROW_NUM;i++){ 12 for(j=0;j<A_COL_NUM;j++){ 13 b[j][i] = a[i][j]; 14 } 15 } 16} 17 18/* 19 行列aの転置行列bを求める 20 行列aと転置行列bの内容を表示する 21*/ 22int main(){ 23 int i,j; 24 25 int a[A_ROW_NUM][A_COL_NUM] = { 26 { 3, 8, 9, 7}, 27 { 2, 1, 0, 5}, 28 }; 29 int b[B_ROW_NUM][B_COL_NUM]; 30 31 printf("matrix a\n"); 32 for(i=0;i<A_ROW_NUM;i++){ 33 for(j=0;j<A_COL_NUM;j++){ 34 printf("%2d ",a[i][j]); 35 } 36 printf("\n"); 37 } 38 39 trans(a,b); 40 41 printf("matrix b\n"); 42 for(i=0;i<B_ROW_NUM;i++){ 43 for(j=0;j<B_COL_NUM;j++){ 44 printf("%2d ",b[i][j]); 45 } 46 printf("\n"); 47 } 48 49 return 0; 50}

実行結果は以下のとおりです。

matrix a 3 8 9 7 2 1 0 5 matrix b 3 2 8 1 9 0 7 5

A_ROW_NUM及びA_COL_NUMを変更すれば任意のサイズの行列に対応できると思います。
以上、参考になれば幸いです。

投稿2022/01/08 19:53

srsnsts

総合スコア480

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問