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

Đề tài: lỗi trong định nghĩa hàm chồng toán tử, bài toán đa thức

  1. #1
    Ngày gia nhập
    12 2010
    Bài viết
    35

    Mặc định lỗi trong định nghĩa hàm chồng toán tử, bài toán đa thức

    C++ Code:
    1. #include<stdio.h>
    2. #include<iostream>
    3. #include<conio.h>
    4. #include<math.h>
    5. using namespace std;
    6. //==================================//
    7. typedef struct dathuc
    8. {
    9.     double a[20];
    10.     int n;
    11. }DT;
    12. ostream& operator<<(ostream &os,DT d);
    13. istream& operator>>(istream &is,DT &d);
    14. DT operator - (const DT &d);
    15. DT operator + (DT d1, DT d2);
    16. DT operator - (DT d1, DT d2);
    17. DT operator * (DT d1,DT d2);
    18. double operator ^ (DT d1, double x);
    19. //======================================//
    20. ostream& operator << (ostream &os,DT d)
    21. {
    22.     cout<<"Cac he so cua da thuc tu a0: \n";
    23.     for(int i=0;i<=d.n;i++)
    24.         os<<d.a[i]<<" ";
    25.     return os;
    26. }
    27. istream& operator >> (istream &is,DT &d)
    28. {
    29.     cout<<"nhap bac cua da thuc: ";
    30.     cin>>d.n;
    31.     cout<<"nhap cac he so cua da thuc bat dau tu a0: \n";
    32.     for(int i=0;i<=d.n;i++)
    33.     {
    34.         cout<<"a["<<i<<"] = ";
    35.         is>>d.a[i];
    36.         cout<<"\n";                            
    37.     }
    38.     return is;
    39. }
    40. DT operator - (const DT &d)         //doi dau cac he so
    41. {
    42.     DT p;
    43.         p.n=d.n;
    44.  
    45.     for(int i=0;i<=d.n;i++)
    46.         p.a[i]=-d.a[i];
    47.     return p;
    48. }
    49. DT operator + (DT d1, DT d2)        //cong 2 da thuc
    50. {
    51.     DT p;
    52.     int k,i;
    53.     k=d1.n>d2.n?d1.n:d2.n;          //k bac cua da thuc lon nhat
    54.     for(i=0;i<=k;++i)
    55.     {
    56.         if(i<=d1.n && i<=d2.n)
    57.             p.a[i]=d1.a[i]+d2.a[i];
    58.         else if(i<=d1.n)
    59.             p.a[i]=d1.a[i];
    60.         else
    61.             p.a[i]=d2.a[i];
    62.     }
    63.     i=k;
    64.     while(i>0 && p.a[i]==0.0)
    65.         --i;
    66.     p.n=i;
    67.     return p;
    68. }
    69. DT operator - (DT d1, DT d2)        //tru hai da thuc
    70. {
    71.     return (d1+ (-d2));
    72. }
    73. DT operator * (DT d1,DT d2)         //nhan hai da thuc
    74. {
    75.     DT p;
    76.     int k,i,j;
    77.     k=p.n=d1.n+d2.n;
    78.     for(i=0;i<=k;i++)
    79.         p.a[i]=0;
    80.     for(i=0;i<=d1.n;i++)
    81.         for(j=0;j<=d2.n;j++)
    82.             p.a[i+j]+=d1.a[i]*d2.a[j];
    83.     return p;
    84. }
    85. double operator ^ (DT d,double x)
    86. {
    87.     double s=0.0,t=1.0;
    88.     for(int i=0;i<=d.n;i++)
    89.     {
    90.         s=s+d.a[i]*t;
    91.         t=t*x;
    92.     }
    93.     return s;
    94. }
    95. void main()
    96. {
    97.     DT p,q,r,s,f;
    98.     double x,g;
    99.     cout<<"\nnhap da thuc P: ";
    100.     cin>>p;
    101.     cout<<"\nnhap da thuc Q: ";
    102.     cin>>q;
    103.     cout<<"\nnhap da thuc R: ";
    104.     cin>>r;
    105.     cout<<"\nnhap da thuc S: ";
    106.     cin>>s;
    107.     cout<<"nhap so thuc x: ";
    108.     cin>>x;
    109.     f=-(p+q) * (r-s);
    110.     g = f ^ x;
    111.     cout<<"\nDa thuc F: ";
    112.     cout<<f;
    113.     cout<<"\nf("<<x<<")= "<<g;
    114.     getch();
    115. }
    116.  
    117. chương trình bị lỗi khi chạy không biết sai chỗ nào mọi người giúp em ạ.cảm ơn mọi người
    Đã được chỉnh sửa lần cuối bởi detective009 : 13-09-2011 lúc 12:23 AM.

  2. #2
    Ngày gia nhập
    01 2010
    Nơi ở
    Hà Nội
    Bài viết
    128

    Bạn nên chỉ ra lỗi rõ ràng của bạn
    Cụ thể là runtime hay buildtime Cò hình kèm thêm thì rất tốt vì mọi người rất là lười đọc code để tìm
    Bạn có công cụ là IDE tìm lỗi ,tại sao lại ko dùng nhỉ ?

  3. #3
    Ngày gia nhập
    12 2010
    Bài viết
    35

    Trích dẫn Nguyên bản được gửi bởi kids301090 Xem bài viết
    Bạn nên chỉ ra lỗi rõ ràng của bạn
    Cụ thể là runtime hay buildtime Cò hình kèm thêm thì rất tốt vì mọi người rất là lười đọc code để tìm
    Bạn có công cụ là IDE tìm lỗi ,tại sao lại ko dùng nhỉ ?
    mình biên dịch thì nó không báo lỗi còn khi chạy ct thì nó sai.bạn vui lòng chạy thử ct đi.

  4. #4
    Ngày gia nhập
    07 2011
    Bài viết
    160

    Trích dẫn Nguyên bản được gửi bởi detective009 Xem bài viết
    mình biên dịch thì nó không báo lỗi còn khi chạy ct thì nó sai.bạn vui lòng chạy thử ct đi.
    Ngó phát thấy ngay cái này sai này:
    istream& operator>>(istream &is,DT d);
    Phải là DT& d, nếu không thì nó nhập vào bản copy chứ không thay đổi dữ liệu gốc
    Bạn sửa đi rồi nếu vẫn còn sai thì mình sẽ xem tiếp

    Với cả vì DT của bạn khá lớn, bạn nên tránh truyền vào hàm theo kiểu trị (by value) mà nên dùng tham chiếu (const hoặc non-const : DT const & hoặc DT&, tùy xem hàm có thay đổi biến đó không)

  5. #5
    Ngày gia nhập
    12 2010
    Bài viết
    35

    Trích dẫn Nguyên bản được gửi bởi fbchicken Xem bài viết
    Ngó phát thấy ngay cái này sai này:
    istream& operator>>(istream &is,DT d);
    Phải là DT& d, nếu không thì nó nhập vào bản copy chứ không thay đổi dữ liệu gốc
    Bạn sửa đi rồi nếu vẫn còn sai thì mình sẽ xem tiếp

    Với cả vì DT của bạn khá lớn, bạn nên tránh truyền vào hàm theo kiểu trị (by value) mà nên dùng tham chiếu (const hoặc non-const : DT const & hoặc DT&, tùy xem hàm có thay đổi biến đó không)
    mình sửa rồi và đã chạy được có điều kết quả ra sai.vẫn đang xem sai chỗ nào
    Ý bạn nói là nếu kết quả sau khi ra khỏi hàm làm thay đổi so với ban đầu(lúc đưa vào hàm) thì dùng tham chiếu phải không.gặp trường hợp này mình hay thiếu sót quá
    Cảm ơn bạn nhiều nha.

  6. #6
    Ngày gia nhập
    07 2011
    Bài viết
    160

    Mặc định lỗi trong định nghĩa hàm chồng toán tử, bài toán đa thức

    Code nhiều quá, lười đọc kinh dị
    Phát hiện thêm 2 lỗi nữa:
    - trong operator- 1 đối số chưa thấy gán p.n
    - trong operator^ chỉ for đến < n mà các chỗ khác là <= n

    Phù, tạm thế đã, bạn check tiếp đi, vẫn chưa hết lỗi thì mình sẽ đọc kỹ hẳn luôn =)) Mà bạn cũng tự soát lỗi đi chứ nhỉ, toàn những lỗi do sơ sót thôi mà

  7. #7
    Ngày gia nhập
    09 2011
    Bài viết
    0

    lót gạch hóng .. nếu fix lỗi xong text rùi post lại để mọi ng tham khảo nha bác

  8. #8
    Ngày gia nhập
    12 2010
    Bài viết
    35

    Trích dẫn Nguyên bản được gửi bởi fbchicken Xem bài viết
    Code nhiều quá, lười đọc kinh dị
    Phát hiện thêm 2 lỗi nữa:
    - trong operator- 1 đối số chưa thấy gán p.n
    - trong operator^ chỉ for đến < n mà các chỗ khác là <= n

    Phù, tạm thế đã, bạn check tiếp đi, vẫn chưa hết lỗi thì mình sẽ đọc kỹ hẳn luôn =)) Mà bạn cũng tự soát lỗi đi chứ nhỉ, toàn những lỗi do sơ sót thôi mà
    đúng là mình sai mấy lỗi này nên chạy không ra kq.mình sữa lại rồi,cảm ơn bạn nhiều nha

  9. #9
    Ngày gia nhập
    12 2010
    Bài viết
    35

    Trích dẫn Nguyên bản được gửi bởi nhokpluz Xem bài viết
    lót gạch hóng .. nếu fix lỗi xong text rùi post lại để mọi ng tham khảo nha bác
    mình update lại code trên rồi đó bạn,bạn xem có thiếu gì nữa không

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

  1. Xu thế thay đổi nghành công nghệ thông tin trong nước
    Gửi bởi anhduongtalents trong diễn đàn Kinh nghiệm CNTT
    Trả lời: 1
    Bài viết cuối: 11-06-2012, 09:06 AM
  2. Đề xuất Đề nghị xóa bài viết "Suy nghĩ của 1 lập trình viên" trong mục KN
    Gửi bởi Trinh_lam93 trong diễn đàn Ý kiến, đề xuất và khiếu nại
    Trả lời: 9
    Bài viết cuối: 28-01-2012, 12:23 AM
  3. Công nghệ mới giúp ứng dụng tinh nghệ trong ngăn ngừa và điều trị ung thư
    Gửi bởi vesim trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 31-08-2011, 02:39 PM
  4. Tuổi nghề của người trong ngành công nghệ phần mềm???
    Gửi bởi vuduykhanh trong diễn đàn Kinh nghiệm CNTT
    Trả lời: 19
    Bài viết cuối: 11-03-2010, 04:58 PM
  5. Các nghề trong lĩnh vực Công nghệ Thông tin.
    Gửi bởi tinlouis trong diễn đàn Tuyển dụng - Việc làm CNTT
    Trả lời: 3
    Bài viết cuối: 25-05-2009, 02:22 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