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
入力した行列の掛け算は出来ません

このQ&Aに関連する最新のQ&A

A 回答 (5件)

ちょっと思いつきました。


fprintf, fscanf
を使うのが正解かもしれないです。

fprintf,fscanfならprintf, scanfの親戚みたいなものなので、
Cの入門レベルの問題集なら、早めに紹介されている
可能性は十分あり、
質問者様のレベルにも合うかもしれないです。

ただ..........

こんな”おバカ"な私でも
一応C++で生計を立てている人間としては、

行列の演算問題に”ファイル入出力を用いる"
という発想はありえないので...
(後でCSVやなんかに保存するという仕様ならともかく
表示して終わりの場合
"ファイル"という発想そのものが出てきません)

これでいいのか、確認お願いします。
    • good
    • 0

いや, 細部はいろいろあるけどこんなものじゃないでしょうか>#3. 個人的には「2次元配列のようにアクセスしたいな」とは思いますけど.


そもそも「質問者が気に入らないとしてもどこが気に入らないのかを言わない以上答える人間が考える必要はない」でしょう.
    • good
    • 0

この質問は


http://questionbox.jp.msn.com/qa4965779.html
の続きなんですね。

で私(#3)の回答が気に入らないということなのでしょう。
他の人とは
質問者様以外という意味でなく
私以外という意味だと思います。


推測ですが、お気に召さないのは
1)mallocを使っている
  質問者様が使ったことのない関数なので使わないで欲しい
2) 自作関数がある
  質問者様が関数を自作したことがないので、使わないで欲しい
  全部main()の中で完結させて欲しい

ということじゃないかなと思います。

私の言い分は
1)正確な行列数が実行時まで分からず、
  上限も明示されていない状況ではmalloc等の
  動的確保で実装するしか考えられない。

2) 私のスキル不足かもしれないが、
  複雑な処理をmain()ひとつで考えられない。
  ”分割統治"でなければ問題を解決できない。

以上を踏まえ
A)配列はstaticもしくは自動変数
B)main関数内に全て実装

という条件でお願いします。

質問者様、スキル不足で申し訳ございません。
(一応それなりのスキルはあるつもりでしたが....
自信過剰だったようです)
    • good
    • 0

> ほかの人が作ったのも


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

> if,for,switch,while,do-while文、配列、バブルソートを用いて


> 入力した行列の掛け算を行うプログラムを作成せよ。
> 但し、行列数は任意に指定できるものにし、表示のさせ方にも気を付けること。

"if,for,switch,while,do-while文、配列、バブルソート"のみで
(mallocなどは用いずに)
"行列数は任意に指定できるものにし"
は不可能です。

代案
A)行列数は 2 x 3(等) 固定とする
B)行列数は 10 X 10 以下の任意とする(行列数に上限を明示する)
C)malloc等、メモリの動的割り当ての使用を許可する
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング