In danh sách sinh viên ra màn hình kèm theo tổng điểm

mọi người cho em hỏi là sao bài này của e nó cứ bị lỗi như này ạ:

||=== Build: Debug in sinhvien (compiler: GNU GCC Compiler) ===|
C:\Users\PC\Documents\devc\sinhvien\main.cpp|31|error: 'void SinhVien::Tongdiem()' conflicts with a previous declaration|
C:\Users\PC\Documents\devc\sinhvien\main.cpp|16|note: previous declaration 'float SinhVien::Tongdiem'|
C:\Users\PC\Documents\devc\sinhvien\main.cpp||In member function 'void SinhVien::Tongdiem()':|
C:\Users\PC\Documents\devc\sinhvien\main.cpp|29|error: invalid use of member (did you forget the '&' ?)|
C:\Users\PC\Documents\devc\sinhvien\main.cpp||In member function 'void SinhVien::Xuat()':|
C:\Users\PC\Documents\devc\sinhvien\main.cpp|34|error: 'setw' was not declared in this scope|
C:\Users\PC\Documents\devc\sinhvien\main.cpp||In function 'int main()':|
C:\Users\PC\Documents\devc\sinhvien\main.cpp|44|error: 'i' was not declared in this scope|
C:\Users\PC\Documents\devc\sinhvien\main.cpp|49|error: 'setw' was not declared in this scope|
C:\Users\PC\Documents\devc\sinhvien\main.cpp|50|error: expected ')' before ';' token|
||=== Build failed: 6 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

còn đây là code của em ạ:

#include <iostream>

using namespace std;

const int MAX = 100;

    // tao ham class sinhvien
    class SinhVien
    {
    private:
        string Hoten;
        string Masv;
        float Toan;
        float Ly;
        float Hoa;
        float Tongdiem;
    public:
        void Nhap()
        {
            cout<<"Nhap Masv:"<<endl;
            cin>>Masv;
            cout<<"Nhap Hoten:"<<endl;
            cin>>Hoten;
            cout<<"Nhap diem Toan, Ly, Hoa:"<<endl;
            cin>>Toan>>Ly>>Hoa;
        }
        void Tongdiem()
        {
            Tongdiem = Toan+Ly+Hoa;
            return Tongdiem();
        }
        void Xuat()
        {
            cout<<setw(10)<<Hoten<<setw(7)<<Masv<<setw(7)<<Tongdiem<<endl;
        }
    };

    int main()
    {
        SinhVien sv[MAX];
        int n;
        cout<<"Nhap vao so sinh vien:"<<endl;
        cin>>n;
        for (i=0,i<n,i++)
        {
            cout<<"Thong tin cua sinh vien thu"<<i<<"la:";
            sv[i].Xuat();
        }
        cout << setw(40) << "DANH SACH SINH VIEN\n\n";
        cout<<setw(10)<<"Ho ten"<<setw(7)<<"Ma sv"<<setw(7)<<"Tong Diem"<<endl;
        for (int i = 1; i<=n; i++)
            {
             sv[i].Xuat();
            }

        return 0;
    }
void Tongdiem()
{
   Tongdiem = Toan+Ly+Hoa;
   return Tongdiem();
 }

đã void rồi sao còn return nữa

2 Likes

Đã có thuộc tính toán lí hóa sao còn có thuộc tính tổng điểm :smiley:

3 Likes

thuộc tính suy diễn, tổng điểm k nên có, tuy nhiên mới học code thì cứ tạm vậy :joy:

2 Likes
  1. Khai báo tên hàm và biến trùng nhau. Biến Tongdiem (dòng 16) và hàm cũng tên Tongdiem() (dòng 27).
  2. Thiếu thư viện. <iomanip> cho setw().
  3. Dùng biến chưa được khai báo. Biến i chưa được khai báo khi dùng trong for. Bạn dùng 2 vòng lặp for, for thứ 1 dùng i sai (sai cả cú pháp), nhưng for thứ 2 lại dùng i đúng. :unamused:
  4. Phần nhập thông tin SV lại gọi hàm Xuat().

Tóm lại, bạn nên học thêm 1 thứ cực kì quan trọng: HỌC CÁCH ĐỌC VÀ HIỂU… LỖI.

5 Likes

Ông này kiến thức cơ bản chưa vững. :rofl:
đưa source lên nhờ ng khác giúp cũng k có phản hồi.
Cách học này có vấn đề

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?