質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

2回答

2454閲覧

渦巻、らせんに数字を並べる方法(C言語)

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2020/06/03 03:56

前提・実現したいこと

C言語で渦巻状
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
このように出力する方法がわかりません。
後学のためと思ってどうかよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

C

1#include <stdio.h> 2 3#define N 5 4 5int main(void) 6{ 7 int a[N+2][N+2] = { 0 }, p[4] = { 1,0,-1,0 }, q[4] = { 0,1,0,-1 }; 8 for (int i = 0; i <= N; i++) 9 a[0][i] = a[N+1][i+1] = a[i][0] = a[i+1][N+1] = 1; 10 for (int x = 1, y = 1, t = 0, i = 1; i <= N*N; x += p[t], y += q[t]) 11 if (a[y][x] = i++, a[y + q[t]][x + p[t]] && ++t == 4) t = 0; 12 for (int i = 1; i <= N; i++, putchar('\n')) 13 for (int j = 1; j <= N; j++) printf("%4d", a[i][j]); 14}

投稿2020/06/03 11:24

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

できたと思う.

C++

1//N*N サイズの格子の,位置(x,y)における値を求める 2int Value( int x, int y, int N ) 3{ 4 //k = 外から何周目の位置か (0-based) 5 int k = std::min( std::min( x, N-1-x ), std::min( y, N-1-y ) ); 6 //value = k周目の左上の値 7 int value = 1; 8 for( int i=0; i<k; ++i ) 9 { 10 int ni = N - i*2; 11 value += (4*ni - 4); 12 } 13 //value += (x,y)の位置に応じた補正 14 int dx = x - k; 15 int dy = y - k; 16 value += ( dx>=dy ? (dx+dy) : (4*(N-k*2-1)-(dx+dy)) ); 17 // 18 return value; 19} 20 21//main 22int main(void) 23{ 24 //正方形サイズ ( N >= 1 ) 25 const int N = 5; 26 //計算して表示 27 for( int y=0; y<N; ++y ) 28 { 29 for( int x=0; x<N; ++x ) 30 { std::cout << " " << Value(x,y,N); } 31 32 std::cout << std::endl; 33 } 34 return 0; 35}

投稿2020/06/03 05:51

fana

総合スコア11658

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2020/06/03 05:52

って,退会してるじゃねーか
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問