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ố 19 kết quả

Đề tài: Chuyển đổi hệ cơ số | Code chuyển số integer to hệ 2, hệ 8, hệ 16?

  1. #1
    Ngày gia nhập
    10 2008
    Bài viết
    33

    Angry Chuyển đổi hệ cơ số | Code chuyển số integer to hệ 2, hệ 8, hệ 16?

    em đang có 1 bài mong các cao thủ giúp đỡ:
    nhập và 1 số interger chuyển các số sang hệ 2,8,16 <== cái này e làm được rùi
    lấy số hệ 2 ,8,16 hoặc nhập vào chuyến sang hệ 10
    ví dụ:nhập vào số 9(hệ 10) --->>> 1001 ---->>chuyển ngược lại --->thành hệ 10 hoặc hệ 8,16
    mong các cao thủ chỉ giáo !em nghĩ hoài chưa ra
    đây là code chuyển xuôi của e cao thủ nào viết rùm em nốt chuyển ngược dùm em.em cảm ơn
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi thanhthuy40 : 14-04-2009 lúc 01:52 AM. Lý do: chú thích

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Bạn có thể tham khảo cái này, mình làm hoàn toàn trên xâu kí tự vì mắc các hệ lớn hơn 10.
    C Code:
    1. /** Author: QuangHoang
    2.   * File: ConvertNumber.c
    3.   * Date: 20090202
    4.   * Info:
    5.   **/
    6. #include <stdio.h>
    7. #include <stdlib.h>
    8. #include <string.h>
    9. /*
    10. */
    11. char* Convert(char* input, int be, int en)
    12. {
    13.     if (be==en) return input;
    14.  
    15.     int n=strlen(input);
    16.     char *output = (char*) malloc (4*n*sizeof(char));
    17.  
    18.     int num=0;
    19.     if (be!=10) //convert to decimal
    20.     {
    21.         int i=0;
    22.         while (i<n)
    23.         {
    24.             int tmp;
    25.             if (input[i]<65) tmp = input[i]-48;
    26.             else if (input[i]<97) tmp = input[i]-55;
    27.             else tmp = input[i]-87;
    28.             num = num*be + tmp;
    29.             i++;
    30.         }
    31.         itoa(num,output,10);
    32.     }
    33.  
    34.     if (en!=10) //convert decimal to other system number
    35.     {
    36.         int i=0;
    37.         while (num!=0)
    38.         {
    39.             int t = num%en;
    40.             num = num/en;
    41.             if (t>9)
    42.             {
    43.                 output[i] = t+55;
    44.                 i++;
    45.             }
    46.             else
    47.             {
    48.                 output[i] = t+48;
    49.                 i++;
    50.             }
    51.         }
    52.         output[i]='\0';
    53.         int m=strlen(output);
    54.         for (int j=0;j<m/2; ++j)
    55.         {
    56.             char tmp=output[j];
    57.             output[j]=output[m-j-1];
    58.             output[m-j-1]=tmp;
    59.         }
    60.     }
    61.  
    62.     return output;
    63. }
    64.  
    65. int main()
    66. {
    67.     char input[50];
    68.     int be,en;
    69.     printf("* Convert number: ");gets(input);
    70.     printf(" - From: ");scanf("%d",&be);
    71.     printf(" - To: ");scanf("%d",&en);
    72.     printf(" ---> Result: %s\n",Convert(input,be,en));
    73.     system("pause");
    74.     return 0;
    75. }

  3. #3
    Ngày gia nhập
    10 2008
    Bài viết
    33

    system("pause");<<---------- cái này là cái rì vậy bạn
    cái này của thư viện <stdlib.h> mà sao trình dịch của mình nó complain vậy
    hĩ bạn convert từ hệ 2->>10 thui đâu convert được tất cả các hệ đâu
    mình cần convert 2-->10 and 2-->8 and 2-->16
    hoặc convert 8-->2 .....
    Đã được chỉnh sửa lần cuối bởi thanhthuy40 : 14-04-2009 lúc 02:40 PM. Lý do: thiếu

  4. #4
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    2,993

    đây phải chăng là điều bạn muốn ? code full bài tập của bạn

    nhập vào số và hệ cơ số bất kì, chuyền sang số của hệ cơ số bạn muốn

    ( chuyển số từ hệ cơ số X -> số ở hệ cơ số Y)

    (chương của tôi chỉ đúng với Y<=16 thôi)


    PHP Code:
    #include <conio.h>
    #include <stdio.h>
    #include <math.h>
    #include <string.h>


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

    void main(void)
        {
            
    clrscr();
            
    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();
        } 
    Đã được chỉnh sửa lần cuối bởi langman : 14-04-2009 lúc 04:39 PM.
    ^_,^
    Mình là 1 con gà trong công nghệ.
    Nếu mình có nói gì làm bạn không vui thì mong bạn bỏ qua cho, vì cá nhân mình còn gà lắm, và mình có ý tốt thôi.

    Bùi Tấn Quang

  5. #5
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    @langman: nhớ lại ngày xưa mình cũng viết code như thế , bị ông thầy trừ điểm vì tội code rắc rối quá, làm thầy chậm hiểu (=)), nhớ lại vẫn tức cười vụ đó
    None!

  6. #6
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    2,993

    Mặc định Chuyển đổi hệ cơ số | Code chuyển số integer to hệ 2, hệ 8, hệ 16?

    hix, nói đến chuyện đó mà não lòng
    tớ cũng rơi vào hoàn cảnh tương tự.............
    ^_,^
    Mình là 1 con gà trong công nghệ.
    Nếu mình có nói gì làm bạn không vui thì mong bạn bỏ qua cho, vì cá nhân mình còn gà lắm, và mình có ý tốt thôi.

    Bùi Tấn Quang

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

    long chuyenve(char* a,int he,int i) // i= strlen(a)
    {
    return (i==1)?(a[i-1]-'0')*long(pow(he,strlen(a)-i)):(a[i-1]-'0')*long(pow(he,strlen(a)-i))+chuyenve(a,he,i-1) ;
    }

    hàm này trả về cái rì vậy bạn bạn có thể giải thích dõ cho mình được ko?
    những chỗ mình bôi đen đó là tên biến hay là kiểu long vậy bạn
    Đã được chỉnh sửa lần cuối bởi langman : 15-04-2009 lúc 09:18 AM. Lý do: bạn tham khảo kĩ nội quy nha

  8. #8
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    2,993

    hàm này chuyển số ở dạng char* ở hệ cơ số he về kiểu dữ liệu long
    có thể viết như sau sẽ dễ hiểu hơn

    PHP Code:
    long chuyenve(chara,int he,int i// i= strlen(a)
        
    {
        
    long temp=(a[i-1]-'0')*long(pow(he,strlen(a)-i));
        return (
    i==1)?temp:temp+chuyenve(a,he,i-1) ;
        } 
    ví dụ a="101010111" hệ cơ số 2 thì
    hàm hoạt động như sau :
    đầu tiên:
    temp=(a[9-1]-'0')*(ép kiểu long của ) (2 mũ strlen(a)-i)
    temp=(1)* (2 mũ 0)
    i khác 1 nên trả về (1)* (2 mũ 0) + chuyenve(a,2,8)

    tương tự ta có chuyenve(a,2,8) = (1)* (2 mũ 0) + chuyenve(a,2,7)
    .......
    cứ như thế nó sẽ thành
    1*2 mũ 0 + 1*2 mũ 1 +... +1*2 mũ 8 = số đó ở dạng decimal
    ^_,^
    Mình là 1 con gà trong công nghệ.
    Nếu mình có nói gì làm bạn không vui thì mong bạn bỏ qua cho, vì cá nhân mình còn gà lắm, và mình có ý tốt thôi.

    Bùi Tấn Quang

  9. #9
    Ngày gia nhập
    01 2009
    Bài viết
    165

    tại sao input có kiểu dữ liệu là char mà input[i] lại có thể trừ cho 48 vậy?
    Đã được chỉnh sửa lần cuối bởi langman : 15-04-2009 lúc 04:44 PM.

  10. #10
    Ngày gia nhập
    10 2008
    Bài viết
    33

    mình làm vẩn chưa ra bạn sửa dùm mình được ko
    Đã được chỉnh sửa lần cuối bởi thanhthuy40 : 17-04-2009 lúc 12:11 AM. Lý do: thay đổi

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

  1. Trả lời: 0
    Bài viết cuối: 07-08-2012, 05:12 PM
  2. Chuyển code sang code ngắn hơn trong LINQ
    Gửi bởi tinhthanhiepsi9x trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 14-04-2012, 11:19 AM
  3. Chuyển code Nested Dolls từ C sang code pascal
    Gửi bởi longago trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 04-01-2011, 08:54 AM
  4. Công cụ chuyển đổi code từ VB.NET qua C#
    Gửi bởi neverland87 trong diễn đàn Thắc mắc chung
    Trả lời: 11
    Bài viết cuối: 09-01-2010, 10:42 PM
  5. 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

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