Đề bài : ThucHanh04a_Ham.pdf
Viết hàm để chuyển số nguyên dương N từ hệ cơ số a sang hệ cơ số b, với N, a, b nhập vào từ bàn phím :
N (a) -> ? (b)
10 (10) -> 13 (7)
14 (6) -> 11 (9)
Gợi ý sử dụng hệ cơ số 10 làm trung gian
Nâng cao ko bắt buộc : kiểm tra xem trước N (a) có hợp lệ ko, ví dụ 18 (7) là ko hợp lệ.
-------------------------------------------------------------------------------------------
Ở đây mình làm cơ số từ 2 đến 10 thôi.
Code : http://pastebin.com/cRNBPgv4 hoặc thuchanh4a-bai3.cpp
-------------------------------------------------------------------------------------------
#include <iostream>
using namespace std;
bool kiemtra(int n, int a)
{
if ( a<2 ) return false;
else
{
while ( n>a )
{
if ( (n%10) >= a ) return false;
n = n/10;
}
return true;
}
}
int mu(int a, int b)
{
int tich=1;
for ( int i=0; i<b; i++)
{
tich = tich*a;
}
return tich;
}
int chuyencoso(int n, int a, int b)
{
int tong=0;
int i=0;
while(n!=0)
{
tong += (n%10) * mu(a,i);
n /= 10;
i++;
}
int thuong, du , sum=0;
i=0;
while (tong!=0)
{
int tam= tong%b;
tong = tong/b;
sum += tam * mu(10,i);
i++;
}
return sum;
}
int main ()
{
int a=0,b,n=1;
while ( !kiemtra(n,a) )
{
cout << "So : " ;
cin >> n;
cout << "Co so hien tai : ";
cin >> a;
cout << "Co so chuyen sang : ";
cin >> b;
if ( !kiemtra(n,a) ) cout << "So ko hop le. Nhap lai" << endl;
}
cout << n << "("<<a<<")" << " --> " <<chuyencoso(n,a,b) << "("<<b<<")" << endl;
system("pause");
return 0;
}