Trang 1 trên tổng số 4 123... Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 36 kết quả

Đề tài: Tính tổng hệ số hai đa thức, làm thế nào tối ưu code của em?

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

    Mặc định Tính tổng hệ số hai đa thức, làm thế nào tối ưu code của em?

    Code của em đúng rồi nhưng em muốn hỏi :
    Có cách nào ngắn hơn mà không phải chia hai trường hợp (n<m) va (n>=m) không chỉ em với .Cảm ơn nhiều !!
    PHP Code:
     #include <stdio.h>
    #include <conio.h>

    void main()
    int a[100],b[100],n,i,j,x,m;

      
    clrscr();
      
    printf("Nhap so bac da thuc A: ");
      
    scanf("%d",&n);
      for(
    i=0;i<=n;i++)
      { 
    printf("Nhap a[%d]: ",i);
        
    scanf("%d",&a[i]);
      }
      
    printf("\nCac he so da thuc A la:");
        for(
    i=n;i>=0;i--)
        {
        
    printf("%5d",a[i]);
        }
        
    printf("\nNhap so bac da thuc B: ");
      
    scanf("%d",&m);
      for(
    j=0;j<=m;j++)
        { 
    printf("Nhap b[%d]: ",j);
        
    scanf("%d",&b[j]);
      }
        
    printf("\nCac he so da thuc B la:");
        for(
    j=m;j>=0;j--)
        {
        
    printf("%5d",b[j]);
        }

      
    // Tinh tong cac he so hai da thuc
    if(n<m)
      {
      for(
    j=0;j<=m;j++)
        for(
    i=0;i<=n;i++)
         if(
    i==j)
         {
          
    b[j]=b[j]+a[i];
         }
         
    printf("\nCac he so da thuc A+B la:");
        for(
    j=m;j>=0;j--)
        {
        
    printf("%5d",b[j]);
        }
      }
    else if(
    n>=m)
      {
      for(
    i=0;i<=n;i++)
        for(
    j=0;j<=n;j++)
         if(
    j==i)
         {
          
    a[i]=a[i]+b[j];
         }
         
    printf("\nCac he so da thuc A+B la:");
        for(
    i=n;i>=0;i--)
        {
        
    printf("%5d",a[i]);
        }
      }
      
    getch();


  2. #2
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    667

    Bạn bỏ if(m>=n) đi, vì trong đk là if(n<m) thì rõ ràng ngược lại (else) là m>=n rồi mà.

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

    Viết code khó nhìn và còn yếu wá, ví dụ như đoạn này

    PHP Code:
      for(j=0;j<=m;j++)
        for(
    i=0;i<=n;i++)
         if(
    i==j)
         {
          
    b[j]=b[j]+a[i];
         } 
    dùng 2 vòng lặp 1 cách rất mù quáng.

    Còn 2 đoạn code (n<m) va (n>=m) cũng giống nhau đến 99% rồi, tất nhiên là có thể gộp lại dc.

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

    code của mình đúng 100% mà sao lại bảo là sai .Kết quả chạy ngon mà

    Mà hai vòng lặp mình dùng chuẩn thế còn gì

    Ý mình muốn hỏi xem bài này còn cách nào ngắn hơn,mà k phải chia trường hợp k
    Đã được chỉnh sửa lần cuối bởi langman : 05-04-2009 lúc 03:54 PM.

  5. #5
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    667

    @Rong2sao: Bài bạn làm đúng rồi. nhưng tính các hệ số ở đa thức tổng chỉ cần 1 vòng lặp thôi. và nên lấy 1 kích thước mảng bé hơn làm cận. Đây là code khá chuẩn thay cả 2 điều kiện của bạn, nhưng vẫn phải chia trường hợp
    Code:
    if(n>m) k=m;
    eles {k=n; n=m;}
        for(i=0;i<=k;i++)
         {
          b[i]=b[i]+a[i];
         }
         printf("\nCac he so da thuc A+B la:");
        for(j=n;j>=0;j--)
        {
        printf("%5d",b[j]);
        }
    @clementboy03 && Lugiavn: hai bạn giúp gì thì giúp, đừng spam.
    Đã được chỉnh sửa lần cuối bởi trungkien45 : 05-04-2009 lúc 04:16 PM.

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

    Mặc định Tính tổng hệ số hai đa thức, làm thế nào tối ưu code của em?

    Thanks chỉ cần 1 vòng lặp cũng đúng à ,thế mà mình tưởng cần 2 vòng

    À quên cái code mình post nhầm một chữ ,vậy mà nó vẫn chạy haaa lạ thật đấy
    Đã được chỉnh sửa lần cuối bởi langman : 05-04-2009 lúc 03:54 PM.

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

    đây là điều rồng 2 sao muốn hả :

    đã mix lại code và phương pháp + cách trình bày code .... đọc kĩ mà tham khảo , ko hiểu chỗ nào thì hỏi


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

    void nhapdt(int *a,int &n,char *ten)
        {
            
    int i;
            
    printf("Nhap so bac da thuc %s: ",ten);
            
    scanf("%d",&n);

            for(
    i=0;i<=n;i++)
                
    printf("Nhap %s[%d]: ",ten,i),scanf("%d",&a[i]);

            
    printf("\nCac he so da thuc %s la:",ten);
            for(
    i=n;i>=0;i--)
                
    printf("%5d",a[i]);

            
    printf("\n");
        }
    void main(void)
        {
            
    int a[100],b[100],n,i,m;
            
    clrscr();

            
    //nhap
            
    nhapdt(a,n,"A");
            
    nhapdt(b,m,"B");

            
    // Tinh tong cac he so hai da thuc
            
    int temp[100];
            for (
    i=0;i<= ((n<m)?n:m) ;i++)
                
    temp[i]= ((i<=n)?a[i]:0) + ((i<=m)?b[i]:0);

            
    printf("\nCac he so da thuc A+B la:");
            for(
    i= ((n>m)?n:m);i>=0;i--)
                    
    printf("%5d",temp[i]);

            
    getch();
        } 
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

  8. #8
    Ngày gia nhập
    06 2008
    Bài viết
    25

    code của langman vẫn có 1 số điểm mình nghĩ là yếu :
    + dùng &
    + cố gắng làm ngắn code bằng 3 cái ? :
    + cố gắng làm ngắn code bằng , để dồn 2 lệnh làm 1
    + for (i=0;i<= ((n<m)?n:m) ;i++) vòng lặp này có lẽ sai

    Trích dẫn Nguyên bản được gửi bởi trungkien45 Xem bài viết
    @Rong2sao: Bài bạn làm đúng rồi. nhưng tính các hệ số ở đa thức tổng chỉ cần 1 vòng lặp thôi. và nên lấy 1 kích thước mảng bé hơn làm cận. Đây là code khá chuẩn thay cả 2 điều kiện của bạn, nhưng vẫn phải chia trường hợp
    Code:
    if(n>m) k=m;
    eles {k=n; n=m;}
        for(i=0;i<=k;i++)
         {
          b[i]=b[i]+a[i];
         }
         printf("\nCac he so da thuc A+B la:");
        for(j=n;j>=0;j--)
        {
        printf("%5d",b[j]);
        }
    @clementboy03 && Lugiavn: hai bạn giúp gì thì giúp, đừng spam.
    Ở đây nhiều bạn có cái định nghĩa sai lầm về spam wá, rồi lại còn thích đem đi gán cho người khác.
    Mà code này nhìn vào hình như là có lỗi rồi

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

    Trích dẫn Nguyên bản được gửi bởi Lugiavn Xem bài viết
    code của langman vẫn có 1 số điểm mình nghĩ là yếu :
    + dùng &
    + cố gắng làm ngắn code bằng 3 cái ? :
    + cố gắng làm ngắn code bằng , để dồn 2 lệnh làm 1
    + for (i=0;i<= ((n<m)?n:m) ;i++) vòng lặp này có lẽ sai



    Ở đây nhiều bạn có cái định nghĩa sai lầm về spam wá, rồi lại còn thích đem đi gán cho người khác.
    Mà code này nhìn vào hình như là có lỗi rồi
    1. dùng & (tham chiếu) thì sai ở chỗ nào ?
    2. dùng ? là cố gắng và điểm yếu à ?
    3. dùng , là điểm yếu à ?
    Đã được chỉnh sửa lần cuối bởi langman : 05-04-2009 lúc 05:58 PM.
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

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

    Ec, nhiều lúc cố gắng làm ngắn gọn wá sẽ làm code khó hiểu. Với lại điểm yếu ở đây đã nói là theo mình nghĩ thôi mà.
    + Dùng & : thường nếu đọc code thì bác sẽ thấy là & rất ít dc dùng. Ngoại trừ 1 số trường hợp như trong operator [], copy constructor, hàm swap... (tất nhiên là ko tính code của các bạn mới học, tập xài &)
    + Tương tự ?: cũng ít xài, nếu có thì thường là chỉ trong 1 lệnh đơn giản như là : a = x ? y : z thôi. Đằng này bác nhét 2 cái vào 1 lệnh, nhét vào vòng for --> mình nhìn ko quen, nên cho là ko tốt.
    + Tương tự cho , cũng ít xài, mình nhìn cũng ko quen nốt.
    + Vòng lặp : cái này đoán là sai thôi, chưa chạy thử (tại ko có borland). Giờ chạy thử thì thấy quả lả sai nè.
    Nói chung là kinh nghiệm viết code, đọc code thì mình cảm thấy như thế. Nhưng có thể ko care mấy cái đó cũng dc.

    Còn code cho người khác thì mình lười viết lắm, nếu viết thì chắc cũng gần gần giống code của bác, chỉ có điều thay ?: thành if else, thay , thành ;

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

  1. Lập trình C++ Xin Code Bài Toán Xếp Lịch Thể Thao
    Gửi bởi devilkiss12 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 03-12-2013, 01:06 AM
  2. Bài tập C Thắc mắc về đoạn code
    Gửi bởi phantom0610 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 03-01-2013, 08:18 AM
  3. Algorithm Chèn C++ code vào C# code như thế nào?
    Gửi bởi datinh_o0o7 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 14-03-2012, 11:46 AM
  4. Sau khi inject code làm thế nào để chèn code.
    Gửi bởi theboy909 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 16-10-2011, 12:34 PM
  5. Làm thế nào để dich một code có sẵn mà không cần code lại?
    Gửi bởi thuhuong888 trong diễn đàn Thắc mắc chung
    Trả lời: 1
    Bài viết cuối: 11-04-2009, 11:39 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