Posted: Tue Jan 02, 2007 2:36 pm
Code: Select all
128 10 2
Code: Select all
128 10 2
Code: Select all
if(result == "")
result = "0";
if(result.length() > 7)
cout << " ERROR";
else cout << setw(7) << setiosflags(ios::right) << result;
cout << "\n";
Code: Select all
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int number(char n) {
if (n <= '9' and n >= '0') return n - '0';
return n - 'A' + 10;
}
char num_b(int n) {
if (n <= 9 and n >= 0) return '0' + n;
return 'A' + n - 10;
}
int base_a_to_dec(string n, int a) {
int s = n.size();
int dec = 0;
for (int i = 0; i < s; ++i) dec = dec*a + number(n[i]);
return dec;
}
void base_dec_to_b(int dec, int b, int w) {
if (dec < b) cout << setw(w) << num_b(dec%b);
else {
base_dec_to_b(dec/b, b, w - 1);
cout << num_b(dec%b);
}
}
int main() {
string num;
while (cin >> num) {
int a, b;
cin >> a >> b;
int n = base_a_to_dec(num, a);
if (b*b*b*b*b*b*b <= n) cout << setw(7) << "ERROR" << endl;
else {
base_dec_to_b(n, b, 7);
cout << endl;
}
}
}
thanks for reply... you think that my presentation error was the
Code: Select all
/* Hided */
Code: Select all
Code Deleted after AC
Code: Select all
#include <stdio.h>
#include <string.h>
int main()
{
//freopen("in.txt","rt",stdin);
char base16[]= "0123456789ABCDEF",num[10000];
int convertedNum[10000],i,j,originalNum,givenBase,base;
while(scanf("%s %d %d",num,&givenBase,&base) == 3){
originalNum = 0;
int len = strlen(num);
for(i = 0;i < len;i++){
if(num[i] <= '9' && num[i] >= '0' )
originalNum = originalNum * givenBase + (num[i] - '0');
else if(num[i] <= 'F' && num[i] >= 'A')
originalNum = originalNum * givenBase + (num[i] - 'A' + 10);
}
if(originalNum == 0){
printf(" 0\n");
continue;
}
for(i = 0; originalNum; i++)
{
convertedNum[i] = originalNum % base;
originalNum /= base;
}
i--;
if(i > 7){
printf(" ERROR\n");
continue;
}
for(j = 0; j < 6 - i; j++)
printf(" ");
while(i >= 0)
{
printf("%c",base16[convertedNum[i]]);
i--;
}
printf("\n");
}
//fclose(stdin);
return 0;
}