** Пример за задача за тренинг
Задача 0b. Да се напише
програма за превръщане на естествено число от десетична в двоична
бройна система и обратно.
Вход:
Задава се редица от двойки числа - първото число е основата
на бройната система, а второто - числото за превръщане (по-малко
от 104).
Изход:
За всяка двойка числа от входа се извежда двойка числа (на отделен
ред) - отново първото число е основата на бройната система, а
второто - превърнатото число.
Пример:
10 8
2 1000
2 1
Решение на примера:
2 1000
10 8
10 1
Пример за проверка (0a.inp) |
Изход: (0a.out) |
10 8 2 1000 2 1 2 111111 10 999 2 1111100111 |
2 1000 10 8 10 1 10 63 2 1111100111 10 999 |
Програма:
// f12345_0a.cpp
#include <iostream>
#include <string>
using namespace std;
string ten2two(int n)
{
string m;
while (n >= 1)
{
m = static_cast<char>((n%2) + '0') + m;
n /=2;
}
return m;
}
int two2ten(string s)
{
int m = 0;
for (int i = 0; i < s.length();
i++) m = 2*m + (s[i] - '0');
return m;
}
int main()
{
int k, n;
string s;
while (cin >> k)
{ if (k==2)
cin >> s; else cin >> n;
//
cout << k << " " << s << endl;
if (k==10) cout << 2 << " " << ten2two(n);
else cout << 10 << " " << two2ten(s);
cout << endl;
}
return 0;
}
Скрипт за проверката:
g++ f$2_$1.cpp
./a.out < $1.inp
rm a.out