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

質問編集履歴

3

ソースコードを更新

2020/02/17 18:07

投稿

Magolors
Magolors

スコア21

title CHANGED
File without changes
body CHANGED
@@ -5,7 +5,13 @@
5
5
  ### 該当のソースコード
6
6
 
7
7
  ```C++
8
- #include <bits/stdc++.h>
8
+ #include <iostream>
9
+ #include <queue>
10
+ #include <vector>
11
+ #include <algorithm>
12
+ #include <cmath>
13
+ #include <iomanip>
14
+
9
15
  using namespace std;
10
16
 
11
17
  queue<pair<long double, long double> > p;
@@ -14,19 +20,20 @@
14
20
  void fractale(){
15
21
  pair<long double, long double> l, r, temp;
16
22
  do {
17
- l = p.front(); p.pop();//辺の左端
23
+ l = p.front(); p.pop();
18
- r = p.front(); p.pop();//辺の右端
24
+ r = p.front(); p.pop();
19
- long double theta = atan2(r.second-l.second, r.first-l.first);//辺の角度
25
+ long double theta = atan2(r.second-l.second, r.first-l.first);
20
- long double leng = sqrt((r.second-l.second)*(r.second-l.second)+(r.first-l.first)*(r.first-l.first));//辺の長さ
26
+ long double leng = sqrt((r.second-l.second)*(r.second-l.second)+(r.first-l.first)*(r.first-l.first));
21
-
22
- //点の設定
23
27
  p.push(l);
24
28
  temp = make_pair(l.first+(r.first-l.first)/3.0, l.second+(r.second-l.second)/3.0);
25
29
  p.push(temp);
30
+ p.push(temp);
26
31
  temp = make_pair(l.first+(r.first-l.first)/2.0+leng*h*sin(theta)/3.0, l.second+(r.second-l.second)/2.0+leng*h*cos(theta)/3.0);
27
32
  p.push(temp);
33
+ p.push(temp);
28
34
  temp = make_pair(l.first+2*(r.first-l.first)/3.0, l.second+2*(r.second-l.second)/3.0);
29
35
  p.push(temp);
36
+ p.push(temp);
30
37
  p.push(r);
31
38
  } while (r.first != 100);
32
39
  }
@@ -42,32 +49,16 @@
42
49
  fractale();
43
50
  }
44
51
  cout << fixed << setprecision(10);
52
+ cout << p.front().first << " " << p.front().second << endl;
45
- while (!(p.empty())){
53
+ p.pop();
54
+ do {
46
55
  cout << p.front().first << " " << p.front().second << endl;
47
- p.pop();
56
+ p.pop(); p.pop();
48
- }
57
+ } while (p.front().first != 100);
58
+ cout << p.front().first << " " << p.front().second << endl;
49
59
  }
50
60
  ```
51
61
 
52
62
  ### 試したこと
53
63
 
54
- 見直、条件変更をしましたが解決しませんでした
64
+ 回答ありがとうございます。ご指摘内容をもとに改善ですが、今度は動作ないようになってしいました。n>=1の入力を仮定ているので、pop()の部分は問題ないと思うのですが、なぜ動かないかわかりません。
55
-
56
- n=2では以下のようになる必要があります。
57
- 0.00000000 0.00000000
58
- 11.11111111 0.00000000
59
- 16.66666667 9.62250449
60
- 22.22222222 0.00000000
61
- 33.33333333 0.00000000
62
- 38.88888889 9.62250449
63
- 33.33333333 19.24500897
64
- 44.44444444 19.24500897
65
- 50.00000000 28.86751346
66
- 55.55555556 19.24500897
67
- 66.66666667 19.24500897
68
- 61.11111111 9.62250449
69
- 66.66666667 0.00000000
70
- 77.77777778 0.00000000
71
- 83.33333333 9.62250449
72
- 88.88888889 0.00000000
73
- 100.00000000 0.00000000

2

実行例の追加

2020/02/17 18:06

投稿

Magolors
Magolors

スコア21

title CHANGED
File without changes
body CHANGED
@@ -51,4 +51,23 @@
51
51
 
52
52
  ### 試したこと
53
53
 
54
- 値の見直し、条件の変更をしましたが解決しませんでした。
54
+ 値の見直し、条件の変更をしましたが解決しませんでした。
55
+
56
+ n=2では以下のようになる必要があります。
57
+ 0.00000000 0.00000000
58
+ 11.11111111 0.00000000
59
+ 16.66666667 9.62250449
60
+ 22.22222222 0.00000000
61
+ 33.33333333 0.00000000
62
+ 38.88888889 9.62250449
63
+ 33.33333333 19.24500897
64
+ 44.44444444 19.24500897
65
+ 50.00000000 28.86751346
66
+ 55.55555556 19.24500897
67
+ 66.66666667 19.24500897
68
+ 61.11111111 9.62250449
69
+ 66.66666667 0.00000000
70
+ 77.77777778 0.00000000
71
+ 83.33333333 9.62250449
72
+ 88.88888889 0.00000000
73
+ 100.00000000 0.00000000

1

再帰が使われていなかった

2020/02/17 15:39

投稿

Magolors
Magolors

スコア21

title CHANGED
@@ -1,1 +1,1 @@
1
- 再帰がうまくはたらきません
1
+ キューがうまくはたらきません
body CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- [コッホ曲線](https://onlinejudge.u-aizu.ac.jp/courses/lesson/1/ALDS1/all/ALDS1_5_C)(フラクタル図形を再帰的に求める問題)をキューを用いて解こうとしているのですが、n=2以降うまく働かず困っております。どなたか解決策を教えていただきたいです。
3
+ [コッホ曲線](https://onlinejudge.u-aizu.ac.jp/courses/lesson/1/ALDS1/all/ALDS1_5_C)(フラクタル図形を求める問題)をキューを用いて解こうとしているのですが、n=2以降うまく働かず困っております。どなたか解決策を教えていただきたいです。
4
4
 
5
5
  ### 該当のソースコード
6
6