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

回答編集履歴

1

具体例を記述

2020/01/13 07:24

投稿

退会済みユーザー
answer CHANGED
@@ -5,4 +5,45 @@
5
5
  ### C++で実行したい場合
6
6
  十進数で表現することを諦めます。
7
7
  個人的にはwhile文と二進数表現でのループ判定条件を試します。
8
- 二進数における桁上がりのプログラムを書くことと半的条件を記述することにより、桁数の心配をしなくて済むと思います。
8
+ 二進数における桁上がりのプログラムを書くことと半的条件を記述することにより、桁数の心配をしなくて済むと思います。
9
+
10
+ ### 実際のコード
11
+ 以下のコードを活用することで2の64乗までは回すことが出来るはず
12
+ 以下は、2の5乗回だが手直しを加えれば可能
13
+ 注意点は、二進数の文字表記しか出来ないので、十進数の数値に変換する場合は別途コードを書く必要がある。
14
+ ```C++
15
+ #include<iostream>
16
+ #include<string>
17
+ using namespace std;
18
+
19
+ string binary_increment_function(string s){
20
+
21
+ for(int i = 4; i >= 0; i--){
22
+
23
+ if(s.at(i) == '1'){
24
+ s.at(i) = '0';
25
+ }
26
+ else{
27
+ s.at(i) = '1';
28
+ break;
29
+ }
30
+
31
+ }
32
+
33
+ return s;
34
+ }
35
+
36
+ int main()
37
+ {
38
+ string s = "00000";
39
+
40
+ while(s != "10000"){
41
+
42
+ s = binary_increment_function(s);
43
+
44
+ cout<<s<<endl;
45
+ }
46
+
47
+ return 0;
48
+ }
49
+ ```