掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.27494

次の独自関数を定義して、main関数で参照しなさい。って問題です。
投稿者---わかんない君 (2006/07/04 17:24:19)


マジ助けてください。
mat_mult(double *a[][N]),double *b[][M],double*c[][M])
っていう行列積です。プログラムで以下を利用するのですが、全くわかりません。
宜しくお願いします。
#include <stdio.h>
#define M 5
#define N 5

double a[M][N]= {
{1,2,3,4,7},
{1,2,3,4,8},
{1,2,3,4,9},
{1,2,3,4,0},
{1,2,3,4,2}
};
double b[N][M]= {
{1,2,3,4,5},
{0,2,4,6,8},
{1,1,1,1,1},
{2,3,4,5,6},
{3,4,5,6,7}
};
double c[M][M];

main(){
int i,j,k;

for(i=0;i<M;i++){
for(j=0;j<M;j++){
c[i][j]=0,0;
}
}

for(i=0;i<M;i++){
for(j=0;j<M;j++){
for(k=0;k<N;k++){
c[i][j] += a[i][k]*b[k][j];
}
}

}

for(i=0;i<M;i++){
for(j=0;j<M;j++){
printf("%0.1f\t ",c[i][j]);
}
printf("\n");
}
printf("\n");
}


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:次の独自関数を定義して、main関数で参照しなさい。って問題です。 27495 acid 2006/07/04 17:30:30
<子記事> Re:次の独自関数を定義して、main関数で参照しなさい。って問題です。 27498 nop 2006/07/04 17:50:37
<子記事> Re:次の独自関数を定義して、main関数で参照しなさい。って問題です。 27510 shu 2006/07/04 21:18:14


No.27495

Re:次の独自関数を定義して、main関数で参照しなさい。って問題です。
投稿者---acid(2006/07/04 17:30:30)


私たちも何も分かりません。

あなたが「何」をしたくて、「何」が分からないから、「何」を教えてほしいのかを具体的に書いてください。
何を聞いたらいいかすら分からない場合は、ここではなくて、先生に聞きましょう。



この投稿にコメントする

削除パスワード

No.27497

Re:次の独自関数を定義して、main関数で参照しなさい。って問題です。
投稿者---わかんない君(2006/07/04 17:40:42)


行列積の問題で、
mat_mult(double *a[][N]),double *b[][M],double*c[][M])
というプログラムを利用して、以下のプログラムをいじるのですが、
mat_multの関数をどこに挿入したらいいのかがわからないです。
#include <stdio.h>
#define M 5
#define N 5

double a[M][N]= {
{1,2,3,4,7},
{1,2,3,4,8},
{1,2,3,4,9},
{1,2,3,4,0},
{1,2,3,4,2}
};
double b[N][M]= {
{1,2,3,4,5},
{0,2,4,6,8},
{1,1,1,1,1},
{2,3,4,5,6},
{3,4,5,6,7}
};
double c[M][M];

main(){
int i,j,k;

for(i=0;i<M;i++){
for(j=0;j<M;j++){
c[i][j]=0,0;
}
}

for(i=0;i<M;i++){
for(j=0;j<M;j++){
for(k=0;k<N;k++){
c[i][j] += a[i][k]*b[k][j];
}
}

}

for(i=0;i<M;i++){
for(j=0;j<M;j++){
printf("%0.1f\t ",c[i][j]);
}
printf("\n");
}
printf("\n");
}


この投稿にコメントする

削除パスワード

No.27500

Re:次の独自関数を定義して、main関数で参照しなさい。って問題です。
投稿者---たかぎ(2006/07/04 19:27:55)
http://takagi.in/


>mat_mult(double *a[][N]),double *b[][M],double*c[][M])
>というプログラムを利用して、以下のプログラムをいじるのですが、
>mat_multの関数をどこに挿入したらいいのかがわからないです。

どこに挿入してもエラーになるので、お好きなところへどうぞ。



この投稿にコメントする

削除パスワード

No.27498

Re:次の独自関数を定義して、main関数で参照しなさい。って問題です。
投稿者---nop(2006/07/04 17:50:37)


>全くわかりません。

「考えたくありません」の間違いだろ?


この投稿にコメントする

削除パスワード

No.27499

Re:次の独自関数を定義して、main関数で参照しなさい。って問題です。
投稿者---わかんない君(2006/07/04 18:01:55)


soudesu.
kannbennsiteyo.
mo-----
!


この投稿にコメントする

削除パスワード

No.27501

Re:次の独自関数を定義して、main関数で参照しなさい。って問題です。
投稿者---nop(2006/07/04 19:53:54)


やる気、考える気がないなら辞めた方がいい。


この投稿にコメントする

削除パスワード

No.27510

Re:次の独自関数を定義して、main関数で参照しなさい。って問題です。
投稿者---shu(2006/07/04 21:18:14)


単に関数化の問題に見える。

関数化なら、グローバル変数の必要性も感じないし、
行列の積なんていうことも、あまり関係無い。

mat_mult(double *a[][N]),double *b[][M],double*c[][M])の型が、書かれてないなぁ……。


この投稿にコメントする

削除パスワード

No.27539

Re:次の独自関数を定義して、main関数で参照しなさい。って問題です。
投稿者---クロ(2006/07/05 15:29:10)


↓な感じではだめ?
mat_mult(double a[][N],double b[][M],double c[][M])にしちゃいました。w

#include <stdio.h>
#define M 5
#define N 5

//↓とりあえずVoid
void mat_mult(double a[][N],double b[][M],double c[][M]);

main(){

    int i,j;
    double a[M][N]= {{1,2,3,4,7},
             {1,2,3,4,8},
             {1,2,3,4,9},
             {1,2,3,4,0},
             {1,2,3,4,2}};

    double b[N][M]= {{1,2,3,4,5},
             {0,2,4,6,8},
             {1,1,1,1,1},
             {2,3,4,5,6},
             {3,4,5,6,7}};

    double c[M][M];

    //関数呼び出し
    mat_mult(a, b, c);

    for(i = 0; i < M; i++){
        for(j = 0; j < M; j++){
            printf("%0.1f\t ",c[i][j]);
        }

    printf("\n");
    }
    printf("\n");

    return 0;

}


void mat_mult(double a[][N],double b[][M],double c[][M])
{
    int i,j,k;

    for(i = 0;i < M; i++)
        for(j = 0; j < M; j++){

            c[i][j] = 0;
            //printf("%f\n",c[i][j]);

        }


    for(i = 0; i < M; i++)
        for(j = 0; j < M; j++)
            for(k = 0; k < N; k++){

                c[i][j] = c[i][j] + (a[i][k] * b[k][j]);

            }

}



この投稿にコメントする

削除パスワード

No.27540

Re:次の独自関数を定義して、main関数で参照しなさい。って問題です。
投稿者---ゾン兵衛(2006/07/05 16:33:05)


 c[][]の初期化の位置を変えれば、ループを一つ減らせます。

void mat_mult(double a[][N],double b[][M],double c[][M])
{
    int i,j,k;

    for(i = 0; i < M; i++)
        for(j = 0; j < M; j++)
            c[i][j] = 0; // ----------------------------*
            for(k = 0; k < N; k++){

                c[i][j] += (a[i][k] * b[k][j]);

            }

}




この投稿にコメントする

削除パスワード

No.27541

Re:次の独自関数を定義して、main関数で参照しなさい。って問題です。
投稿者---ruby(2006/07/05 16:52:45)


で、わかんない君がおいしいところだけを持っていくって寸法ですね。


この投稿にコメントする

削除パスワード

No.27542

Re:次の独自関数を定義して、main関数で参照しなさい。って問題です。
投稿者---クロ(2006/07/05 17:00:23)


>で、わかんない君がおいしいところだけを持っていくって寸法ですね。
分からないまま、ソース手に入れても意味がないですけどね。w
後で、悩むだけ。

> c[][]の初期化の位置を変えれば、ループを一つ減らせます。
↑気付きませんでした。


この投稿にコメントする

削除パスワード

No.27543

Re:次の独自関数を定義して、main関数で参照しなさい。って問題です。
投稿者---ruby(2006/07/05 17:05:07)


>分からないまま、ソース手に入れても意味がないですけどね。w
>後で、悩むだけ。

おっしゃるとおりです。
十分悩んでいただきましょう。


この投稿にコメントする

削除パスワード

No.27606

Re:次の独自関数を定義して、main関数で参照しなさい。って問題です。
投稿者---わかんない君(2006/07/11 13:27:30)


みなさん、ありがとうございました。
勉強になりました。b


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧