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

Đề tài: Số nguyên lớn không tìm ra lỗi !!

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

    Question Số nguyên lớn không tìm ra lỗi !!

    Các bạn sửa dùm lỗi cho mình với ... Mình nghĩ miết mà không ra:

    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    #include <alloc.h>
    char *chuoi1,*chuoi2,*chuoi;
    int n,i;
    /*===============================*/
    char *nhapchuoi()
    {
      char tam[100],*p;
      printf("Nhap chuoi : ");
      gets(tam);
      if ((strlen(tam)>=30) && (strlen(tam)<=100))
          {
    	 p=(char *)malloc(sizeof(char)*strlen(tam));
    	 strcpy(p,tam);
    	 return p;
          }
      else
         return " ";
    
    
    }
    
    /*================================*/
    void chuanhoa (char s[100])
    {
    
      int l,j;
      l=strlen(s);
        for (i=0;i<l;i++)
          {
    	if (s[i]==' ' || s[i+1]==' ')
    	   {
    	    for (j=i; j<l; j++)
    		s[j]=s[j+1];
    		l--;
    		i=0;
    	    }
           }
    }
    /*================================*/
    
    void main()
    {
      int max1,du;
      clrscr();
      do
          {
           chuoi1=(char *)nhapchuoi();
           n=strlen(chuoi1);
          }
       while (n<=1);
       chuanhoa(chuoi1);
       printf("chuoi 1 : %s",chuoi1);
       do
          {
           chuoi2=(char *)nhapchuoi();
           n=strlen(chuoi2);
          }
       while (n<=1);
       chuanhoa(chuoi2);
       printf("chuoi 2 : %s",chuoi2);
       max1=strlen(chuoi1);
       if (max1<strlen(chuoi2))
           max1=strlen(chuoi2);
       du=0;
       for (i=0;i<max1;i++)
    	{
    	  chuoi[i]=((chuoi1[i]-48)+(chuoi2[i]-48)+du)%10+48;
    	  du=(chuoi1[i]-48)+(chuoi2[i]-48)%10;
    	  chuoi[i]=du+48;
    	}
       printf("chuoi  : %s",chuoi);
      getch();
    }
    Đã được chỉnh sửa lần cuối bởi VINCENT : 17-04-2008 lúc 05:10 PM.

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Các bạn sửa dùm lỗi cho mình với ... Mình nghĩ miết mà không ra:
    Tui write 1 small test, thì hàm chuẩn hóa không biết cho ra cái gì, đó là tui đã sữ lại len - 1, chứ không thì nó sẽ out-of-bound liền. Kết quả là nó không ra chính xác, mà tui cũng chẳng hiểu hàm đó để làm gì ? Tập debug cho quen đi cậu
    C Code:
    1. #include <cstdio>
    2. #include <cstring>
    3. #include <cstdlib>
    4.  
    5. char* nhap_chuoi( )
    6. {
    7.     char tam[ 20 ];
    8.     char* p;
    9.     printf( "Nhap chuoi : " );
    10.     gets( tam );
    11.     if( ( strlen( tam ) >= 3 ) && ( strlen( tam ) <= 20 ) )
    12.     {
    13.         p = ( char * )malloc( sizeof( char )*strlen( tam ) );
    14.         strcpy( p, tam );
    15.         return p;
    16.     }
    17.     else
    18.     {
    19.         return " ";
    20.     }
    21. }
    22.  
    23. void chuan_hoa( char str[ ] )
    24. {
    25.     int len,
    26.         i, j;
    27.     len = strlen( str );
    28.    
    29.     for( i = 0; i < len - 1; ++i )
    30.     {
    31.         if( str[ i ] == ' ' || str[ i + 1 ] == ' ' )
    32.         {
    33.             for( j = i; j < len - 1; ++j )
    34.             {
    35.                 str[ j ] = str[ j + 1 ];
    36.             }
    37.             len--;
    38.             i = 0;
    39.         }
    40.    }
    41. }
    42.  
    43.  
    44. int main( )
    45. {
    46.     char* so_thu_1 = ( char* )( nhap_chuoi( ) );
    47.     chuan_hoa( so_thu_1 );
    48.     printf( "%s \n\n", so_thu_1 );
    49.     printf( "%d", strlen( so_thu_1 ) );
    50.     return 0;
    51. }

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

    Trích dẫn Nguyên bản được gửi bởi rox_rook Xem bài viết
    Tui write 1 small test, thì hàm chuẩn hóa không biết cho ra cái gì, đó là tui đã sữ lại len - 1, chứ không thì nó sẽ out-of-bound liền. Kết quả là nó không ra chính xác, mà tui cũng chẳng hiểu hàm đó để làm gì ? Tập debug cho quen đi cậu
    C Code:
    1. #include <cstdio>
    2. #include <cstring>
    3. #include <cstdlib>
    4.  
    5. char* nhap_chuoi( )
    6. {
    7.     char tam[ 20 ];
    8.     char* p;
    9.     printf( "Nhap chuoi : " );
    10.     gets( tam );
    11.     if( ( strlen( tam ) >= 3 ) && ( strlen( tam ) <= 20 ) )
    12.     {
    13.         p = ( char * )malloc( sizeof( char )*strlen( tam ) );
    14.         strcpy( p, tam );
    15.         return p;
    16.     }
    17.     else
    18.     {
    19.         return " ";
    20.     }
    21. }
    22.  
    23. void chuan_hoa( char str[ ] )
    24. {
    25.     int len,
    26.         i, j;
    27.     len = strlen( str );
    28.    
    29.     for( i = 0; i < len - 1; ++i )
    30.     {
    31.         if( str[ i ] == ' ' || str[ i + 1 ] == ' ' )
    32.         {
    33.             for( j = i; j < len - 1; ++j )
    34.             {
    35.                 str[ j ] = str[ j + 1 ];
    36.             }
    37.             len--;
    38.             i = 0;
    39.         }
    40.    }
    41. }
    42.  
    43.  
    44. int main( )
    45. {
    46.     char* so_thu_1 = ( char* )( nhap_chuoi( ) );
    47.     chuan_hoa( so_thu_1 );
    48.     printf( "%s \n\n", so_thu_1 );
    49.     printf( "%d", strlen( so_thu_1 ) );
    50.     return 0;
    51. }
    Thanks bạn !!! Đề toán cho ra là nhập 2 số nguyên lớn từ 30 đến 100 chữ số.. Rồi tính tổng của nó ... Tớ làm xong hết rồi chỉ còn vướng 1 chỗ đó là chuyển từ số sang chuỗi chưa chuyển được..

  4. #4
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Thanks bạn !!! Đề toán cho ra là nhập 2 số nguyên lớn từ 30 đến 100 chữ số.. Rồi tính tổng của nó ... Tớ làm xong hết rồi chỉ còn vướng 1 chỗ đó là chuyển từ số sang chuỗi chưa chuyển được..
    Chuyển từ số sang chuỗi ? Tui chưa hiểu rõ yêu cầu lắm ( 1 con số từ mãng hay 1 con số riêng biệt ), cậu cho tui 1 ví dụ xem ?

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

    Có phải yêu cầu đề bài là nhập 2 bigint( số lớn), tính tổng rồi xuất ra kết quả.
    - bingint là số nguyên vượt quá giới hạn lưu trữ của các kiểu dữ liệu mà ngôn ngữ cung cấp vd: 123456789123456789123456789123456789123456789
    - Như vậy muôn nhập 2 bigint mình phải nhập vào 2 chuỗi những chữ số nguyên, từ mỗi chuỗi khởi tạo nên một bigint rồi tính tổng của 2 bigint này = một bigint mới. Việc nhập và tạo ra 2 bigint này mình nghĩ phải dùng DSLK
    - Để xuất bigint tổng ra thì lại phải chuyển đổi bigint đó thành dạng chuỗi những chữ số nguyên thì mới xuât được.
    Mình hiểu yêu cầu của đê bài ban đưa như vậy? Không biết có đúng không?
    Tấn Tài, Tấn Lộc, Tấn Bình An

  6. #6
    Ngày gia nhập
    03 2008
    Bài viết
    0

    Mặc định Số nguyên lớn không tìm ra lỗi !!

    du=0;
    for (i=0;i<max1;i++)
    {
    chuoi[i]=((chuoi1[i]-48)+(chuoi2[i]-48)+du)%10+48;
    du=(chuoi1[i]-48)+(chuoi2[i]-48)%10;
    chuoi[i]=du+48;
    }
    printf("chuoi : %s",chuoi);
    Tớ làm tới đây .. thì nó không in ra thành 1 chuỗi.. Hình như là chưa chuyển số sang chuỗi ...Mình cộng 2 chuỗi mà...Nó in ra màn hình là kí tự null

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

  1. Bài tập C giải thuật nhập vào số nguyên n in ra n số nguyên tố đầu tiên?
    Gửi bởi LTC trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 48
    Bài viết cuối: 25-04-2013, 07:40 PM
  2. Viết chương trình nhập số nguyên dương n, liệt kê n số nguyên tố đầu tiên.
    Gửi bởi maiit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 19-06-2011, 01:05 PM
  3. Game Viết chương trình nhập số nguyên dương n, liệt kê n số nguyên tố đầu tiên trên C#?
    Gửi bởi maiit trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 18
    Bài viết cuối: 08-06-2011, 11:12 PM
  4. Bài tập C++ chương trình đổi 1 số nguyên trong hệ thập phân sang hệ fibo và cộng 2 số nguyên được
    Gửi bởi nghiapro512 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 23-01-2011, 02:14 PM
  5. Lập trình C xin code cài đặt thuật toán sàng nguyên tố để liệt kê các số nguyên tố 2->480000
    Gửi bởi ngocdung_088 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 23
    Bài viết cuối: 06-12-2010, 11:53 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