teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

余計な文字を除去

2021/10/06 08:16

投稿

fana
fana

スコア12218

answer CHANGED
@@ -13,9 +13,9 @@
13
13
 
14
14
  と表すならば,
15
15
  各座標 (x,y) に関して,
16
- f1~f3 のいずれかが0となるならばその座標は辺の上にあり,そうでなければ辺の上にありません.
16
+ f1~f3 のいずれかが0となるならばその座標は辺の上にあり,そうでなければ辺の上にありません.
17
17
 
18
- …っていう話をとりあえず愚直に実装すればこんな感じかと.
18
+ …っていう話をとりあえず愚直に実装すればこんな感じかと.
19
19
 
20
20
  ```C
21
21
  int f1( int x, int y, int n ){ return x; }; //縦の辺

1

追記

2021/10/06 08:16

投稿

fana
fana

スコア12218

answer CHANGED
@@ -1,2 +1,42 @@
1
1
  座標 (j, i) が,三角形の辺上にあるのか否かを判定し,
2
- 辺上にある場合は $ を,そうでない場合には空白を表示すればよいのではないでしょうか.
2
+ 辺上にある場合は $ を,そうでない場合には空白を表示すればよいのではないでしょうか.
3
+
4
+ ---
5
+
6
+ 三角形には3つの辺がありますから,それぞれを直線の方程式として
7
+
8
+ * f1( x,y; n ) = 0
9
+ * f2( x,y; n ) = 0
10
+ * f3( x,y; n ) = 0
11
+
12
+ (ここで,`n` は入力値)
13
+
14
+ と表すならば,
15
+ 各座標 (x,y) に関して,
16
+ f1~f3 のいずれかが0となるならば,その座標は辺の上にあり,そうでなければ辺の上にありません.
17
+
18
+ …っていう話をとりあえず愚直に実装すれば,こんな感じかと.
19
+
20
+ ```C
21
+ int f1( int x, int y, int n ){ return x; }; //縦の辺
22
+ int f2( int x, int y, int n ){ return y - (n-1); } //底辺
23
+ int f3( int x, int y, int n ){ return y - x; } //斜辺
24
+
25
+ int main(void)
26
+ {
27
+ int x,y;
28
+ int n = 0;
29
+ scanf( "%d", &n );
30
+ for( y=0; y<n; ++y )
31
+ {
32
+ for( x=0; x<n; ++x )
33
+ {
34
+ putchar( ( f1(x,y,n)==0 || f2(x,y,n)==0 || f3(x,y,n)==0 ) ? '$' : ' ' );
35
+ }
36
+ putchar( '\n' );
37
+ }
38
+ return 0;
39
+ }
40
+ ```
41
+
42
+ (「三角形の斜辺よりも右側にまで余計な空白が出力されるのが嫌だ」とかこだわりがある場合には,相応に対処すれよい)