C言語の講習で2×2行列の表現方法を考えると云う問題に直面しました。
当初は行列の要素ごとをscanfで記憶、対応させて掛け算等の演算を行おうと考えていましたが
汎用性の面から外部のテキストを読み込み、結果をテキストに書き込んで出力するような
プログラムにしたいと考えました。
当方の疑問として
行列の宣言を int a[ ][ ];と宣言した後(今回ですとa[2][2]と宣言するのが正しいのですが)
各要素にファイルの値を当てるにはどういったプログラムを書けばいいんでしょうか?
講師からはアドレス、構造体、配列、mallocないしallocを使えとのアドバイスを受けましたが
行列表現の段階で躓いていて今後の指針含めて正直よく分かりません。
部分部分で構いませんので、どなたか解説をお願いいたします。
m(_ _)m
P.S
表記の面で判りづらい点がありましたら遠慮なく指摘してください。
熟読の上改訂いたします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
#2です
>変数x,yを整数型で宣言
行列の要素数を宣言しています(とりあえず2×2とのことだったので両方2にしています)
>forのループで行列を表現してるんでしょうか?
そういうことになります(コメントだけでは不十分だったですか?)
別にforループである必要はありませんが下手にわけわからん
変数名出たりすると逆にわかりにくいだろうと思って
あえてforループで書いているだけです
雑な一例と書いたようにそれなりに雑な書き方をしています
後は質問者さんが工夫すればいいだけの話なので
(ファイルから行列の要素数と各データを求めるにしてもそこは工夫次第でどうにでもなる話)
今回部分部分を切り出して説明する方法が思いつかなかったので
こういった一連の流れを書いています
(基本的に丸投げ質問に答えるのは嫌いです 今回分からない部分がある程度明確化されているので回答しました)
No.4
- 回答日時:
先の回答でも申しましたが、どのように行列を記述するかは自由です
先の例では
ファイルの先頭から
1 2 3 4 //(区切りになる文字が空白ではなかったかもしれないのでご確認ください)
となっているのを読み込みます
ファイル内の移動はポインタの値を操作するのですが、
そのあたりの関数はCのほうで用意されていたような気がします
(もしなかったら自作です)
見やすくするなら行列名をコメント記号を決めて書くのも自由かと思います
勉強なさっているのなら、参考書もお持ちでしょうからそこらあたりいろいろ工夫されてみては
いかがでしょうか
No.3
- 回答日時:
やりたいことから推測しますと
fopenでファイルを開いてfscanfか何かでファイル上の自分で決めたフォーマットで読み込み
2次元配列に受け渡すんだと思います
fscanf(fp, "%d%d%d%d", &a[0][0], &a[0][1], &a[1][0], &a[1][1]);
みたいにもできると思います
この回答への補足
お返事ありがとうございます。
おっしゃるとおり、txtファイルないしexcelから
行列を読み込もうと考えています。
踏み込んでお聞きしたいのですが
行列のフォーマットを
A
1 2
3 4
とした場合、行列の名前であるAをスキャンせず
数値だけをスキャンする場合、どうすればいいのでしょうか。
自分自身で考えたのは
%_ の文字を変える(?)
表示はファイル全体だがスキャンは数値に限定する
ぐらいなんですが……。
P.S
考え付いたものは本当にC言語を租借し切れていない初心者の発想ですのでお目汚しになってしまわれたら申し訳ありません。
No.2
- 回答日時:
考え方次第で書き方はいろいろあると思いますが 雑な一例
int x = 2;
int y = 2;
int *data = (int *)malloc(sizeof(int) * x * y);
for (int yy = 0 ; yy < y ; yy ++ ) {
for (int xx = 0 ; xx < x ; xx ++ ) {
*(data + yy * x + xx) = 1; //data[yy][xx] に相当
}
}
free(data);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# LU分解法のピボット選択機能実装について(C言語・gcc-9) 1 2022/07/22 15:20
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
H8マイコン C言語でのプロ...
-
繰り返し1行~28行までを順順に...
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
配列数式の解除
-
UserForm1.Showでエラーになり...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
Excelのマクロについて教えてく...
-
教えて下さい
-
エクセルVBA
-
メッセージボックスのOKボタ...
-
【Access】Excelインポート時に...
-
Excel VBAからAccessマクロを実...
-
excelのInitializeイベントとAc...
-
Excel vbs AppActivate エラー
-
一つのTeratermのマクロで複数...
-
マクロの「SaveAs」でエラーが...
-
マクロの連続実行
-
VBAのIF分で時間指定の条件式の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c言語
-
繰り返し1行~28行までを順順に...
-
H8マイコン C言語でのプロ...
-
!(否定)演算子について
-
C言語で余りがマイナスになる場合
-
MATLABにおける行の挿入方法
-
五目並べ
-
パイソンのプログラミングにつ...
-
if文について教えてください
-
フォートランで行列の計算
-
一般次元の逆行列を求めるプロ...
-
MATLABのデータ抽出についてお...
-
【MATLAB】配列内の数値のキャ...
-
OPENCVを使ったエピポーラ幾何...
-
StandardMLで整数リストの奇数...
-
cのプログラミングで虚数を含...
-
MATLABの参考書
-
C言語で行列表現
-
mathematicaの質問です
-
ダイナミックプログラミング
おすすめ情報