掲示板利用宣言

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

 私は

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

掲示板2

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

No.25831

C言語のプログラムが組めません。助けて!!
投稿者---中田 国広(2006/01/30 00:02:59)


行列を構造体として設計
 ・構造体は行数、列数、行列の要素からなる
 ・後の関数を用いて、要素を任意に指定
 ・演算は小数も取り扱える
関数
 ・行列の生成
   行列のサイズ(行数、列数)引数として指定すると、必要な数の行列の要   素が確保。要素数は任意に指定可能。関数の返り値は要素の確保の成功/失   敗がわかるように。
 ・行列の使用が終了後、行列の要素を開放
 ・要素の出力
   行列の形で要素を標準出力に出力
 ・行列の全ての要素に0を格納
 ・n行m列目と指定した数値を格納
 ・単位行列の生成
   引数として渡された行列が正方行列の場合要素を単位行列になるようにセ   ット
   返り値は作成の成功/失敗がわかるように
 ・行列の和
   2つの行列のサイズが同じならば和を算出
   演算可能ならば正常であることを返し、違えばエラーを返す
 ・行列の差
   和と同様
 ・行列の積
   演算可能であれば積を算出
   和差と同様
 ・逆行列の算出
   2*2または3*3の逆行列を算出
   返り値は上記以外のサイズの場合はエラーを返す
   逆行列が存在する場合は正常であることを返す
   逆行列が存在しない場合は上記以外の何らかのエラーを返す
上記の全ての関数が正しく作動することを確認するためにmain()を作る

最初の関数は、mallocを用いて動的なメモリを確保後、ポインタを使ってmainに値を返し(配列は構造体に返せないため)、freeで値を開放するのだと思いますが、書き方がわかりません。単位行列は行列の初期化を行うのだと思います。関数の作動については、whileを用いて場合わけ(数字や記号の選択のような)かと。3行3列の単位行列は求め方がわかりません(高校の文系クラスにいるから)。





この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:C言語のプログラムが組めません。助けて!! 25833 Blue 2006/01/30 00:24:37
<子記事> Re:C言語のプログラムが組めません。助けて!! 25834 ぽこ 2006/01/30 00:42:16
<子記事> Re:C言語のプログラムが組めません。助けて!! 25835 ぽへぇ 2006/01/30 00:48:32
<子記事> Re:C言語のプログラムが組めません。助けて!! 25836 επιστημη 2006/01/30 00:50:50


No.25833

Re:C言語のプログラムが組めません。助けて!!
投稿者---Blue(2006/01/30 00:24:37)


http://www2.realint.com/cgi-bin/tarticles.cgi?pointc+25681

> 高校の文系クラスにいるから
リモートホストが 筑○大学 なのはどうしてなのかな?


この投稿にコメントする

削除パスワード

No.25834

Re:C言語のプログラムが組めません。助けて!!
投稿者---ぽこ(2006/01/30 00:42:16)


まず、自分で出来たところまで載せましょう。
その上で、分からない点をはっきりさせましょう。
#全部分からないじゃ、ただの丸投げととられますよ


この投稿にコメントする

削除パスワード

No.25835

Re:C言語のプログラムが組めません。助けて!!
投稿者---ぽへぇ(2006/01/30 00:48:32)



せめて書いたソースコードの断片でも載せたら
もう少し異なった反応が返ってくると思いますが。

これだけの丸投げはとても掲示板でやりとりできる
分量ではないです。

>最初の関数は、mallocを用いて動的なメモリを確保後、
>ポインタを使ってmainに値を返し(配列は構造体に返せないため)、
>freeで値を開放するのだと思いますが、書き方がわかりません。

過去ログくらい調べる努力はしましょうよ。
「malloc 行列」で検索した結果
http://f4.aaa.livedoor.jp/~pointc/log470.html

行列を相手にするなら2次元配列と考えて扱うと
良いかもしれません。
http://www.kouno.jp/home/c_faq/c6.html#16

あとは入門書でどうぞ。



この投稿にコメントする

削除パスワード

No.25836

Re:C言語のプログラムが組めません。助けて!!
投稿者---επιστημη(2006/01/30 00:50:50)


で、なにを助けたらいいのかな?
単位行列の求め方は先生に訊いてください。Cの問題じゃありません。
whileを用いて場合わけ? switchのマチガイ?

結局
「mallocを用いて動的なメモリを確保後、
  ポインタを使ってmainに値を返し(配列は構造体に返せないため)、
  freeで値を開放する」
だけですね?

struct matrix {
 int row, col;
  double* data;
};

struct matrix* matrix_new(int r, int c) {
  struct matrix* result = (struct matrix*)malloc(sizeof(struct matrix));
  if ( result ) {
    result->row = r;
    result->col = c;
    result->data = (double*)malloc(sizeof(double)*r*c);
    if ( result->data == NULL ) {
      free(result);
      result = 0;
    }
  }
  return result;
}

void matrix_delete(struct matrix* mtx) {
  free(mtx->data);
  free(mtx);
}

まずはこんなんで。
x 行 y 列の値は data[x*row+y] で得られます。




この投稿にコメントする

削除パスワード

No.25837

Re:C言語のプログラムが組めません。助けて!!
投稿者---επιστημη(2006/01/30 00:56:15)


> x 行 y 列の値は data[x*row+y] で得られます。

おっと、data[y*row+x]が正解かな。検証コード書いて確かめてください。



この投稿にコメントする

削除パスワード

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