ページ 1 / 1
[再]文字を逆に
Posted: 2017年4月17日(月) 20:46
by よろしくおねがい
コード:
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に出来ませんか?
Re: [再]文字を逆に
Posted: 2017年4月17日(月) 22:05
by たいちう
「できるだけこの形を崩さず」という条件が難しいので無視して、私が普通に書くとこうなります。
コード:
#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;
}
Re: [再]文字を逆に
Posted: 2017年4月17日(月) 22:16
by purin52002
stack使えばあまり形が崩れないかも、、、?
コード:
#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();
}
}
Re: [再]文字を逆に
Posted: 2017年4月17日(月) 22:42
by よろしくおねがい
お二人方、ありがとうございました!
無事、完成させることが出来ました^^
Re: [再]文字を逆に
Posted: 2017年4月18日(火) 06:17
by かずま
よろしくおねがい さんが書きました:無事、完成させることが出来ました^^
本当に完成したのですか?
それなら、その完成したコードを提示してください。
入力が 0 の場合、0 と出力されますか?
次のコードは参考になりますか?
コード:
#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); でもいいんだけど。
Re: [再]文字を逆に
Posted: 2017年4月18日(火) 08:34
by かずま
よろしくおねがい さんが書きました:なんとかできるだけこの形を崩さずに0101を1010に出来ませんか?
コード:
#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];
}
}
Re: [再]文字を逆に
Posted: 2017年4月18日(火) 09:06
by たいちう
かずまさん
> 入力が 0 の場合、0 と出力されますか?
私のプログラム、ダメダメでしたね。