魔法陣を二次元配列で求めるプログラムです
#include <stdio.h>
int main(void)
{
int box[6][6]={17,24,1,8,15,0,
23,5,7,14,16,0,
4,6,13,20,22,0,
10,12,19,21,3,0,
11,18,25,2,9,0,
0,0,0,0,0,0};
int i,j,sum=0;
for(i=0;i<5;i++){
for(j=0;j<5;j++){
sum+=box[i][j];
}
box[i][5]=sum;
sum=0;
}
for(j=0;j<5;j++){
for(i=0;i<5;i++){
sum+=box[i][j];
}
box[5][j]=sum;
sum=0;
}
for(i=0;i<5;i++){
for(j=0;j<5;j++){
if(i==j){
sum+=box[i][j];
}
}
box[5][5]=sum;
for(i=0;i<6;i++){
for(j=0;j<6;j++){
printf("%3d",box[i][j]);
}
printf("\n");
}
}
なんですが、
for(i=0;i<5;i++){
for(j=0;j<5;j++){
sum+=box[i][j];
}
box[i][5]=sum;
sum=0;
と、
for(i=0;i<5;i++){
for(j=0;j<5;j++){
if(i==j){
sum+=box[i][j];
と、
box[5][5]=sum;
for(i=0;i<6;i++){
for(j=0;j<6;j++){
printf("%3d",box[i][j]);
}
は、一体何をするプログラムなのか教えて下さいませんか。お願いします
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
ご質問ですが、切り出す箇所が中途半端です。
forやif等は {から}までがセットになっています。その途中で切ったら意味が通じません。
一つ目です。
sum=0; の位置が、間違いではないけど、この位置では意図がつかみずらいです。
これは
sum=0; /* プログラムの意図を考えると、ここに置くのが妥当 */
for(j=0;j<5;j++){
sum+=box[i][j];
}
box[i][5]=sum;
/* sum=0 ; */ /* 次の処理のために初期化。上に書くのとほぼ同じ効果は得られるけど、意図が伝わりにくい */
というプログラムを
for(i=0;i<5;i++){ 〜 }
で i を変化させながら繰り返すものです。
これでもわからなければ
・最初はi=0
・sum=0
・最初はj=0 だから sum += box[0][0] ;
・次にj=1 になるから sum += box[0][1] ;
...
・jのループが終ったので box[0][5]= sum ;
・次にi=1
・sum=0
...
と具体的な数字を入れて考えてみましょう。
次のブロックは、上記の縦横を入れかえたもの。
3つ目のブロックは、ifが入っているので複雑そうに見えますが、要するに i==jのときだけがsum+=〜を実行する、というものです。
つまり、 jを変化させる必要はありません。
sum = 0 ;
for(i=0;i<5;i++){
j=i ; /* for(j=0;j<5;j++){} で変化させる必要無し */
sum+=box[i][j]; /* if(i==j){} で判定する必要無し */
}
box[5][5]=sum; /* この行は、こちらのブロックに属する処理です */
これだと単純なforループですから、意味がわかるのでは?
最後も
for(j=0;j<6;j++){
printf("%3d",box[i][j]);
}
printf("\n");
を
for(i=0;i<6;i++){}
で繰り返すものです。
> 魔法陣を二次元配列で求める
の「求める」という言葉をどんな意味で使っていますか?
このプログラムは「魔方陣を自動的に作ってくれる」ものではありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミング実行後に表示される値を答えよ #include <stdio.h> void main 4 2022/05/28 10:20
- C言語・C++・C# プログラミング実行後の表示される値を答えよ #include<stdio.h> void main( 7 2022/05/20 00:07
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# [至急]Project Euler:#21Amicable numbersコード、入力、出力、解説 1 2022/09/25 05:58
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- 英語 【 英語 forの意味 】 I will buy my watch back for the sum 3 2023/01/02 22:06
- C言語・C++・C# c言語で自然数nを入力、2以上n以下の偶数の累積sumを求めるプログラムをfor文を使って作りたいで 4 2022/11/09 14:10
- C言語・C++・C# C言語: ポインタ 5 2022/06/01 08:33
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
このQ&Aを見た人はこんなQ&Aも見ています
-
カンパ〜イ!←最初の1杯目、なに頼む?
飲み会で最初に頼む1杯、自由に頼むとしたら何を頼みますか? 最初はビールという縛りは無しにして、好きなものを飲むとしたら何を飲みたいですか。
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
遅刻の「言い訳」選手権
よく遅刻してしまうんです…… 「電車が遅延してしまい遅れました」 「歯医者さんが長引いて、、、」 「病院が混んでいて」 などなどみなさんがこれまで使ってきた遅刻の言い訳がたくさんあるのではないでしょうか?
-
おすすめのモーニング・朝食メニューを教えて!
コメダ珈琲店のモーニング ロイヤルホストのモーニング 牛丼チェーン店の朝食などなど、おいしいモーニング・朝食メニューがたくさんありますよね。
-
うちのカレーにはこれが入ってる!って食材ありますか?
カレーって同じルーから作っても、家庭によって入っているものや味が微妙に違っていて面白いですよね! 「我が家のカレーにはこれが入ってるよ!」 という食材や調味料はありますか?
-
配列を使って魔方陣
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
#if 1 #elseの意味について
-
for文の中にswitch文はいれられ...
-
10進数からN進数に変換するプロ...
-
配列を使って魔方陣
-
配列を関数に渡す方法
-
while文について、c言語...
-
if-else文および標準演算子(*...
-
C言語 数字以外を入力させない...
-
C言語です
-
c言語プログラミングで1から100...
-
raspberrypiでロータリエンコーダ
-
C言語。どうしてコンパイルでき...
-
改善すべき点を教えてください。
-
C++での乱射ショットについて教...
-
getcの改行判定
-
ガウスの消去法のプログラムが...
-
C言語:配列の最大値
-
while文を使った問題なのですが...
-
c言語です
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
プログラム
-
#if 1 #elseの意味について
-
for文の中にswitch文はいれられ...
-
配列を使って魔方陣
-
getcの改行判定
-
配列を関数に渡す方法
-
プログラミングで二番目に大き...
-
C言語階乗の総和を求める
-
scanf関数を用いての加減乗除%...
-
C言語で電卓を作成する。
-
C言語 プログラム
-
C言語の二分法のプログラムにつ...
-
C言語のwhile文を使った素数判...
-
while文について、c言語...
-
10進数からN進数に変換するプロ...
-
C言語です
-
C言語でのトランプシャッフルに...
-
全角文字の判定
-
C言語のプログラミング (基礎...
おすすめ情報