Monday, June 16, 2014

Thực hành 4a - Bài 3


Đề 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;
}
     

BACK TO TOP