01/10/2018, 11:25

Lỗi "cannot convert ‘ThiSinh’ to ‘int’ in initialization" sửa như thế nào?

//em muon 
#include <iostream>
#include <string.h>
#include <iomanip>

using namespace std;

struct ThiSinh
{
    long sobaodanh;
    string quequan;
    string hoten;
    int toan;
    int ly;
    int hoa;
    int tongdiem;
};

void NhapDanhSachThiSinh (int n, ThiSinh ts[]);

void NhapThiSinh (ThiSinh &ts);

void InDanhSachThiSinh (int n, ThiSinh ts[]);

void TimKiemThiSinh (int n, long sbd, ThiSinh ts[]);

void ThiSinhDuDieuKien(int n, ThiSinh ts[]);

void ThreeBest(int n,ThiSinh ts[]);

int main()
{
    //Khai bao bien n
    int n =0;

    // Nhap n
    cout <<"Nhap so hoc sinh: ";
    cin >> n;

    //Khai bao mot mang kieu thi sinh
    ThiSinh arr[n];

    //Goi ham nhap danh sach
    NhapDanhSachThiSinh(n,arr);

    //In danh sach
    InDanhSachThiSinh(n,arr);

    //khai bao bien so bao danh can tim
    long sbd =0;

    //Goi ham tim thong tin
    TimKiemThiSinh(n,sbd,arr);

    //Nhung Thi SInh co du dieu kien
    cout << "Nhung Thi Sinh Co Du Dieu Kien: " << endl;

    //Goi Ham Thi Sinh Co Du Dieu Kien
    ThiSinhDuDieuKien(n,arr);

    //In 3 thi sinh co diem cao nhat
    cout <<"3 Thi Sinh Co Diem Cao Nhat: " << endl;

    //Goi ham lay 3 thi sinh diem cao nhat
    ThreeBest(n, arr);
    return 0;
}

//Goi ham nhap danh sach thi sinh
void NhapDanhSachThiSinh(int n, ThiSinh ts[])
{
    for (int i =0; i < n; i++)
    {
        cout <<"NHAP THI SINH " << i+1 << endl;

        NhapThiSinh(ts[i]);
    }
}

//Goi ham nhap thi sinh
void NhapThiSinh (ThiSinh &ts)
{
    cout <<"So bao danh: ";
    cin >> ts.sobaodanh;

    //Loai bo ki tu xuong dong
    cin.ignore(1);

    //Nhap que quan
    cout <<"Que quan: ";
    getline(cin , ts.quequan);

    //Nhap ho ten
    cout << "Ho ten: ";
    getline(cin, ts.hoten);

    //neu nhap diem > 10 thi quay lai day
    QuayLai:

    //Nhap diem toan
    cout << "Diem toan: ";
    cin >> ts.toan;

    //neu diem toan nhap sai
    if (ts.toan > 10)
    {
        cout << "Ban phai nhap diem <=10 ";

        goto QuayLai;
    }

    //Nhap diem ly
    cout << "Diem ly: ";
    cin >> ts.ly;

    //neu diem ly nhap sai
    if (ts.ly > 10)
    {
        cout << "Ban phai nhap diem <=10 ";

        goto QuayLai;
    }

    //Nhap diem hoa
    cout << "Diem hoa: ";
    cin >> ts.hoa;

    //neu diem hoa nhap sai
    if (ts.hoa > 10)
    {
        cout << "Ban phai nhap diem <=10 ";

        goto QuayLai;
    }
}

void InDanhSachThiSinh(int n,ThiSinh ts[])
{

    cout << setw(10) <<"So bao danh "
         << setw(30) << "Ho Ten "
         << setw(10) << "Toan"
         << setw(10) << "Ly"
         << setw(10) << "Hoa "
         << setw(20) << "Que Quan "
         << endl;


    //Dung vong lap de sap xep tong diem tu cao den thap
    for (int i =0; i < n-1; i++)
    {
        //tinh tong diem
        ts[i].tongdiem = ts[i].toan + ts[i].ly + ts[i].hoa;

        for (int j = i +1; j<n; j++ )
        {
            //tinh tong diem
            ts[j].tongdiem = ts[j].toan + ts[j].ly + ts[j].hoa;

            //neu tong diem ng truoc < hon tong diem nguoi sau thi doi cho
            if(ts[i].tongdiem < ts[j].tongdiem)
            {
               int temp = ts[i];
               ts[i]=  ts[j];
               ts[j] = temp;
            }
        }
    }

    //in danh sach thi sinh tong diem tu cao den thap
    for (int i =0; i<n; i++)
    {
        cout <<setw(10) << ts[i].sobaodanh
             << setw(30) << ts[i].hoten
             << setw(10) << ts[i].toan
             << setw(10) << ts[i].ly
             << setw(10) << ts[i].hoa
             << setw(20) << ts[i].quequan
             << endl;
    }

}

void TimKiemThiSinh(int n, long sbd,ThiSinh ts[])
{
    //nhap so bao danh cua thi sinh can tim
    cout << "Nhap so bao danh cua thi sinh can tim: ";
    cin >> sbd;
    cout << endl;

    for (int i =0; i < n; i++)
    {
        if (ts[i].sobaodanh - sbd == 0)
        {
            cout <<setw(10) << ts[i].sobaodanh
                << setw(30) << ts[i].hoten
                << setw(10) << ts[i].toan
                << setw(10) << ts[i].ly
                << setw(10) << ts[i].hoa
                << setw(20) << ts[i].quequan
                << endl;
        }
    }

}

void ThreeBest(int n,ThiSinh ts[])
{

     //Dung vong lap de sap xep tong diem tu cao den thap
     for (int i =0; i < n-1; i++)
     {
        //tinh tong diem
        ts[i].tongdiem = ts[i].toan + ts[i].ly + ts[i].hoa;
         for (int j = i +1; j<n; j++ )
         {
            //tinh tong diem
            ts[j].tongdiem = ts[j].toan + ts[j].ly + ts[j].hoa;

             if(ts[i].tongdiem < ts[j].tongdiem)
             {
                int temp = ts[i];
                ts[i]=  ts[j];
                ts[j].tongdiem = temp;
             }
         }
     }

     //In 3 thi sinh co diem cao nhat
     for (int i =0; i<3; i++)
     {
         cout <<setw(10) << ts[i].sobaodanh
              << setw(30) << ts[i].hoten
              << setw(10) << ts[i].toan
              << setw(10) << ts[i].ly
              << setw(10) << ts[i].hoa
              << setw(20) << ts[i].quequan
              << endl;
     }

}

void ThiSinhDuDieuKien(int n, ThiSinh ts[])
{


    for (int i =0; i < n; i++)
    {
        //tinh tong diem
        ts[i].tongdiem = ts[i].toan + ts[i].ly + ts[i].hoa;

        if (ts[i].toan >1 && ts[i].ly >1 && ts[i].hoa >1 && ts[i].tongdiem >=15)
        {
            cout <<setw(10) << ts[i].sobaodanh
                << setw(30) << ts[i].hoten
                << setw(10) << ts[i].toan
                << setw(10) << ts[i].ly
                << setw(10) << ts[i].hoa
                << setw(20) << ts[i].quequan
                << endl;
        }
    }
}
Việt Hưng Vũ viết 13:28 ngày 01/10/2018
void InDanhSachThiSinh(int n,ThiSinh ts[])
{

    cout << setw(10) <<"So bao danh "
         << setw(30) << "Ho Ten "
         << setw(10) << "Toan"
         << setw(10) << "Ly"
         << setw(10) << "Hoa "
         << setw(20) << "Que Quan "
         << endl;


    //Dung vong lap de sap xep tong diem tu cao den thap
    for (int i =0; i < n-1; i++)
    {
        //tinh tong diem
        ts[i].tongdiem = ts[i].toan + ts[i].ly + ts[i].hoa;

        for (int j = i +1; j<n; j++ )
        {
            //tinh tong diem
            ts[j].tongdiem = ts[j].toan + ts[j].ly + ts[j].hoa;

            //neu tong diem ng truoc < hon tong diem nguoi sau thi doi cho
            if(ts[i].tongdiem < ts[j].tongdiem)
            {
               int temp = ts[i];
               ts[i]=  ts[j];
               ts[j] = temp;
            }
        }
    }

Ở đoạn này ạ

*grab popcorn* viết 13:26 ngày 01/10/2018

Bạn thử google dịch cái lỗi ra xem nó nói gì

Xuân Tâm viết 13:29 ngày 01/10/2018

Nó báo gì thì Y lỗi đó.
" Không thể chuyển đổi kiểu Thisinh thành int trong khi khởi tạo.
Line : 163 int temp = ts[i]; // cái gì đây?

Abc viết 13:27 ngày 01/10/2018

Lỗi ở đây!

int temp = ts[i];
ts[i]=  ts[j];
ts[j] = temp;

Sửa lại:

int temp = ts[i].tongdiem;
ts[i].tongdiem = ts[j].tongdiem;
ts[j].tongdiem = temp;
rogp10 viết 13:25 ngày 01/10/2018

Lỗi thì ngay đó thật, nhưng bạn đang lấy điểm người này gán cho người kia.

Ta hiểu lỗi này là: không thể khởi tạo bằng int cho ThiSinh.

Bài liên quan
0