Học tập‎ > ‎C++‎ > ‎

Chuyển đổi hệ 10 sang hệ cơ số khác (2-16) C++



Hiện thực chương trình chuyển đổi hệ cơ số thập phâ (hệ 10) sang các hệ khác từ hệ 2 đến hệ 16
Trong chương trình dưới đây, 2 hàm convertToBaseRec và convertToBase cùng thực hiên chức năng chuyển đổi cơ số nhưng dùng 2 phương pháp khác nhau: Lặp tuần tự (lệnh while) và Đệ quy.

[ code ]

#include <stdio.h>

 

void convertToBase(int, int);

void convertToBaseRec(int, int);

void main()

{

     int base = 1 ; int number;

     printf("Nhap so muon chuyen doi : ");

     scanf("%d",&number);

     // Chỉ chấp nhận hệ cơ số từ 2 (bit) tới 16 (HEX)

     while(base>16 || base<2)

     {

          printf("Nhap co so: ");

          scanf("%d",&base);

     }

     //Theo phương pháp lặp while

      printf("\n Ket qua chuyen doi (su dung ham tuan tu) : ");

     convertToBase(base,number);

     //Theo phương pháp đệ quy

     printf("\n Ket qua chuyen doi (su dung ham de quy) : ");

     convertToBaseRec(base,number);

}

 

void convertToBase(int base, int number)

{

     //Mảng chứa các chữ số của hệ 16  [hex]

     char digits[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};

     char output[100];

     int i=0;


     while(number>0)

     {

          output[i++] = digits[number%base];    

          number = number/base;

     }

     i--;

     //Xuất ra kết quả

     for(;i>=0;i--)

     {

          printf("%c",output[i]);

     }

}

 

void convertToBaseRec(int base, int number)

{

     char digits[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};


     if(number<=0)

     {

          return;

     }

     //Gọi đệ quy hàm convertToBaseRec()

     convertToBaseRec(base,number/base);

     //Xuất kết quả ra màn hình

     printf("%c",digits[number%base]);    

}



Comments