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を見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
これなにがちがうんですか??
C言語・C++・C#
-
プログラミング言語の制作方法について
C言語・C++・C#
-
C言語って古いですか?
C言語・C++・C#
-
-
4
どなたかこのプログラミングを完成させて欲しいです。 ヒントはこちらです↓ 青色:ゲームプログラムのル
C言語・C++・C#
-
5
c言語
C言語・C++・C#
-
6
c言語
C言語・C++・C#
-
7
こんなことてしますか??
C言語・C++・C#
-
8
mallocについて
C言語・C++・C#
-
9
c言語
C言語・C++・C#
-
10
C言語について
C言語・C++・C#
-
11
擬似コード 長さがmの配列でなんで For i =0 to m とかかくの?m-1までしかないでしょ
C言語・C++・C#
-
12
gcc13.2のバグ?
C言語・C++・C#
-
13
VisualStudio2022でC言語プログラムで全角文字を使用すると不明なエラーが表示される
C言語・C++・C#
-
14
C言語 列挙型(enum型)変数について
C言語・C++・C#
-
15
C言語の関数と配列に関する質問
C言語・C++・C#
-
16
double型が正常に認識されていない恐れ
C言語・C++・C#
-
17
C言語 配列と関数の練習問題
C言語・C++・C#
-
18
[C言語]fputsとfprintfの違い
C言語・C++・C#
-
19
C言語をコンパイルするとコンピュータ上でどう動くかというコードになるみたいな説明をよく聞くのですがこ
C言語・C++・C#
-
20
10進数からN進数に変換するプログラミング(C言語)
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォートランで行列の計算
-
繰り返し1行~28行までを順順に...
-
!(否定)演算子について
-
MATLABにおける行の挿入方法
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
UserForm1.Showでエラーになり...
-
教えて下さい
-
一つのTeratermのマクロで複数...
-
配列数式の解除
-
メッセージボックスのOKボタ...
-
エクセルで特定の列が0表示の場...
-
On ErrorでエラーNoが0
-
String""から型'Double'への変...
-
ExcelのVBA。public変数の値が...
-
Excel マクロ VBA プロシー...
-
エクセルに張り付けた写真のフ...
-
【VBAエラー】Nextに対するFor...
-
VBAでfunctionを利用しようとし...
-
お助けください!VBAのファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
繰り返し1行~28行までを順順に...
-
H8マイコン C言語でのプロ...
-
!(否定)演算子について
-
C言語で余りがマイナスになる場合
-
MATLABのデータ抽出についてお...
-
mathematicaの質問です
-
MATLABの参考書
-
c言語
-
パイソンのプログラミングにつ...
-
≪C言語≫キー入力の判断について
-
Matlabのspdiags関数
-
cのプログラミングで虚数を含...
-
OPENCVを使ったエピポーラ幾何...
-
フォートラン77での微分と行列
-
Numpyのrandom.multivariate_no...
-
収束計算
-
MATLABにおける行の挿入方法
-
フランク行列の逆行列を求める...
-
BLASのレベル3の『ssyrk』や『s...
-
Z80のフラグレジスタについて
おすすめ情報