
C言語でDxlibを使って3x3の奇数魔法陣を作っているのですが、処理の方法がわかりません。
youso[3][3]の箱を作りました。
これを全部for文を使って0で初期化もしました。
最後に画面に表示させるのもfor文を使ってできました。
この真ん中のメインの数字を格納するプログラムで、for文とif文を使って作りたいのですが考えてもわかりません。
youso[0][1]に1を代入してから作ります
1〜9の数字当てはめるために変数countも作ってます。
1より右上に数値を格納していくのですが、右へはみ出すとはみ出した行の最左、上へはみだすと、はみ出した列のの最下、埋まっている場合if( 0 != ???)元の位置の真下、 下へはみ出した時は同列の最上へ。
ここまでは考えましたがわからないです。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
/* 5 x 5 魔方陣のケース */
#include <stdio.h>
#include <stdlib.h>
#define N 5
int main(void) {
int magic_square[N][N] = {{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}};
int i = 0, j = 2, NUM = 1;
int tmp_i, tmp_j;
while (NUM < N * N + 1) {
magic_square[i][j] = NUM;
tmp_i = (i - 1 < 0 ? N - 1 : i - 1);
tmp_j = (j + 1 == N ? 0 : j + 1);
if (magic_square[tmp_i][tmp_j] != 0) {
tmp_i = i + 1, tmp_j = j;
}
i = tmp_i, j = tmp_j, NUM++;
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
printf("%2d ", magic_square[i][j]);
}
printf("\n");
}
return EXIT_SUCCESS;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
最早開始時間と最遅完了時刻を...
-
C言語 エラーの原因がわからな...
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語での引数の省略方法
-
剰余演算を論理演算と加減算に...
-
signal関数の使い方
-
std::set<int> で、ある値が何...
-
iTRONプログラミング
-
C言語に関する質問です フィボ...
-
C言語の課題です
-
if と配列の組み合わせ
-
C言語 プログラミング
-
次のプログラムを教えてくださ...
-
ファイルに含まれるアルファベ...
-
windows-findstrの正規表現を使...
-
ポストの対応問題
-
「指定されたキャストは有効で...
-
acceptをalarmでタイムアウトさ...
-
「{ } で囲むだけ」は正しい?
-
信頼区間の1.96や1.65ってどこ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
#define _CRT_SECURE_NO_WARNIN...
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
【C++】関数ポインタの使い方
-
C言語 エラーの原因がわからな...
-
複数桁10進数の*桁目だけを抽出...
-
return 1L
-
if と配列の組み合わせ
-
ラップ関数とはどんなものですか?
-
式は定数値が必要です」という...
-
数字列を3桁ごとにカンマで区切...
-
実数の整数部,小数部の取得
-
C言語でDxlibを使って3x3の奇数...
-
プログラムについて(UNIX)
-
acceptをalarmでタイムアウトさ...
-
C言語の課題です
-
エラー 添字が付けられた値が、...
-
CStringの配列要素を関数で受け...
-
最早開始時間と最遅完了時刻を...
-
入力された数字を大きい順に並...
おすすめ情報