c言語の質問です。
5×5の行列で
300 300 300 300 300
300 〇 〇 〇 300
300 〇 1200 〇 300
300 〇 〇 〇 300
300 300 300 300 300
の形の行列を作りたいです。
〇は周り4方向の値を足したものを4で割った値にしたいです。
実際にプログラムを書いた結果が
300 300 300 300 300
300 150 0 150 300
300 0 1200 0 300
300 150 0 150 300
300 300 300 300 300 となりました。
#include <stdio.h>
#define M 5
#define N 5
int main(void) {
/* 4行5列の行列 */
int mat[5][5];
int y, x;
for(y=0;y<5;y++){
for(x=0;x<5;x++){
mat[y][x]=0;
}
}
for(y=2;y<3;y++){
for(x=2;x<3;x++){
mat[y][x]=1200;
}
}
for(y=0;y<5;y++){
for(x=0;x<5;x++){
mat[y][x]=0;
if(x==0 || x == 4 || y==0 || y==4 ){
mat[y][x]=300;
}
}
}
for(y=0;y<5;y++){
for(x=0;x<5;x++){
}
}
for(y=0;y<5;y++){
for(x=0;x<5;x++){
mat[y][x]=0;
if( x==0 || x == 4 || y==0 || y==4 ){
mat[y][x]=300;
}
}
}
for(y=0;y<5;y++){
for(x=0;x<5;x++){
if(x==2&&y==2){
mat[y][x]=1200;
}
}
}
for(y=0;y<5;y++){
for(x=0;x<5;x++){
if( x!=0 && x != 4 && y!=0 && y!=4 && (x!=2&&y!=2)){
mat[y][x]=(mat[y-1][x]+mat[y+1][x]+mat[y][x-1]+mat[y][x+1])/4;
}
}
}
for(y=0;y<5;y++){
for(x=0;x<5;x++){
printf( "%3d ", mat[y][x]);
}
printf("\n");
}
return 0;
}
if分のx=2かつy=2のときの表し方がよくない気がするのですがどこが問題か分かる方いらっしゃいませんか?
また反復計算の反復回数はどうやったら指定できるのですか?
この計算をexcelでやったときとくらべて、〇の値が小さいので反復回数が足りていないと思います。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
この問題
https://oshiete.goo.ne.jp/qa/13693773.html
と全くと言って良い程同じ。
取り立てて新しいモノもないし、これも本質的には「連立方程式を解け」と言う一文で要約出来る。
それだけ。
> この計算をexcelでやったときとくらべて、〇の値が小さいので反復回数が足りていないと思います。
そうじゃなくって、最初に手計算ででも何でも、解を求めてみたらいいじゃない。
「不確かな情報のまま不確かに解く」程無駄な事はない。
上のページでも書いたけど、Maxima辺りを使えば簡単に結果は見れる。
Maxima:
https://maxima.sourceforge.io/
このソフトは方程式を解いてくれる「数式処理システム」と言われるジャンルのソフトウェアで、それこそ大学の数学でも役立ってくれる「大学生の必需品」だ。
実装例:
https://www.ideone.com/kfIGZ2
No.1
- 回答日時:
&& (x!=2&&y!=2)
これだと、括弧の意味がなく、
&& x != 2 && y !=2
と同等で、つまり、x = 2の時や、y = 2の時は偽になるので、mat[y][x]へ代入されません。
なので、1200の上下左右には、値が代入されなくなります。
質問者さんがやりたいのは、x = 2 でかつ y = 2の時に、偽になるような論理式を作ればいいだけです。
必ず収束するのであれば、反復計算は、計算前と、計算後の値が全て変化がないか、近似値の条件に一致すれば終了すればいいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- C言語・C++・C# LU分解法のピボッティングについて(C言語/gcc-9) 3 2022/07/11 23:10
- C言語・C++・C# LU分解法のピボット選択機能実装について(C言語・gcc-9) 1 2022/07/22 15:20
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# プログラミング実行後に表示される値を答えよ #include <stdio.h> void main 4 2022/05/28 10:20
- C言語・C++・C# プログラミングのペーパーテスト 実行結果の表示を答えてください #include <stdio.h> 2 2022/07/09 16:14
- その他(プログラミング・Web制作) 十進BASICでの再帰についての質問です。 2 2022/11/18 09:17
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語
-
C言語で余りがマイナスになる場合
-
UserForm1.Showでエラーになり...
-
配列数式の解除
-
Excel・Word リサーチ機能を無...
-
エクセルでページをコピーして...
-
ブレーカー落ちで壊れたりしな...
-
String""から型'Double'への変...
-
エクセルで特定の列が0表示の場...
-
Excel_マクロ_現在開いているシ...
-
Excel マクロ VBA プロシー...
-
教えて下さい
-
エクセルのマクロでワードの任...
-
特定のPCだけ動作しないVBAマク...
-
HTMLソースが表示のページのも...
-
筆王画面が終了できない
-
VisualStudio2022をマクロみた...
-
UWLSの記録でマクロを作成し使...
-
Excel マクロでShearePoint先の...
-
VBAでfunctionを利用しようとし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MATLABにおける行の挿入方法
-
繰り返し1行~28行までを順順に...
-
!(否定)演算子について
-
H8マイコン C言語でのプロ...
-
C言語で余りがマイナスになる場合
-
Matlabのspdiags関数
-
五目並べ
-
c言語
-
パイソンのプログラミングにつ...
-
StandardMLで整数リストの奇数...
-
C言語で行列表現
-
cのプログラミングで虚数を含...
-
アセンブラの間接アドレッシング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
配列数式の解除
-
UserForm1.Showでエラーになり...
-
エクセルで特定の列が0表示の場...
-
教えて下さい
-
Excel マクロ VBA プロシー...
おすすめ情報