合計 昨日 今日

[再]文字を逆に

[このトピックは解決済みです]

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: よろしくおねがい
[URL]
Date: 2017年4月17日(月) 20:46
No: 1
(OFFLINE)

 [再]文字を逆に

コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
using namespace std;
 
 
int main() {
 
 
    int a,b;
 
 
    cout << "10進数\n";
 
    cin >> a;
 
 
 
    while (a >= 1) {
 
            b = a % 2;
 
        a = a - b;
 
        a = a / 2;
 
 
 
 
        cout << b;
 
 
 
 
    }
 
 
 
}


この10進数を2進数に変えるプログラムは10と打つと0101となるのですが、なんとかできるだけこの形を崩さずに0101を1010に出来ませんか?

Name: たいちう
[URL]
ハッカー(140,272 ポイント)
Date: 2017年4月17日(月) 22:05
No: 2
(OFFLINE)

 Re: [再]文字を逆に

「できるだけこの形を崩さず」という条件が難しいので無視して、私が普通に書くとこうなります。

コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
 
void printBinary(int a) {
    if (a) {
        printBinary(a / 2);
        cout << a % 2;
    }
}
 
int main() {
    int a;
    cout << "10進数\n";
    cin >> a;
 
    printBinary(a);
 
    return 0;
}

Name: purin52002
[URL]
上級者(20,308 ポイント)
Date: 2017年4月17日(月) 22:16
No: 3
(OFFLINE)

 Re: [再]文字を逆に

stack使えばあまり形が崩れないかも、、、?

コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include<stack>
using namespace std;
 
 
int main() {
 
 
    int a,b;
 
    stack<int> st;//new!
 
    cout << "10進数\n";
 
    cin >> a;
 
 
 
    while (a >= 1) {
 
            b = a % 2;
 
        a = a - b;
 
        a = a / 2;
 
 
 
 
        //cout << b;
        st.push(b);//new!
 
 
 
    }
 
    //new!
    while(!st.empty()) {
        cout<<st.top();
        st.pop();
    }
 
}
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

Name: よろしくおねがい
[URL]
Date: 2017年4月17日(月) 22:42
No: 4
(OFFLINE)

 Re: [再]文字を逆に

[解決!]

お二人方、ありがとうございました!
無事、完成させることが出来ました^^

Name: かずま
[URL]
Date: 2017年4月18日(火) 06:17
No: 5
(OFFLINE)

 Re: [再]文字を逆に

よろしくおねがい さんが書きました:無事、完成させることが出来ました^^

本当に完成したのですか?
それなら、その完成したコードを提示してください。
入力が 0 の場合、0 と出力されますか?

次のコードは参考になりますか?
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    cout << "10進数\n";
    int a;
    cin >> a;
    string s;
    do s = char((a & 1) + '0') + s; while (a >>= 1);
    cout << s;
}

do s = char((a % 2) + '0') + s; while (a /= 2); でもいいんだけど。

Name: かずま
[URL]
Date: 2017年4月18日(火) 08:34
No: 6
(OFFLINE)

 Re: [再]文字を逆に

よろしくおねがい さんが書きました:なんとかできるだけこの形を崩さずに0101を1010に出来ませんか?

コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream> 
using namespace std;
 
 
int main() {
 
 
    int a, b[12], i = 0;
 
 
    cout << "10進数\n";
 
    cin >> a;
 
 
 
    do {
 
        b[i++] = a % 2;
 
 
 
        a = a / 2;
 
    } while (a);
 
 
    while (i) {
 
        cout << b[--i];
 
 
    }
 
 
 
}

Name: たいちう
[URL]
ハッカー(140,272 ポイント)
Date: 2017年4月18日(火) 09:06
No: 7
(OFFLINE)

 Re: [再]文字を逆に

かずまさん

> 入力が 0 の場合、0 と出力されますか?

私のプログラム、ダメダメでしたね。


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[28人]