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

Đề tài: Ai sữa dùm cái code này với..mình cần lắm

  1. #1
    Ngày gia nhập
    11 2008
    Nơi ở
    Q.Ngãi
    Bài viết
    8

    Red face Ai sữa dùm cái code này với..mình cần lắm

    PHP Code:
    #include"stdio.h"
    #include"string.h"
    #include"stdlib.h"
    #include"conio.h"
    long  nhiphan(int n)
    {
      
    long u;
      
    int a[100],b=8;
      while(
    b)
        {
           
    a[b--]=n%2;
          
    n=n/2;
        }
    // for(b=1;b<=8;b++)  printf("%d",a[b]);
    u=a[1]*10000000+a[2]*1000000+a[3]*100000+a[4]*10000+a[5]*1000+a[6]*100+a[7]*10+a[8]*1;
     return 
    u;
    }


    void main()
    {
     
    long t,i,o;
     
    int n,a,j;
     
    char *st,*st1=3,*st2;
     
    t:clrscr();
     
    printf("\nNhap n : ");
     
    scanf("%d",&n);
     
    t=nhiphan(n);
     
    ultoa(t,st,10);
     
    i=strlen(st);
     
    a=8-i;
     for(
    j=1;j<=a;j++)
     {
       
    st2="0";
       
    strcat(st1,st2);
     }
     
    strcat(st1,st);
     
    printf("\nIN  CHUOI : %s  ",st1);
     
    printf("\n chọn 1 de nhap lai : "); scanf("%d",&o);
     if (
    o==1) goto t;
     else goto 
    tt;
     
    tt:getch();


    Bạn chạy thử dùm đi
    tại sao mình nhâp
    lần đầu n =1 thì sang nhị phân(theo chuỗi) là 00000001 là đúng rùi
    Nhưng khi mình chọn 1 để nhập lại n = 1 thì in ra là 0000000100000001
    nếu tiếp như vậy nữa thì 000000010000000100000001 .....
    mình không hiểu...
    giúp mình sữa với nhen....
    Mình cần gấp lắm...cố gắn giúp mình với nhen..
    Mình xin cảm ơn...
    Có 1 chân lý tuyệt đối đó là mọi chân lý đều là tương đối

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

    Trích dẫn Nguyên bản được gửi bởi sangu Xem bài viết
    PHP Code:
    #include"stdio.h"
    #include"string.h"
    #include"stdlib.h"
    #include"conio.h"
    long  nhiphan(int n)
    {
      
    long u;
      
    int a[100],b=8;
      while(
    b)
        {
           
    a[b--]=n%2;
          
    n=n/2;
        }
    // for(b=1;b<=8;b++)  printf("%d",a[b]);
    u=a[1]*10000000+a[2]*1000000+a[3]*100000+a[4]*10000+a[5]*1000+a[6]*100+a[7]*10+a[8]*1;
     return 
    u;
    }


    void main()
    {
     
    long t,i,o;
     
    int n,a,j;
     
    char *st,*st1=3,*st2;
     
    t:clrscr();
     
    printf("\nNhap n : ");
     
    scanf("%d",&n);
     
    t=nhiphan(n);
     
    ultoa(t,st,10);
     
    i=strlen(st);
     
    a=8-i;
     for(
    j=1;j<=a;j++)
     {
       
    st2="0";
       
    strcat(st1,st2);
     }
     
    strcat(st1,st);
     
    printf("\nIN  CHUOI : %s  ",st1);
     
    printf("\n chọn 1 de nhap lai : "); scanf("%d",&o);
     if (
    o==1) goto t;
     else goto 
    tt;
     
    tt:getch();


    Bạn chạy thử dùm đi
    tại sao mình nhâp
    lần đầu n =1 thì sang nhị phân(theo chuỗi) là 00000001 là đúng rùi
    Nhưng khi mình chọn 1 để nhập lại n = 1 thì in ra là 0000000100000001
    nếu tiếp như vậy nữa thì 000000010000000100000001 .....
    mình không hiểu...
    giúp mình sữa với nhen....
    Mình cần gấp lắm...cố gắn giúp mình với nhen..
    Mình xin cảm ơn...
    Xin lỗi nhưng bạn nêu rõ đề bài đi !!! mình không hiểu yêu cầu đề bài của bạn là gì ....
    còn theo mình hàm nhịphan của bạn nên chuyển về cách sau

    * khi convert 1 số sang nhỉ phân ----> giờ biểu diễn 1 số nhị phân bằng 1 mảng a[8]
    vậy bây giờ thì đơn giản rồi một số của bạn sau khi qua hàm nhị phân nó sẽ trở thành 1 mảng a[8]
    các phép toán của số nhị phân giờ đơn giản hơn nhiều

    int nhịphan[8](int n)
    {int i=0,k;
    int a[8],b[8];
    while(n!=0&&n<256)
    {
    a[i]=n%2;
    i++;
    }
    // xong bước này bạn có 1 số nhị phân ngược ví du 6=110 thì giờ 6 = 011
    for(k=0;k<i;k++){b[7-k]=a[k];}
    for(k=i;k<=7;k++){b[k]=0;}
    // xong buoc nay ban da co 1 so nhi phan dang nhu sau vd 6=0000110
    printf("so nhị phân là\n");
    for (i=0;i<8;i++){printf("%d",b[i]);}
    return(b);
    }

  3. #3
    Ngày gia nhập
    11 2008
    Nơi ở
    Q.Ngãi
    Bài viết
    8

    Mình muốn chuyển từ số Thập phân-->nhị phân 8bit(dưới dạng chuổi có 8 kí tự)...để mình thực hiện cộng 2 số nguyên dưới dạng bít...
    Bạn giúp mình nhen...
    Mình cảm ơn...nhiều
    Có 1 chân lý tuyệt đối đó là mọi chân lý đều là tương đối

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

    Mình muốn chuyển từ số Thập phân-->nhị phân 8bit(dưới dạng chuổi có 8 kí tự)...để mình thực hiện cộng 2 số nguyên dưới dạng bít...
    Bạn giúp mình nhen...
    Bạn cố gắng search trên diễn đàn vì bài như này rất phổ biến. code trên của bạn hoàn toàn không ổn không thể sửa, nếu sửa chỉ có thể viết lại.

    Bạn chú ý tìm tài liệu củng cố thêm kiến thức về hàm, có nhiều cái thể hiện bạn chưa hiểu.

    Chúc bạn học tốt!

  5. #5
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    C Code:
    1.  t:clrscr();
    2.  st1="";//Thử đặt dòng lệnh này xem sao bạn
    3.  printf("\nNhap n : ");
    4.  scanf("%d",&n);
    5.  t=nhiphan(n);
    6.  ultoa(t,st,10);
    7.  i=strlen(st);
    8.  a=8-i;
    9.  for(j=1;j<=a;j++)
    10.  {
    11.    st2="0"; // Dòng lệnh này là dư thừa, tốn chi phí thời gian cho chương trình, chỉ cần một lần gán là đủ rồi bạn.
    12.    strcat(st1,st2); //Bạn chỉ nối thêm vào phía sau mà không khởi tạo
    13.  }
    14.  strcat(st1,st); //Bạn chỉ nối thêm vào phía sau mà không khởi tạo
    15.  printf("\nIN  CHUOI : %s  ",st1);
    16.  printf("\n chọn 1 de nhap lai : "); scanf("%d",&o);
    17.  if (o==1) goto t;

    Rất đơn giản là vì bạn chỉ copy chuỗi vào phía sau st1, mà mỗi lần nhập bạn lại không cho cái chuỗi st1 đó trở lại trạng thái xuất phát là rỗng. Cho nên khi bạn nhập lại số 1, nó lại tiếp tục thêm một chuỗi nhị phân của số 1 vào chuỗi st1.
    Đã được chỉnh sửa lần cuối bởi Forlorn_hope : 11-12-2008 lúc 12:19 PM.
    Không biết ghi gì luôn ...

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

  1. Lập trình C++ coi dùm minh bài code sai ở chỗ nào và sữa dùm mình với
    Gửi bởi hchuy94 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 02-09-2013, 10:16 AM
  2. Lập trình C Nhờ sửa dùm đoạn code chọn mệnh giá tiền
    Gửi bởi haidang12039 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 8
    Bài viết cuối: 29-07-2013, 08:05 PM
  3. các pro sửa dùm mình code này! cám ơn rất nhìu..
    Gửi bởi fulky trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 04-10-2012, 10:01 PM
  4. mình code mãi vẫn lỗi các bạn chi dùm mình với
    Gửi bởi thienbk89 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 20-07-2012, 05:47 PM
  5. Các bác xem dùm đoạn code sắp xếp!!!
    Gửi bởi zodjac1990 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 10
    Bài viết cuối: 30-11-2008, 10:40 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