• 締切済み

ほかの人が作ったのも見たいのでよろしくお願いします

if,for,switch,while,do-while文、配列、バブルソートを用いて 入力した行列の掛け算を行うプログラムを作成せよ。 但し、行列数は任意に指定できるものにし、表示のさせ方にも気を付けること。 また、入力した行列の掛け算が行えない場合はエラーを返すようにすること。 <実行結果例1> 行列1:N×M行列数を入力してください N=2 M=2 行列2:O×P行列数を入力してください O=2 P=2 行列1:2×2行列を入力して下さい 1行1列を入力して下さい 1 1行2列を入力して下さい 2 2行1列を入力して下さい 3 2行2列を入力して下さい 4 行列2:2×2行列を入力して下さい 1行1列を入力して下さい 5 1行2列を入力して下さい 6 2行1列を入力して下さい 7 2行2列を入力して下さい 8 入力した行列1(2×2行列)×行列2(2×2行列)の計算結果は次ようなものです 19.00 22.00 43.00 50.00 <実行結果例2> 行列1:N×M行列数を入力してください N=2 M=3 行列2:O×P行列数を入力してください O=3 P=4 行列1:2×3行列を入力して下さい 1行1列を入力して下さい 1.21 1行2列を入力して下さい 2.35 1行3列を入力して下さい 2.65 2行1列を入力して下さい 1.2356 2行2列を入力して下さい 5.952165 2行3列を入力して下さい 5.23 行列2:3×4行列を入力して下さい 1行1列を入力して下さい 5.9685 1行2列を入力して下さい 86.3251 1行3列を入力して下さい 2.14 1行4列を入力して下さい 1.415 2行1列を入力して下さい 2 2行2列を入力して下さい 3.1415 2行3列を入力して下さい 0.717 2行4列を入力して下さい 2.36 3行1列を入力して下さい 2 3行2列を入力して下さい 3 3行3列を入力して下さい 8.23 3行4列を入力して下さい 4.956 入力した行列1(2×3行列)×行列2(3×4行列)の計算結果は次ようなものです 17.22 119.79 26.08 20.39 29.74 141.05 49.95 41.72 <実行結果例3> 行列1:N×M行列数を入力してください N=3 M=2 行列2:O×P行列数を入力してください O=4 P=3 入力した行列の掛け算は出来ません

みんなの回答

  • BLK314
  • ベストアンサー率55% (84/152)
回答No.5

ちょっと思いつきました。 fprintf, fscanf を使うのが正解かもしれないです。 fprintf,fscanfならprintf, scanfの親戚みたいなものなので、 Cの入門レベルの問題集なら、早めに紹介されている 可能性は十分あり、 質問者様のレベルにも合うかもしれないです。 ただ.......... こんな”おバカ"な私でも 一応C++で生計を立てている人間としては、 行列の演算問題に”ファイル入出力を用いる" という発想はありえないので... (後でCSVやなんかに保存するという仕様ならともかく 表示して終わりの場合 "ファイル"という発想そのものが出てきません) これでいいのか、確認お願いします。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

いや, 細部はいろいろあるけどこんなものじゃないでしょうか>#3. 個人的には「2次元配列のようにアクセスしたいな」とは思いますけど. そもそも「質問者が気に入らないとしてもどこが気に入らないのかを言わない以上答える人間が考える必要はない」でしょう.

  • BLK314
  • ベストアンサー率55% (84/152)
回答No.3

この質問は http://questionbox.jp.msn.com/qa4965779.html の続きなんですね。 で私(#3)の回答が気に入らないということなのでしょう。 他の人とは 質問者様以外という意味でなく 私以外という意味だと思います。 推測ですが、お気に召さないのは 1)mallocを使っている   質問者様が使ったことのない関数なので使わないで欲しい 2) 自作関数がある   質問者様が関数を自作したことがないので、使わないで欲しい   全部main()の中で完結させて欲しい ということじゃないかなと思います。 私の言い分は 1)正確な行列数が実行時まで分からず、   上限も明示されていない状況ではmalloc等の   動的確保で実装するしか考えられない。 2) 私のスキル不足かもしれないが、   複雑な処理をmain()ひとつで考えられない。   ”分割統治"でなければ問題を解決できない。 以上を踏まえ A)配列はstaticもしくは自動変数 B)main関数内に全て実装 という条件でお願いします。 質問者様、スキル不足で申し訳ございません。 (一応それなりのスキルはあるつもりでしたが.... 自信過剰だったようです)

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.2

> ほかの人が作ったのも って事なら、まずは自分が作ったのを見せておいた方がいいんじゃない? 自分が作ったのと似たようなのが出てきたらつまらんだろうし、回答者側も無駄手間だ。 運が良ければ、作ったプログラムに対してけちつけてくれる人も現れるかもよ。

  • BLK314
  • ベストアンサー率55% (84/152)
回答No.1

> if,for,switch,while,do-while文、配列、バブルソートを用いて > 入力した行列の掛け算を行うプログラムを作成せよ。 > 但し、行列数は任意に指定できるものにし、表示のさせ方にも気を付けること。 "if,for,switch,while,do-while文、配列、バブルソート"のみで (mallocなどは用いずに) "行列数は任意に指定できるものにし" は不可能です。 代案 A)行列数は 2 x 3(等) 固定とする B)行列数は 10 X 10 以下の任意とする(行列数に上限を明示する) C)malloc等、メモリの動的割り当ての使用を許可する

関連するQ&A

専門家に質問してみよう