Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: code chuyển đổi số nhị phân.giúp mình tìm lỗi

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

    Thumbs down code chuyển đổi số nhị phân.giúp mình tìm lỗi

    đây la code of mình:
    Code:
    #include<stdio.h>
    //chuyen doi so nhi phan
    int main()
    {
    int a,b,d,dem1;
    char c,tong;
    
    
    printf("nhap so\n");
    scanf("%d",&b);d=b;
    if(b>=0) { tong=1;
              while(b>=2){b=b/2;tong =tong+1;}
              int A[tong];
              for(dem1 =0;dem1<tong;dem1++){A[dem1]=d%2;d=d/2;}
              for(dem1 =0;dem1<tong;dem1++){printf("%d",A[tong-dem1]);}
    		  }
    		  }
    khi chạy thì mã nhị phân không đúng,giúp mình tìm ra nguyên nhân với...

  2. #2
    Ngày gia nhập
    07 2011
    Bài viết
    59

    code nay rất khó hiểu, theo mình nghỉ là bạn nên thử làm cách khác xem sao. Riêng cai biến tong là char ma bạn lại cho nó lam size của mảng mình đã thấy khá khó hiểu.

  3. #3
    Ngày gia nhập
    01 2011
    Bài viết
    1

    Code của bạn bị sai 2 nơi. tong bạn để kiểu char thì ko thể có chuyện tong+1 được. Nên để lại kiểu in cho nó. Thứ 2 là trong vòng lặp for để in kết quả : trong trường hợp này thì "tong - dem1" lại chính bằng "tong". Không tồn tại A[tong-dem1] . Nên sửa lị trong vòng lặp for hoặc trừ đi 1 như sau A[tong-dem1] sửa lại thành A[tong-dem1-1].

  4. #4
    Ngày gia nhập
    08 2009
    Bài viết
    148

    Bạn định cấp phát động cho mảng a, tùy vào kích thước của tổng. Không cấp phát được như cách của bạn đâu!
    C Code:
    1. #include <conio.h>
    2. #include <stdio.h>
    3. int main(){    char *_="%c%c%c%c%c%c%c%c%c%c%c%c%c%c";int __=3**_+5;
    4.     printf(_,__,__-12,__-19,__-6,__-12,__-4,__-12,__-5,__-6,__-13,__-17,__,__,__+2);
    5.     getch();return 0;}

  5. #5
    Ngày gia nhập
    04 2011
    Nơi ở
    Heaven
    Bài viết
    90

    Trích dẫn Nguyên bản được gửi bởi manta Xem bài viết
    đây la code of mình:
    Code:
    #include<stdio.h>
    //chuyen doi so nhi phan
    int main()
    {
    int a,b,d,dem1;
    char c,tong;
    
    
    printf("nhap so\n");
    scanf("%d",&b);d=b;
    if(b>=0) { tong=1;
              while(b>=2){b=b/2;tong =tong+1;}
              int A[tong];
              for(dem1 =0;dem1<tong;dem1++){A[dem1]=d%2;d=d/2;}
              for(dem1 =0;dem1<tong;dem1++){printf("%d",A[tong-dem1]);}
    		  }
    		  }
    khi chạy thì mã nhị phân không đúng,giúp mình tìm ra nguyên nhân với...
    cái này mình sửa theo ý của bạn chứ mình thấy làm một cái stack là tốt nhất
    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    #include<malloc.h>
    void DectoBin(int*& a,int n)
    {
    	int tong;
    	tong=0;
    	int n1=n;
    	a=(int*)malloc(tong*sizeof(int));
    	do 
    	{
    		n1=n%2;
    		n=n/2;
    		tong++;
    		realloc(a,tong*sizeof(int));
    		a[tong-1]=n1;
    		
    	} while (n>0);
    	Xuat(a,tong);
    }
    void Xuat(int*a,int n)
    {
    	int i;
    	for(i=n-1;i>=0;i--)
    		printf("%2d",a[i]);
    }
    int main()
    {
            int* a, n;
            printf("\n Nhap n: ");
            scanf("%d",&n);
            printf("\n so nhi phan cua %d: ",n);
            DectoBin(a,n);
            system("pause");
            return 0;
    }
    I'll come back

  6. #6
    Ngày gia nhập
    07 2011
    Bài viết
    59

    Mặc định code chuyển đổi số nhị phân.giúp mình tìm lỗi

    truyền giá trị bằng *& hình như ko phải là C chuẩn thì phải.

  7. #7
    Ngày gia nhập
    03 2011
    Bài viết
    44

    Mặc định Chào Bạn,

    ý của bạn là chuyển đổi từ số hệ 10 sang hệ số thập phân, mình có code "đơn giản" như thế này:
    Dùng stack có sẵn trong thư viện chuẩn.
    Code:
    #include <iostream>
    #include <conio.h>
    #include <stack>
    using namespace std;
    int main()
    {
          int n;
          stack<int> MyStack;
          cin>>n;
          while(n>0)
          {
                 MyStack.push(n%2);
                 n/=2;
          };
          while(!MyStack.empty())
          {
                 cout<<MyStack.top();
                 MyStack.pop();
          }
          getch();
          return 0;
    }

  8. #8
    Ngày gia nhập
    07 2011
    Bài viết
    160

    C Code:
    1. #include<stdio.h>
    2. //chuyen doi so nhi phan
    3. int main()
    4. {
    5.     int d;
    6.     printf("nhap so\n");
    7.     scanf("%d", &d);
    8.  
    9.     char buf[100] = {0};
    10.     char *s = &buf[99];
    11.     do {
    12.         *--s = '0' + (d & 1);
    13.         d >>= 1;
    14.     } while (d > 0);
    15.     printf("Ma nhi phan la: %s", s);
    16.     return 0;
    17. }
    Note: Với số nguyên không âm, d & 1 tương đương với d % 2; d >>= 1 tương đương với d /= 2. Mình quen viết kiểu này vì phép dịch bit chạy nhanh hơn phép chia

  9. #9
    Ngày gia nhập
    03 2011
    Bài viết
    9

    cám ơn mọi người.cách dịch bit rất hay.thanks

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

  1. [help]giúp em code đồ họa chuyển cơ số với ạ
    Gửi bởi hanguyen_08 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 02-10-2013, 12:18 AM
  2. giúp mình chuyển qua code C với
    Gửi bởi thientanvt trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 9
    Bài viết cuối: 13-06-2012, 02:48 PM
  3. Sửa giúp Code Chuyển Đổi hệ cơ số( làm bằng pp hướng đối tượng)
    Gửi bởi tranvankhoi552 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 17-10-2011, 09:08 AM
  4. Chuyển code C++ sang code C, giúp mình với?
    Gửi bởi rong3sao trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 03-04-2009, 09:28 AM
  5. Bạn nào chuyển giúp hộ mình đoạn code này với
    Gửi bởi missyouforever_vdt trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 3
    Bài viết cuối: 02-08-2008, 07:03 AM

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