回答編集履歴

2

余計な文字を除去

2021/10/06 08:16

投稿

fana
fana

スコア11996

test CHANGED
@@ -28,11 +28,11 @@
28
28
 
29
29
  各座標 (x,y) に関して,
30
30
 
31
- f1~f3 のいずれかが0となるならばその座標は辺の上にあり,そうでなければ辺の上にありません.
31
+ f1~f3 のいずれかが0となるならばその座標は辺の上にあり,そうでなければ辺の上にありません.
32
32
 
33
33
 
34
34
 
35
- …っていう話をとりあえず愚直に実装すればこんな感じかと.
35
+ …っていう話をとりあえず愚直に実装すればこんな感じかと.
36
36
 
37
37
 
38
38
 

1

追記

2021/10/06 08:16

投稿

fana
fana

スコア11996

test CHANGED
@@ -1,3 +1,83 @@
1
1
  座標 (j, i) が,三角形の辺上にあるのか否かを判定し,
2
2
 
3
3
  辺上にある場合は $ を,そうでない場合には空白を表示すればよいのではないでしょうか.
4
+
5
+
6
+
7
+ ---
8
+
9
+
10
+
11
+ 三角形には3つの辺がありますから,それぞれを直線の方程式として
12
+
13
+
14
+
15
+ * f1( x,y; n ) = 0
16
+
17
+ * f2( x,y; n ) = 0
18
+
19
+ * f3( x,y; n ) = 0
20
+
21
+
22
+
23
+ (ここで,`n` は入力値)
24
+
25
+
26
+
27
+ と表すならば,
28
+
29
+ 各座標 (x,y) に関して,
30
+
31
+ f1~f3 のいずれかが0となるならば,その座標は辺の上にあり,そうでなければ辺の上にありません.
32
+
33
+
34
+
35
+ …っていう話をとりあえず愚直に実装すれば,こんな感じかと.
36
+
37
+
38
+
39
+ ```C
40
+
41
+ int f1( int x, int y, int n ){ return x; }; //縦の辺
42
+
43
+ int f2( int x, int y, int n ){ return y - (n-1); } //底辺
44
+
45
+ int f3( int x, int y, int n ){ return y - x; } //斜辺
46
+
47
+
48
+
49
+ int main(void)
50
+
51
+ {
52
+
53
+ int x,y;
54
+
55
+ int n = 0;
56
+
57
+ scanf( "%d", &n );
58
+
59
+ for( y=0; y<n; ++y )
60
+
61
+ {
62
+
63
+ for( x=0; x<n; ++x )
64
+
65
+ {
66
+
67
+ putchar( ( f1(x,y,n)==0 || f2(x,y,n)==0 || f3(x,y,n)==0 ) ? '$' : ' ' );
68
+
69
+ }
70
+
71
+ putchar( '\n' );
72
+
73
+ }
74
+
75
+ return 0;
76
+
77
+ }
78
+
79
+ ```
80
+
81
+
82
+
83
+ (「三角形の斜辺よりも右側にまで余計な空白が出力されるのが嫌だ」とかこだわりがある場合には,相応に対処すれよい)