Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 16 kết quả

Đề tài: Chuyển thập phân sang nhị phân !

  1. #1
    Ngày gia nhập
    05 2007
    Bài viết
    9

    Mặc định Chuyển thập phân sang nhị phân !

    Mình có 1 đề như sau : Đổi 1 số từ mã BCD sang mã thập phân
    vd: 01001001 => 49
    mình có thuật toán như sau: Nhập chuỗi BCD vào 1 mãng rồi cắt 4 ký tự đầu rồi chuyển sang mã thập phân rùi lưu vô 1 mãng b nào đó. cứ cắt cho đến khi nào ko còn quá 5 ký tự . nhưng mình ko biết viết code như thế nào. pác nào biét giúp mình với
    Bước tới đèo ngang bỗng mắc tè
    Cỏ cây chen lá, đá đâm mông
    Lom khom dưới núi tè đã quá
    Lác đác bên sông chó cái nhìn

  2. #2
    Ngày gia nhập
    05 2007
    Nơi ở
    HCMC
    Bài viết
    60

    Chưa có thời gian để coding giúp bạn, nhưng thấy có cái khúc mắc trong giải thuật: bạn phải đọc từ phải sang trái, mỗi lần 4 bit, chứ không được làm ngược lại. Ví dụ cho 1 dãy 1001001:

    lấy 1 lần 4 bit từ phải sang trái
    Code:
    1001001 --> [100][1001] --> 49
    còn nếu làm ngược như bạn:
    Code:
     
    1001001 --> [1001][001] --> 91

  3. #3
    Ngày gia nhập
    05 2007
    Nơi ở
    HCMC
    Bài viết
    60

    Nếu làm trên mảng như cậu thì như vầy nè:
    Giả sử cho mảng a[], n phần tử

    Kiểm tra xem thử có chẳn các bộ 4 "bit" không, nếu không thì thêm vô cho đủ:
    Code:
    if (n % 4 > 0)
    {
    	unsigned char k = 4 - (n % 4);   //k là số bit phải thêm vào
    	memcpy(&a[k], &a[0], n);        //dịch toàn bộ mảng sang phải k bit 
    	memset(&a[0], 0, k);    //chèn 0 vào k bit đầu
    	n += k;                //tăng số lượng phần tử lên k
    }
    xong rồi đọc 1 lần 4 số rồi tính & in ra

    Code:
    for(int i = 0; i < n; i += 4)
    	printf("%d ", a[i]*8 + a[i+1]*4 + a[i+2]*2 + a[i+3]);

  4. #4
    Ngày gia nhập
    07 2006
    Bài viết
    121

    Trích dẫn Nguyên bản được gửi bởi sonhn Xem bài viết
    Nếu làm trên mảng như cậu thì như vầy nè:
    Giả sử cho mảng a[], n phần tử

    Kiểm tra xem thử có chẳn các bộ 4 "bit" không, nếu không thì thêm vô cho đủ:
    Code:
    if (n % 4 > 0)
    {
    	unsigned char k = 4 - (n % 4);   //k là số bit phải thêm vào
    	memcpy(&a[k], &a[0], n);        //dịch toàn bộ mảng sang phải k bit 
    	memset(&a[0], 0, k);    //chèn 0 vào k bit đầu
    	n += k;                //tăng số lượng phần tử lên k
    }
    xong rồi đọc 1 lần 4 số rồi tính & in ra

    Code:
    for(int i = 0; i < n; i += 4)
    	printf("%d ", a[i]*8 + a[i+1]*4 + a[i+2]*2 + a[i+3]);
    OK trên tinh thần là vậy đi bây shin edit lại bài toán như sau không phải là 4 nữa mà là k phần tử thì sao?

    OoShinHaoO

  5. #5
    Ngày gia nhập
    04 2007
    Bài viết
    128

    Mã BCD chỉ từ 0->9, thế thì 11000011 có phải mã BCD ko? nếu phải thì sẽ ra bao nhiêu?

  6. #6
    Ngày gia nhập
    04 2007
    Bài viết
    128

    Mặc định Chuyển thập phân sang nhị phân !

    Code:
    #include<conio.h>
    #include<iostream.h>
    #include<stdlib.h>
    #include<string.h>
    #include<math.h>
    void main()
    {
    Nhap:
    	char *s=new char;
    	int j=0;
    	int len,dem;
    	int a[1000];
    	cout<<"Nhap vao 1 ma BCD";
    	cin>>s;
    	len=strlen(s);
    	for(int i=0;i<len; i++)
    		if( s[i]!=48 &&  s[i]!=49)
    		{
    			cout<<"Day ko phai ma BCD, nhap lai!"<<endl;
    			goto Nhap;
    		}
    	a[0]=0;
    	dem=0;
    	for(i=len-1;i>=0;i--)
    	{
    		if(dem<4)
    		{
    			a[j]=a[j]+(s[i]-48)*pow(10,dem);
    			dem++;
    		}
    		else 
    		{
    			dem=0;
    			j++; 
    			a[j]=(s[i]-48)*pow(10,dem);
    			dem++;
    		}
    	}
    	for(i=j;i>=0;i--)
    	{
    		if(a[i]>1001)
    		{	
    			cout<<"Day ko phai ma BCD, nhap lai!"<<endl;
    			goto Nhap;
    		}
    		switch(a[i])
    		{
    			case 0:cout<<"0";break;
    			case 1: cout<<"1"; break;
    			case 10:cout<<"2";break;
    			case 11:cout<<"3";break;
    			case 100:cout<<"4";break;
    			case 101:cout<<"5";break;
    			case 110:cout<<"6";break;
    			case 111:cout<<"7";break;
    			case 1000:cout<<"8";break;
    			case 1001:cout <<"9";break;
    		}
    	}
    	cout<<endl;
    	getch();
    }

  7. #7
    Ngày gia nhập
    08 2008
    Bài viết
    2

    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    #include<math.h>
    void main ()
    {

    int t, i=0, j, b, z, du1;
    int n,a[100];
    int m;
    clrscr();
    printf("\t\t\t Chuyen doi thap phan sang nhi phan");
    printf("\nBan hay nhap so can chuyen doi: ");
    scanf("%d",&m);
    n=m;
    printf("\n\tSo nguyen : %d",n);

    do {
    a[i]=n%2;
    n=n/2;
    i++;
    }
    while (n!=0);
    printf("\n\tSo o he 2 la : ");
    t=i-1;
    for(i=t;i>=0;i--)
    printf("%d",a[i]);
    printf("\n\t\t Cam on vi da su dung");

    getch();
    }
    Mình góp cho mấy bạn cách chuyển đổi thập phân sang nhị phân nè !!

  8. #8
    Ngày gia nhập
    08 2008
    Nơi ở
    Liên Bang Nga
    Bài viết
    46

    Đây là box C++ mà chẳng thấy đề bài, cũng như các cách giải liên quan tí nào đến C++, toàn viết chủ yếu bằng C. Bó tay! Chúng ta nên quan tâm đến chất lượng bài viết hơn là số lượng bài viết. Bài này chỉ là thuật toán đơn thuần, thì nên đưa vào box thảo luận về phương pháp giải, việc gì phải mang vào box này
    Tôi thường thích những cái gì mà tôi không bao giờ có được...

  9. #9
    Ngày gia nhập
    09 2008
    Nơi ở
    HÀ NỘI APTECH
    Bài viết
    4

    Trích dẫn Nguyên bản được gửi bởi lienthang Xem bài viết
    Đây là box C++ mà chẳng thấy đề bài, cũng như các cách giải liên quan tí nào đến C++, toàn viết chủ yếu bằng C. Bó tay! Chúng ta nên quan tâm đến chất lượng bài viết hơn là số lượng bài viết. Bài này chỉ là thuật toán đơn thuần, thì nên đưa vào box thảo luận về phương pháp giải, việc gì phải mang vào box này


    Bạn không nên nói tiêu cực thế chứ. Đối với bạn bài này đơn thuần nhưng còn nhiều người chưa giỏi về C C++ C# < như tớ >.
    Bạn có ý kiến đóng góp vậy tớ ủng hộ nhưng mà cần nghĩ đến người " dốt " 1 tí!
    Code:
    #include<stdio.h>
    #include<conio.h>
    void main()
    {
         char dola;
         dola='$';
         printf(" Em chỉ thích cái này: %c", dola);
         getch();
    }
    Press Anykey to kill ADMINISTRATOR of this Computer.

  10. #10
    No Avatar
    anhthu_cntt Khách

    Có ai có code bằng C# đổi từ thập phân sang các cơ sô khác không chia sẻ cho mình với.

Các đề tài tương tự

  1. Chuyển đổi hệ thập phân sang nhị phân
    Gửi bởi phonghieu45 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 14
    Bài viết cuối: 11-10-2012, 08:42 PM
  2. Lập trình C++ Chuyển từ chuyển từ trung tố sang hậu tố và tính biểu thức hậu tố N chữ số như thế nào?
    Gửi bởi Chopper trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 22-08-2012, 09:48 PM
  3. Mã nguồn C++ Lớp phân số và Hàm chuyển đổi số thập phân sang phân số.
    Gửi bởi doicanhden trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 04-06-2012, 03:39 PM
  4. chuyển sang hệ thập lục phân
    Gửi bởi tungtaynguyen trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 29-12-2008, 10:57 AM
  5. bác nào có thể hướng dẫn em bài toán chuyển từ hệ nhị phân sang hệ thập phân
    Gửi bởi leanh2 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 28-11-2008, 08:56 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn