行列について(c++)
Posted: 2009年12月16日(水) 03:33
今回は3x3行列の表示、行・列の入れ替え、転置行列という宿題についての質問です。
宿題の内容は以下の通りです。
=問題=
以下の機能を持つプログラムを作成する。
行列(要素は整数型、3行x3列)に値を入力する
行列を表示する
利用者が入力した列番号に基づいて、行列の2つの列を入れ替える
利用者が入力した行番号に基づいて、行列の2つの行を入れ替える
転置行列を求める
=演習問題の考え方=
1) プログラムを1つにまとめる
機能毎に関数を定義する
主プログラム(main)
行列に値を入力する関数(getMatrix)
行列を表示する関数(showMatrix)
利用者が入力した列番号に基づいて、行列の2つの列を入れ替える関数(exchangeColumn)
利用者が入力した列番号に基づいて、行列の2つの行を入れ替える関数(exchangeRow)
転置行列を求める関数(transposeMatrix)
機能の一覧を表示する関数(showMenu)
アルゴリズム、プログラムは、関数毎に独立に作成する
2) プログラムの構造
行列は大域変数とする
二次元配列を用いる
行列以外の変数は局所変数とする
main関数の役割
利用者が各機能を選べるようにする
利用者の指示に従って、各機能を呼び出す
その他の関数の役割
指定された機能だけを完全に実現する
それ以外の機能を含めない
3) 機能の一覧
機能番号は定数で定義する
例:終了(0)、値の入力(1)、表示(2)、列の入れ替え(3)、行の入れ替え(4)、転置(5)
main関数のステップ3-1~3-4はswitch文で実現する
機能の一覧を表示する関数showMenuを定義する
main関数の中で2回使う (参考例を参照)
機能:機能の一覧と機能番号を一覧表示する
アルゴリズム
定数: 配列の行数 N 3
配列の列数 M 3
定数: 機能番号「終了」 0
機能番号「値の入力」 1
機能番号「表示」 2
機能番号「列の入れ替え」 3
機能番号「行の入れ替え」 4
機能番号「転置」 5
大域変数: 配列 int matrix[N][M]
主プログラム
変数: 機能番号 int functionNumber
入替えする列番号 int column1,column2
1. 機能の一覧を表示する。
2. 機能番号を入力する。
3. 機能番号が「終了」でない限り以下の処理を繰り返す。
3-1. 「値の入力」が指定されたならば、行列に値を入力する。
3-2. 「表示」が指定されたならば、行列を表示する。
3-3. 「列の入れ替え」が指定されたならば、以下の処理を実行する。
3-3-1. 入れ替える列の番号column1, column2を入力する。
3-3-2. 配列のcolumn1列とcolumn2列を入れ替える。
3-4. 「行の入れ替え」が指定されたならば、以下の処理を実行する。
3-4-1. 入れ替える行の番号row1, row2を入力する。
3-4-2. 配列のrow1行とrow2行を入れ替える。
3-5. 「転置」が指定されたならば、行列を転置する。
3-6. 機能の一覧を表示する。
3-7. 機能番号を入力する。
行列に値を入力する
引数:なし
1. 各行row に対して以下の処理を繰り返す。
1-1. 当該行の各列column に対して以下の処理を繰り返す。
1-1-1. 行列の row行 column列の要素に値を入力する。
行列を表示する
引数:なし
1. 各行row に対して以下の処理を繰り返す。
1-1. 当該行の各列column に対して以下の処理を繰り返す。
1-1-1. 行列の row行 column列の要素の値を表示する。
1-2. 改行する。
行列の列を入替える
引数: 入れ替え対象の列番号: int column1, column2
1. 各行rowに対して以下の処理を繰り返す。
1-1. 行列の row 行 column1列目の要素とrow 行 column2 列目の要素とを入れ替える。
行列の行を入替える
引数: 入れ替え対象の行番号:
int row1, row2
1. 各列columnに対して以下の処理を繰り返す。
1-1. 行列の row1 行 column列目の要素とrow2 行 column 列目の要素とを入れ替える。
行列を転置する
引数:なし
1. 各行row に対して以下の処理を繰り返す。
1-1. 当該行の0~row-1番目までの各列column に対して以下の処理を繰り返す。
1-1-1. 行列の row 行 column 列目の要素とcolumn 行 row 列目の要素とを入替える。
機能の一覧を表示する
引数:なし
1. 「機能番号 0 は プログラムを終了する。」と表示する。
2. 「機能番号 1 は 行列に値を入力する。」と表示する。
3. 「機能番号 2 は 行列の値を表示する。」と表示する。
4. 「機能番号 3 は 行列の指定された行を入れ替える。」と表示する。
5. 「機能番号 4 は 行列の指定された行を入れ替える。」と表示する。
6. 「機能番号 5 は 行列を転置する。」と表示する。
OS:Vista
コンパイラ:VC++ 2008
C++は数カ月程度の初心者です。
五度目の投稿なので至らないところもあると思いますが、どうかよろしく願いします。
宿題の内容は以下の通りです。
=問題=
以下の機能を持つプログラムを作成する。
行列(要素は整数型、3行x3列)に値を入力する
行列を表示する
利用者が入力した列番号に基づいて、行列の2つの列を入れ替える
利用者が入力した行番号に基づいて、行列の2つの行を入れ替える
転置行列を求める
=演習問題の考え方=
1) プログラムを1つにまとめる
機能毎に関数を定義する
主プログラム(main)
行列に値を入力する関数(getMatrix)
行列を表示する関数(showMatrix)
利用者が入力した列番号に基づいて、行列の2つの列を入れ替える関数(exchangeColumn)
利用者が入力した列番号に基づいて、行列の2つの行を入れ替える関数(exchangeRow)
転置行列を求める関数(transposeMatrix)
機能の一覧を表示する関数(showMenu)
アルゴリズム、プログラムは、関数毎に独立に作成する
2) プログラムの構造
行列は大域変数とする
二次元配列を用いる
行列以外の変数は局所変数とする
main関数の役割
利用者が各機能を選べるようにする
利用者の指示に従って、各機能を呼び出す
その他の関数の役割
指定された機能だけを完全に実現する
それ以外の機能を含めない
3) 機能の一覧
機能番号は定数で定義する
例:終了(0)、値の入力(1)、表示(2)、列の入れ替え(3)、行の入れ替え(4)、転置(5)
main関数のステップ3-1~3-4はswitch文で実現する
機能の一覧を表示する関数showMenuを定義する
main関数の中で2回使う (参考例を参照)
機能:機能の一覧と機能番号を一覧表示する
アルゴリズム
定数: 配列の行数 N 3
配列の列数 M 3
定数: 機能番号「終了」 0
機能番号「値の入力」 1
機能番号「表示」 2
機能番号「列の入れ替え」 3
機能番号「行の入れ替え」 4
機能番号「転置」 5
大域変数: 配列 int matrix[N][M]
主プログラム
変数: 機能番号 int functionNumber
入替えする列番号 int column1,column2
1. 機能の一覧を表示する。
2. 機能番号を入力する。
3. 機能番号が「終了」でない限り以下の処理を繰り返す。
3-1. 「値の入力」が指定されたならば、行列に値を入力する。
3-2. 「表示」が指定されたならば、行列を表示する。
3-3. 「列の入れ替え」が指定されたならば、以下の処理を実行する。
3-3-1. 入れ替える列の番号column1, column2を入力する。
3-3-2. 配列のcolumn1列とcolumn2列を入れ替える。
3-4. 「行の入れ替え」が指定されたならば、以下の処理を実行する。
3-4-1. 入れ替える行の番号row1, row2を入力する。
3-4-2. 配列のrow1行とrow2行を入れ替える。
3-5. 「転置」が指定されたならば、行列を転置する。
3-6. 機能の一覧を表示する。
3-7. 機能番号を入力する。
行列に値を入力する
引数:なし
1. 各行row に対して以下の処理を繰り返す。
1-1. 当該行の各列column に対して以下の処理を繰り返す。
1-1-1. 行列の row行 column列の要素に値を入力する。
行列を表示する
引数:なし
1. 各行row に対して以下の処理を繰り返す。
1-1. 当該行の各列column に対して以下の処理を繰り返す。
1-1-1. 行列の row行 column列の要素の値を表示する。
1-2. 改行する。
行列の列を入替える
引数: 入れ替え対象の列番号: int column1, column2
1. 各行rowに対して以下の処理を繰り返す。
1-1. 行列の row 行 column1列目の要素とrow 行 column2 列目の要素とを入れ替える。
行列の行を入替える
引数: 入れ替え対象の行番号:
int row1, row2
1. 各列columnに対して以下の処理を繰り返す。
1-1. 行列の row1 行 column列目の要素とrow2 行 column 列目の要素とを入れ替える。
行列を転置する
引数:なし
1. 各行row に対して以下の処理を繰り返す。
1-1. 当該行の0~row-1番目までの各列column に対して以下の処理を繰り返す。
1-1-1. 行列の row 行 column 列目の要素とcolumn 行 row 列目の要素とを入替える。
機能の一覧を表示する
引数:なし
1. 「機能番号 0 は プログラムを終了する。」と表示する。
2. 「機能番号 1 は 行列に値を入力する。」と表示する。
3. 「機能番号 2 は 行列の値を表示する。」と表示する。
4. 「機能番号 3 は 行列の指定された行を入れ替える。」と表示する。
5. 「機能番号 4 は 行列の指定された行を入れ替える。」と表示する。
6. 「機能番号 5 は 行列を転置する。」と表示する。
OS:Vista
コンパイラ:VC++ 2008
C++は数カ月程度の初心者です。
五度目の投稿なので至らないところもあると思いますが、どうかよろしく願いします。