Announcement

Collapse
No announcement yet.

Help me! [C] đổi 1 số từ nhị phân sang bát phân!!!

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Help me! [C] đổi 1 số từ nhị phân sang bát phân!!!

    Tình hình là đệ chạy được cái nhị phân nhưng còn bát phân thì không biết sai chổ nào cả
    e chạy số 9 thì ra kết quả đúng,nhưng nhập 100 thì lại sai.nó ra là 1 4 1 4 1 trong khi đó 1 4 4 mới đúng.
    Huynh nào Pro giúp đệ với!!!:kiss:
    Tks các huynh trước :go:
    PHP Code:
    #include "stdafx.h"
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    #include <malloc.h>
    void xuat(int *A,int n)
    {
            for(
    int i=n-1;i>=0;i--)
                
    printf("%2d",A[i]);
    }
    long nhiphan(int x,int *A,int &dem)
    {
        
    int a;
        
    a=x/2;
        
    A[dem]=x-2*a;
        if(
    a==0)
        {
            
    dem++;
            return 
    0;
        }
        else
        {
            
    dem++;
            
    nhiphan(a,A,dem);
        }
    }
    void batphan(int x,int *A)
    {
        
    int dem=0,i;
        
    nhiphan(x,A,dem);
        while(
    dem%3!=0)            // them 0 vao cho du~ 3 so vd nhu 1 0 0 1 thanh 0 0 1 0 0 1
        
    {
            
    dem++;
            
    A[dem-1]=0;
        }
        for(
    i=dem-1;i>=2;i=i-3)        //e dung quy tac doi tu nhi phan sang bat phan 000 la 0, 001 la 1,010 la 2...
        
    {
            if(
    A[i]+A[i-1]+A[i-2]==0)
                
    printf("0");
            if(
    A[i]+A[i-1]+A[i-2]==3)
                
    printf("7");
            if(
    A[i]+A[i-1]+A[i-2]==1)
            {
                if(
    A[i]==1)
                    
    printf("4");
                if(
    A[i-1]==1)
                    
    printf("2");
                else
                    
    printf("1");
            }
            if(
    A[i]+A[i-1]+A[i-2]==2)
            {
                if(
    A[i]==0)
                    
    printf("3");
                if(
    A[i-1]==0)
                    
    printf("5");
                else
                    
    printf("6");
            }
        }
    }

    void main()
    {
        
    int *A;
        
    A=(int*)malloc(100);
        
    int x,dem=0;
        
    printf("nhap x dy kung");
        
    scanf("%d",&x);
        
    nhiphan(x,A,dem);
        
    printf("so %d chuyen sang he nhi phan la: ",x);
        
    xuat(A,dem);
        
    printf("so %d chuyen sang he bat phan la: ",x);
        
    batphan(x,A);
        
    getch();

    Last edited by 12520471; 25-03-2013, 21:29.

  • #2
    Theo quy định của admin box này:
    Originally posted by sinhvien.uit View Post
    Do dạo này các bạn năm nhất lập rất nhiều topic thắc mắc nhưng kỹ năng đặt câu hỏi rất yếu khiến nhiều topic khó có thể tìm câu trả lời nên ad viết nhanh một số quy tắc này để các bạn tham khảo. Từ bây giờ topic này lập ra mà không tuân thủ các quy tắc này có thể bị xóa kèm theo infraction không báo trước.

    0. Quy tắc tối thượng: Các mẫu câu: "Chạy không được", "Bị lỗi", "Có lỗi rồi", "Lỗi ở đâu đó", "chạy không ra", v.v... không được chấp nhận.

    1. Code phải để trong thẻ [PHP] hoặc thẻ [CODE]. Để cho đẹp hơn nữa có thể sử dụng các pastebin như http://pastebin.com/

    2. Khi nêu khúc mắc về một đoạn code phải nêu rõ đoạn code đó chủ đích được viết ra để làm gì. Giải quyết quyết bài toán hay minh họa vấn đề nào? Nếu bạn không phải là người viết code thì liên hệ hỏi người viết để biết, nếu chính người viết đoạn code cũng không biết nó dùng làm gì thì đoạn code đó
    nên bỏ đi, không đáng để thắc mắc.

    3. Nếu đoạn code có lỗi (compile time họăc runtime) phải nêu rõ hàng nào bị lỗi, nội dung thông báo lỗi, thông tin trình biên dịch. Chú ý quy tắc 0

    4. Nếu đoạn code không phát sinh error khi chạy, nhưng cho kết quả sai mục đích ban đầu thì phải mô tả rõ ứng với trường hợp dữ liệu nào sẽ cho kết quả sai, kết qủa mong muốn là gì và kết quả chương trình đưa ra là gì. Chú ý quy tắc 0
    Thì em thiếu phần thông tin số 3 và 4. Để mọi người giúp em được nhanh và chính xác hơn, tiết kiệm thời gian cho cả em và mọi người, em chịu khó mô tả vấn đề rõ hơn đi.

    Comment


    • #3
      Các Pro đâu hết oy ta :beatbrick:

      Comment


      • #4
        Originally posted by 12520471 View Post
        Các Pro đâu hết oy ta :beatbrick:
        thứ nhất mình góp ý với bạn trung là mấy bro vô ném gạch hết đó. với đọc xong câu này người ta cũng khó muốn giúp m lắm.
        ( t cũng đang làm, cơ mà những vẫn đề trên mạng rồi mà chưa tìm được câu trả lời thích đáng thì t mới vô đây hỏi. vậy nên tìm ngoài đã.
        ngoài kia còn khối người mắc lỗi như mình
        Hãy chào với một nụ cười rạng ngời
        :love::salute::happy::sunglasses:

        Comment


        • #5
          void batphan(int x,int A[])
          {
          int dem=0,i,thieu;
          nhiphan(x,A,dem);
          if (dem%3>0) thieu=3-dem%3;
          for (i=0;i<thieu;i++)
          A[dem+i]=0;
          dem=dem+thieu;
          i=dem-1;
          while (i>0)
          {
          int tam=A[i]*4+A[i-1]*2+A[i-2];
          printf("%d",tam);
          i=i-3;
          }
          }

          Comment


          • #6
            bài này bạn sai 3 chỗ

            Code:
                 #include <stdio.h>
                    #include <conio.h>
                    #include <string.h>
                    #include <malloc.h>
                    void xuat(int *A,int n)
                    {
                            for(int i=n-1;i>=0;i--)
                                printf("%2d",A[i]);
                    }
                    long nhiphan(int x,int *A,int &dem)
                    {
                        int a;
                        a=x/2;
                        A[dem]=x-2*a;
                        if(a==0)
                        {
                            dem++;
                            return 0;
                        }
                        else
                        {
                            dem++;
                            nhiphan(a,A,dem);
                        }
                    }
                    void batphan(int x,int *A)
                    {
                        int dem=0,i;
                        nhiphan(x,A,dem);
                        while(dem%3!=0)            // them 0 vao cho du~ 3 so vd nhu 1 0 0 1 thanh 0 0 1 0 0 1
                        {
                            dem++;
                            [COLOR="#0000FF"]A[dem]=0;[/COLOR]
                        }
                        for(i=dem-1;i>=2;i=i-3)        //e dung quy tac doi tu nhi phan sang bat phan 000 la 0, 001 la 1,010 la 2...
                        {
                            if(A[i]+A[i-1]+A[i-2]==0)
                                printf("0");
                            if(A[i]+A[i-1]+A[i-2]==3)
                                printf("7");
                            if(A[i]+A[i-1]+A[i-2]==1)
                            {
                                if(A[i]==1)
                                    printf("4");
                                if(A[i-1]==1)
                                    printf("2");
                               [COLOR="#0000FF"] if(A[i-2]==1)
                                    printf("1")[/COLOR];
                            }
                            if(A[i]+A[i-1]+A[i-2]==2)
                            {
                                if(A[i]==0)
                                    printf("3");
                                if(A[i-1]==0)
                                    printf("5");
                               [COLOR="#0000FF"] if(A[i-2]==0)
                                    printf("6");[/COLOR]
                            }
                        }
                    }
            
                    int main()
                    {
                        int *A;
                        A=(int*)malloc(100);
                        int x,dem=0;
                        printf("nhap x dy kung");
                        scanf("%d",&x);
                        nhiphan(x,A,dem);
                        printf("so %d chuyen sang he nhi phan la: ",x);
                       xuat(A,dem);
                        printf("so %d chuyen sang he bat phan la: ",x);
                        batphan(x,A);
                        getch();
                    }
            Last edited by 10520073; 26-03-2013, 01:00.

            Comment


            • #7
              [QUOTE=10520073;195262]bài này bạn sai 3 chỗ
              Huynh ơi.Đệ nghĩ là A[dem-1]=0...thêm phần tử thứ n-1 =0...VD: nhập 9 thì hệ nhị phân là 1001,thêm 2 pt 0 nữa là 001001 và sang bat phân được 1 1
              còn sửa theo cách của huynh thì sai nốt số 9 lun (

              Comment


              • #8
                Originally posted by matpass
                mới lập nick nên ko tạo topic được xin chủ topic thông cảm
                Forum không có chính sách cấm tạo topic mới, nếu tài khoản có sự cố thì vào box của Ban quản trị thông báo lỗi, không có hỏi ké.

                Comment


                • #9
                  End topic đi, thầy cộng điểm rồi mà )
                  ˚˚CQH˚˚
                  ◦•HTTT07•◦

                  Comment


                  • #10
                    Originally posted by 12520344 View Post
                    End topic đi, thầy cộng điểm rồi mà )
                    ý bạn là sao.mà hạn cuối bao giờ nộp bài .nộp bài cho thầy qua mail nào vậy bạn

                    Comment


                    • #11
                      có bác nào làm xong bài thầy ra thì post bài nên cho anh em tham khảo

                      Comment


                      • #12
                        sửa

                        #include <conio.h>
                        #include <stdio.h>
                        #include <math.h>
                        #include <string.h>


                        void chuyendoi(long so,int he)
                        {
                        if (so>=he) chuyendoi(so/he,he);
                        printf("%c",(so%he)["0123456789ABCDEF"]);
                        }
                        long chuyenve(char* a,int he,int i) // i= strlen(a)
                        {
                        return (i==1)?(a[i-1]-'0')*long(pow(double(he),int(strlen(a))-i)) : (a[i-1]-'0')*long(pow(double(he),int(strlen(a))-i))+chuyenve(a,he,i-1) ;
                        }

                        void main()
                        {

                        char so[30];
                        int hsgoc,hsdich;
                        printf("Nhap vao so : ");gets(so);
                        printf("Nhap vao he so goc : ");scanf("%d",&hsgoc);
                        printf("Nhap vao he so dich : ");scanf("%d",&hsdich);
                        printf("Ket qua : ");
                        chuyendoi(chuyenve(so,hsgoc,strlen(so)),hsdich);
                        getch();
                        }

                        Comment

                        LHQC

                        Collapse
                        Working...
                        X