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

Đề tài: Lỗi không đọc được biến. Cần chỉnh lại!

  1. #1
    Ngày gia nhập
    09 2011
    Nơi ở
    Khi ta ở chỉ là nơi đất ở, khi ta đi đất bỗng hóa tâm hồn
    Bài viết
    55

    Mặc định Lỗi không đọc được biến. Cần chỉnh lại!

    Đoạn code sau bị lỗi không đọc được biến, dù đã đặt ở public. Mọi người giải thích cho mình sao lại thế! Cảm ơn nhiều:
    C++ Code:
    1. #include<iostream.h>
    2. typedef struct dathuc
    3. {
    4.     int bac;
    5.     float *a;
    6. };
    7.         dathuc dc;
    8.         dathuc da,db;
    9.        
    10. class HS
    11. {
    12.     private:
    13.    
    14.     public:
    15.            
    16.         void nhapham(dathuc dt);
    17.         void congdathuc(dathuc,dathuc);
    18. };
    19.  
    20. int main()
    21. {
    22.     HS ob;
    23.  
    24.     ob.nhapham(da);
    25.     ob.nhapham(db);
    26.     ob.congdathuc(da,db);
    27.     return 0;
    28. }
    29. void HS::nhapham(dathuc dt)
    30. {
    31.     do{
    32.         cout<<"\nNhap bac cua da thuc:";
    33.         cin>>dt.bac;
    34.         if(dt.bac==0) cout<<"yeu cau nhap bac khac 0!\n";
    35.     }while(dt.bac==0);
    36.    
    37.     dt.a = new float[dt.bac];
    38.     cout<<"\nNhap cac he so cua da thuc:";
    39.     for(int i=0;i<dt.bac;i++)
    40.         {
    41.             cout<<"a["<<i+1<<"] = ";
    42.             cin>>*(dt.a + i);
    43.         }
    44.     cout<<"Ban da nhap da thuc:\nf(x) = ";
    45.     for(int i=0;i<dt.bac-1;i++)
    46.         {
    47.             if(*(dt.a+i)!=1)
    48.             {
    49.                 if(*(dt.a+i)==0) cout<<""; else
    50.                     {                      
    51.                         cout<<*(dt.a+i)<<"x^"<<i+1<<" + ";
    52.                     }              
    53.             }else cout<<"x^"<<i+1<<" + ";
    54.         }
    55.     if(*(dt.a+dt.bac-1)!=1)
    56.         {
    57.         if(*(dt.a+dt.bac-1)==0) cout<<"";
    58.         else
    59.             {
    60.                 cout<<*(dt.a +dt.bac-1)<<"x^"<<dt.bac;
    61.             }
    62.         } else cout<<"x^"<<dt.bac;
    63.         int check = 0;
    64.         for(int i=0;i<dt.bac;i++)
    65.             if (*(dt.a+i)!=0)
    66.                 {
    67.                     check=1;               
    68.                     break;
    69.                 }
    70.             if(check==0) cout<<"0";
    71.            
    72. }
    73.  
    74. void HS::congdathuc(dathuc da,dathuc db)
    75. {
    76.  
    77.     cout<<"\nKet qua:\n";
    78.     if(da.bac>db.bac)
    79.         {
    80.             dc.a = new float[da.bac];
    81.             for(int i=0;i<db.bac;i++)   *(dc.a+i) = *(da.a) + *(db.a);
    82.                 for(int j=db.bac-1;j<da.bac;j++)   *(dc.a+j) = *(da.a+j);
    83.                 for(int i=0;i<da.bac;i++) cout<<*(dc.a +i)<<"x^"<<i+1<<" + ";  
    84.                
    85.         } else
    86.             {
    87.                 dc.a = new float[db.bac];
    88.                 for(int i=0;i<da.bac;i++) *(dc.a+i) = *(da.a) + *(db.a);
    89.                     for(int j=da.bac-1;j<db.bac;j++)    *(dc.a+j) = *(db.a+j);
    90.                     for(int i=0;i<db.bac;i++) cout<<*(dc.a +i)<<"x^"<<i+1<<" + ";
    91.             }
    92. }
    Cái thuở còn đánh con bé hàng xóm chỉ vì nó không xách cặp hộ đi học. Cái thuở thèm làm người lớn, để bố mẹ khỏi đánh đòn đau mỗi khi mắc lỗi, để được “con nít” gọi mình là người lớn. Cái thuở con nít. Cái thuở ấy xa thật xa. Cô bé hàng xóm đi lấy chồng. Tôi không còn con nít. Và đôi lúc cái thằng người lớn như đã ước mơ một thời, giờ…Vâng…Rất lạ..Có khi nó muốn làm con nít!

  2. #2
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    768

    - Thứ nhất là báo lỗi ở typedef struct ......... vì dùng mà ko đặt cho nó một cái tên mới
    - Thứ 2: da với db trong hàm main là cái gì ? nó báo lỗi là chưa khai báo nó mà đã dùng

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

    Bản thử sửa lại hàm nhập
    C++ Code:
    1. void nhapham(dathuc dt);
    Sử dụng tham chiếu hoặc con trỏ
    C++ Code:
    1. void nhapham(dathuc &dt);
    C++ Code:
    1. void nhapham(dathuc* dt);
    Mua hosting tăng Website hoặc Tên miền - Tuyển cộng tác viên: % hoa hồng từ 5%-10%
    -------------------------------------------------------
    Hotline: 0944397399 (Mr.Sơn) - Website: thienma.net
    Yahoo: thienma_sale - thienma.sale

  4. #4
    Ngày gia nhập
    09 2011
    Nơi ở
    Khi ta ở chỉ là nơi đất ở, khi ta đi đất bỗng hóa tâm hồn
    Bài viết
    55

    Mình dùng con trỏ chưa được quen tay lắm. Code chạy được nhưng lỗi runtime:
    Nhap bac cua da thuc:2

    Nhap cac he so cua da thuc:a[1] = 1
    a[2] = 2
    Ban da nhap da thuc:
    f(x) = x^1 + 2x^2
    Nhap bac cua da thuc:3

    Nhap cac he so cua da thuc:a[1] = 1
    a[2] = 2
    a[3] = 3
    Ban da nhap da thuc:
    f(x) = x^1 + 2x^2 + 3x^3
    Ket qua:

    This application has requested the Runtime to terminate it in an unusual way.
    Please contact the application's support team for more information.
    Press any key to continue . . .

    C++ Code:
    1. #include<iostream.h>
    2. typedef struct dathuc
    3. {
    4.     int bac;
    5.     float *a;
    6. };
    7. class HS
    8. {
    9.     private:
    10.    
    11.     public:
    12.         void nhapham(dathuc dt);
    13.         void congdathuc(dathuc da,dathuc db);
    14. };
    15.  
    16. int main()
    17. {
    18.     HS ob;
    19.     dathuc da,db;
    20.     ob.nhapham(da);
    21.     ob.nhapham(db);
    22.     ob.congdathuc(da,db);
    23.     return 0;
    24. }
    25. void HS::nhapham(dathuc dt)
    26. {
    27.     do{
    28.         cout<<"\nNhap bac cua da thuc:"; cin>>dt.bac;
    29.         if(dt.bac==0) cout<<"yeu cau nhap bac khac 0!\n";
    30.     }while(dt.bac==0);
    31.     dt.a = new float[dt.bac];
    32.     cout<<"\nNhap cac he so cua da thuc:";
    33.     for(int i=0;i<dt.bac;i++)
    34.         {
    35.             cout<<"a["<<i+1<<"] = ";
    36.             cin>>*(dt.a + i);
    37.         }
    38.     cout<<"Ban da nhap da thuc:\nf(x) = ";
    39.     for(int i=0;i<dt.bac-1;i++)
    40.         {
    41.             if(*(dt.a+i)!=1)
    42.             {
    43.                 if(*(dt.a+i)==0) cout<<""; else
    44.                     {                      
    45.                         cout<<*(dt.a+i)<<"x^"<<i+1<<" + ";
    46.                     }              
    47.             }else cout<<"x^"<<i+1<<" + ";
    48.         }
    49.     if(*(dt.a+dt.bac-1)!=1)
    50.         {
    51.         if(*(dt.a+dt.bac-1)==0) cout<<"";
    52.         else
    53.             {
    54.                 cout<<*(dt.a +dt.bac-1)<<"x^"<<dt.bac;
    55.             }
    56.         } else cout<<"x^"<<dt.bac;
    57.         int check = 0;
    58.         for(int i=0;i<dt.bac;i++)
    59.             if (*(dt.a+i)!=0)
    60.                 {
    61.                     check=1;               
    62.                     break;
    63.                 }
    64.             if(check==0) cout<<"0";
    65.            
    66. }
    67.  
    68. void HS::congdathuc(dathuc da,dathuc db)
    69. {
    70.     dathuc dc;
    71.     cout<<"\nKet qua:\n";
    72.     if(da.bac>db.bac)
    73.         {
    74.             dc.a = new float[da.bac];
    75.             for(int i=0;i<db.bac;i++)   *(dc.a+i) = *(da.a) + *(db.a);
    76.                 for(int j=db.bac-1;j<da.bac;j++)   *(dc.a+j) = *(da.a+j);
    77.                 for(int i=0;i<da.bac;i++) cout<<*(dc.a +i)<<"x^"<<i+1<<" + ";  
    78.                
    79.         } else
    80.             {
    81.                 dc.a = new float[db.bac];
    82.                 for(int i=0;i<da.bac;i++) *(dc.a+i) = *(da.a) + *(db.a);
    83.                     for(int j=da.bac-1;j<db.bac;j++)    *(dc.a+j) = *(db.a+j);
    84.                     for(int i=0;i<db.bac;i++) cout<<*(dc.a +i)<<"x^"<<i+1<<" + ";
    85.             }
    86. }
    Cái thuở còn đánh con bé hàng xóm chỉ vì nó không xách cặp hộ đi học. Cái thuở thèm làm người lớn, để bố mẹ khỏi đánh đòn đau mỗi khi mắc lỗi, để được “con nít” gọi mình là người lớn. Cái thuở con nít. Cái thuở ấy xa thật xa. Cô bé hàng xóm đi lấy chồng. Tôi không còn con nít. Và đôi lúc cái thằng người lớn như đã ước mơ một thời, giờ…Vâng…Rất lạ..Có khi nó muốn làm con nít!

  5. #5
    Ngày gia nhập
    04 2008
    Nơi ở
    Bốn bề là nhà
    Bài viết
    697

    Bạn nên xem lại tư duy hướng đối tượng cho bài này.
    Class của bạn nên có member kiểu đa thức.
    Cái lỗi kia thì tôi chưa biết tại sao.

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

    Mặc định Lỗi không đọc được biến. Cần chỉnh lại!

    theo mình là chưa cấp phát bộ nhớ ở để dùng struct, sao không để cụm này vào class luôn.

  7. #7
    Ngày gia nhập
    04 2008
    Nơi ở
    Bốn bề là nhà
    Bài viết
    697

    Trong method congdathuc, có new rồi mà.

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

  1. Lỗi chương trình không nhận biến(không return được biến từ public sang main)
    Gửi bởi nang trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 4
    Bài viết cuối: 02-10-2011, 06:04 PM
  2. Thuộc tính khóa ngoài( tham chiếu) biến mất khi biến đổi từ file XML sang DataTable
    Gửi bởi itmanhieu trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 17-08-2011, 08:02 PM
  3. làm sao để 2 biến Datetime trừ nhau ra biến float or double?
    Gửi bởi robocon1183 trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 1
    Bài viết cuối: 10-12-2009, 05:11 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