Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 12 kết quả

Đề tài: [ Solved ]Lỗi khai báo và in ra màn hình!

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

    Mặc định [ Solved ]Lỗi khai báo và in ra màn hình!

    Mọi người xem hộ mình lỗi khai báo cần sửa ntn! Khi mình đổi private thành public biến point chậy thử thì thấy in sai.Ví dụ khi nhập hai sinh viên.Sinh viên thứ hai có tên là ABC thì nó chỉ in ra BC còn sinh viên đầu thì in đúng.Cảm ơn mọi người trước nhé!
    PHP Code:
    #include <conio.h>
    #include <iostream.h>
    #include <iomanip.h>
    #include <fstream.h>
    using namespace std;

    class 
    student
    {
        private:
            
    char name[30];
            
    char student_id[30];
            
    char adress[30];

        public:
        
    //float point;
        
    friend void putdata(student *A,int n);
        
    friend void infile(student *A,int n);
        
    friend void outfile(student *A,int n);
        
    friend void getdata(student *A,int n);


    };
    void getdata(student *A,int n)
        {
            for(
    int i=1;i<=n;i++)
            {

                
    cout<<"\nTen Sinh Vien ["<<i<<"]:";
                
    cin.ignore();cin.getline(A[i].name,100);
                
    cout<<"\nMa Sinh Vien:";
                
    cin.ignore();
                
    cin.getline(A[i].student_id,100);
                
    cout<<"\nQue Quan:";
                
    cin.getline(A[i].adress,100);


            }
        }
    void putdata(student *A,int n)
    {
              for(
    int i=1;i<=n;i++)
                {
                
    cout<<"\n\n Ma sinh vien: "<<A[i].student_id;
                
    cout<<"\n\n Ho ten sinh vien: "<<A[i].name;
                
    cout<<"\n\n Que quan: \n"<<A[i].adress;
                }

         }

    void outfile(student *A,int n)
    {

        
    ofstream fout("sv.txt",ios::app|ios::out);
        if(!
    fout)
        {
        
    cout<<endl<<"Loi mo tep";
        
    getch();
        }

        else
        {
              for(
    int i=1;i<=n;i++)

           {
               
    fout<<A[i].student_id<<endl;
               
    fout<<A[i].adress<<endl<<endl;
                
    fout <<A[i].name<<endl;

             
    fout.close();
           }
        }
    }
    void infile(student *A,int n)
    {
        
    ifstream fin("sv.txt",ios::in);
        if(!
    fin)
        {
        
    cout<<endl<<"Loi mo tep";
        
    getch();
        }
        else
        {
             for(
    int i=1;i<=n;i++)
        {
           
    fin>>A[i].student_id;fin.ignore();
           
    fin>>A[i].name;fin.ignore();
           
    fin>>A[i].adress;fin.ignore();
           
    fin.close();
        }

        }
    }
    //-----------------------------------------------------------------------------------------------------

    class point:public student

    {
        private:
            
    float point;
        public:
            
    friend void getpoint(student *A,int n);
            
    friend void putpoint(student *A,int n);
            
    friend void outfile(student *A,int n);
            
    friend void infile(student *A,int n);

        };
    void getpoint(student *A,int n)
    {
        for(
    int i=1;i<=n;i++)
            {
                
    cout<<"\nDiem cua sinh vien ["<<i<<"]:";
                
    cin>>A[i].point;

                }

        }
    void putpoint(student *A,int n)
    {
        for(
    int i=1;i<=n;i++)
        {
            
    cout<<"Diem cua sinh vien la:["<<A[i].point<<"]";

            }
        }

    void outfile_point(student *A,int n)
    {

        
    ofstream fout("point.txt",ios::app|ios::out);
        if(!
    fout)
        {
        
    cout<<endl<<"Loi mo tep";
        
    getch();
        }

        else
        {
              for(
    int i=1;i<=n;i++)

           {
               
    fout<<A[i].point<<endl;
               
    fout.close();
           }
        }
    }
    void infile_point(student *A,int n)
    {
        
    ifstream fin("point.txt",ios::in);
        if(!
    fin)
        {
        
    cout<<endl<<"Loi mo tep";
        
    getch();
        }
        else
        {
             for(
    int i=1;i<=n;i++)
        {
           
    fin>>A[i].point;
           
    fin.close();
        }

        }
    }

    //-------------------------------------------------------------------------------------------


    int main()

    {
        
    int n;
        
    student *A;
        
    cout<<"NHAP SO SINH VIEN N:";
        
    cin>>n;
        
    A=new student [n];
        
    getdata(A,n);
        
    putdata(A,n);
        
    outfile(A,n);
       
    infile(A,n);
        
    getpoint(A,n);
        
    putpoint(A,n);
        
    outfile_point(A,n);
        
    infile_point(A,n);

        
    delete [] A;
        
    system("pause");


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

    - Dùng cin.ignore( 80, '\n' ), 80 là số kí tự tối đa của 1 dòng.
    - Dùng đúng header C++ để code portable( #include <iostream>, #include<iomanip>... )
    C++ Code:
    1. #include <iostream>
    2. #include <string>
    3.  
    4. using namespace std;
    5.  
    6. struct Student {
    7.     char name[ 80 ];
    8.     int  age;
    9. };
    10.  
    11.  
    12. int main()
    13. {
    14.     Student stu_ary[ 2 ];
    15.  
    16.     for( int i = 0; i < 2; ++i )
    17.     {
    18.         cin.getline( stu_ary[ i ].name, 80 );
    19.         cin >> stu_ary[ i ].age;
    20.         cin.ignore( 80, '\n' );
    21.     }
    22.  
    23.     cout << endl;
    24.     cout << stu_ary[ 0 ].name << "\n";
    25.     cout << stu_ary[ 1 ].name << "\n";
    26.     cout << stu_ary[ 0 ].age << "\n";
    27.     cout << stu_ary[ 1 ].age << "\n";
    28.  
    29.     return 0;
    30. }

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

    anh rook_rox nói không đúng lỗi của bạn ây rồi,nói nhảm quá,không liên quan đến lỗi đó-> vì bạn ấy đang dịch trên Cfree

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

    anh rook_rox nói không đúng lỗi của bạn ây rồi,nói nhảm quá,không liên quan đến lỗi đó-> vì bạn ấy đang dịch trên Cfree
    - Nhảm cái gì ?
    Sinh viên thứ hai có tên là ABC thì nó chỉ in ra BC còn sinh viên đầu thì in đúng
    - Đối với lỗi này thì chỉ có bị dính key vào buffer. Cậu nói thế nào là nhảm ?
    - Còn sữa code thì tui không rảnh, nhìn vào kiểu kế thừa nửa nạc nữa mỡ + dùng friend cho input thì tui biết chắc tên này chẳng có học hành 1 chữ nào rồi !
    - Dịch Cfree hay Borland C là chuyện của mấy cậu ! Tui không care, tui viết code run cho mọi compiler chứ không phải cho Cfree.
    - Nói thiệt cậu 1 code, void main() và iostream.h chỉ có ở VN mới xài cậu à. Cậu viết kiểu đó bên này thì thầy cô khỏi có mà chấm bài cậu làm chi cho mệt ! Đến nỗi cái standard cũng không rõ thì học với chả hành.

  5. #5
    Ngày gia nhập
    04 2008
    Nơi ở
    HCMC
    Bài viết
    251

    thông thường thì class khác nhau nên tạo ra các file header khác nhau để lưu thì trông sẽ đẹp hơn và khi dịch lỗi không phải nhìn cả một đoạn dài hoa cả mắt.

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

    Mặc định [ Solved ]Lỗi khai báo và in ra màn hình!

    Bạn QuangTrien ơi. Ban không thể viết như thế này được: cin>>A[i].point;
    vì bạn khai báo đối tượng A là của lớp Student mà cái thuộc tính float point lại của là ở lớp point. Đối tượng của lớp cơ sở không thể truy cập đến thuộc tính của lớp dẫn xuất mà. Tớ nói thế có gì sai mọi người bổ sung nhé.

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

    Trích dẫn Nguyên bản được gửi bởi rox_rook Xem bài viết
    - Nhảm cái gì ?

    - Đối với lỗi này thì chỉ có bị dính key vào buffer. Cậu nói thế nào là nhảm ?
    - Còn sữa code thì tui không rảnh, nhìn vào kiểu kế thừa nửa nạc nữa mỡ + dùng friend cho input thì tui biết chắc tên này chẳng có học hành 1 chữ nào rồi !
    - Dịch Cfree hay Borland C là chuyện của mấy cậu ! Tui không care, tui viết code run cho mọi compiler chứ không phải cho Cfree.
    - Nói thiệt cậu 1 code, void main() và iostream.h chỉ có ở VN mới xài cậu à. Cậu viết kiểu đó bên này thì thầy cô khỏi có mà chấm bài cậu làm chi cho mệt ! Đến nỗi cái standard cũng không rõ thì học với chả hành.
    Ông vứt cái sĩ diện hão của ông đi!Ở đây thôi ông ra ngoài đi xem thế nào.Ở bên VN à!Ông viết CODE cho bọn nước ngoài rôi à!Tôi bảo ông xem hộ ông giúp được thì giúp còn không thì thôi ông ra chỗ khác !Ông giúp rồi ông chửi vào mặt người ta có thằng nào nó thèm nhờ ông không!

    Đừng có cúi đầu mãi thế ngẩng đầu lên nhìn người khác hộ với nhé!Xem mình là ai!Khi nào làm được cái gì to tát rồi hãy nói!

  8. #8
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    để mình hướng dẫn câu sơ qua thế này nhé
    1) cậu nên gói class lại,nghĩa là nên để các hàm nhập cho class student nhập cho các thuộc tính của lớp student( đừng để hàm nhập là hàm bạn của lớp,như vậy lớp không có phương thức nữa)
    2) từ class dẫn xuất không thể truy nhập về class cơ sở
    tức từ class student không thể truy nhập đến class point mà chỉ có class point truy nhập đến các thành phần public ( protect trong 1 số trường hợp ) của class student
    3) cậu chú ý nên xây dựng class là 1 cá thể,VD như class hocsinh thì cậu chỉ xây dựng cho 1 học sinh,còn nếu muốn xây dựng cho nhiều học sinh khi đó cậu dùng mảng class nhé
    VD như thế này
    class hocsinh
    {
    };
    //cái này cậu đã khai báo xong
    khi đưa ra hàm main cậu khai báo mảng class như sau
    hocsinh A[100]
    //đây là các khai báo mảng học sinh
    --> rồi sau đó cậu có thể khai báo mảng học sinh thông qua vòng lặp
    VD for(int i=1;i<=10;i++)
    A[i].nhap();

    với A[i] chính là học sinh thứ i

    --> tóm lại mình cho cậu ý tưởng nhé,chứ debult bài của cậu thì có thời gian chắc cũng debult được,nhưng mình nghĩ điều quan trọng hơn đó là phong cách lâp trình nữa,cậu lập trình như vậy cũng được,nếu sửa thì vẫn ra kết quả nhưng sẽ không giống 1 cấu trúc hướng đối tượng
    chúc cậu thành công

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

    Ông vứt cái sĩ diện hão của ông đi!Ở đây thôi ông ra ngoài đi xem thế nào.Ở bên VN à!Ông viết CODE cho bọn nước ngoài rôi à!Tôi bảo ông xem hộ ông giúp được thì giúp còn không thì thôi ông ra chỗ khác !Ông giúp rồi ông chửi vào mặt người ta có thằng nào nó thèm nhờ ông không!

    Đừng có cúi đầu mãi thế ngẩng đầu lên nhìn người khác hộ với nhé!Xem mình là ai!Khi nào làm được cái gì to tát rồi hãy nói!
    - Không học mà còn la làng.
    - Code cậu dùng kế thừa, cho tui hỏi cậu dùng kế thừa chỗ đó làm gì ? Nhìn vào code là biết chắc không hề đọc sách 1 chữ, friend không hề được kế thừa, ngay cả thuộc tính cũng bỏ private( không phải protected ). 2 cái class đó có liên hệ gì với nhau mà bỏ kế thừa vào ?
    - Còn cái lỗi dính key thì làm ơn dở sách ra đọc cin.ignore() làm gì rồi hãy la cho lớn.
    C++ Code:
    1. for(int i=1;i<=n;i++)
    Còn cái lỗi cơ bản này thì cậu ráng mà suy nghĩ cho ra !
    - Còn tui làm gì thì chẳng có gì phải kể cho cậu nghe.

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

    Cám ơn coder rất nhiều nhé!Mình đã hiểu ra nhiều thứ!Một thiếu sót của diễn đàn là không không có HACKMOD Thanks!

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

  1. taị sao các biến static khi khai báo để dùng được lại phải khai báo lại trước hàm main ? ?
    Gửi bởi anhnpson trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 15-06-2011, 08:18 PM
  2. Lập trình C Thắc mắc về khai báo protoype và các hàm liên quan khi khai báo!
    Gửi bởi ganhim trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 15
    Bài viết cuối: 10-08-2010, 02:03 PM
  3. Sự khác nhau giữa các khai báo int, void, float trong khai báo hàm?
    Gửi bởi toend2008 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 06-05-2009, 07:19 PM
  4. [ Solved ]Thắc mắc nhỏ về khai báo kiểu struct
    Gửi bởi writerashe trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 17-09-2008, 11:29 AM
  5. [ Solved ]Hỏi về các thao tác khai báo trên <Class>.
    Gửi bởi hacker_mubaohiem trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 16-03-2008, 04:13 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