こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

関数の作り方について

今、4次元正方行列Lの1ノルムを求めるプログラムを作っています。
1ノルムを求めること自体は、各列の総和を取って最大値を求めるプログラムを作るだけなのでこれで合ってると思うのですが、複数の行列のノルムを求めるとき
#include<stdio.h>
int main()
{
int i,j,k;
double l[4][4],u[4][4];/*L,Uは既知の上下三角行列とする*/
double lnorm,unorm,bnorm,max;
/*L,Uそれぞれのノルムを求める。*/
norm=0;
max=0;
for(i=0;i++;i<4)/*Lの1ノルムを求める*/
{
for(j=0;j++;j<4)
{
norm = norm + l[i][j];
}
if(norm >= max){
max=norm;
}
norm=lnorm;
}
for(i=0;i++;i<4)/*Uのノルムを求める*/
{
for(j=0;j++;j<4)
{
norm = norm + u[i][j];
}
if(norm >= max){
max=norm;
}
norm=unorm;
}
bnorm=0;
のようにLとUで同じ内容のfor文を2回使ってやってるんですが
代入値が行列の場合でも関数を使ってうまくできるやり方はありませんか?

投稿日時 - 2008-08-06 02:55:33

QNo.4231215

困ってます

質問者が選んだベストアンサー

>各列の総和を取って最大値を求めるプログラムを作るだけなのでこれで合ってると思うのですが

このプログラムを実行してみましたか?
そもそも、コンパイルすら実行していないと思うのですが。。。

最低限、このプログラムが実行できるところまで確認してから、質問してください。

1. そもそもコンパイルエラーになると思います。
 for分の構文エラーやnorm変数が未定義とか

2. 意味不明なコードがある。
 「norm=lnorm;」や「norm=unorm;」、「bnorm=0;」の意味は?

3. 関数を作成して、その引数に配列(そもそも行列じゃない)を渡してあげれば、可能です。

 http://ysserve.int-univ.com/sugsi/Lecture/c2/e_05-01-06.html

投稿日時 - 2008-08-08 12:54:37

お礼

ありがとうございました

投稿日時 - 2011-01-10 11:42:01

ANo.1

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(1)