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;
}
}
}
Bài liên quan
Ở đoạn này ạ
Bạn thử google dịch cái lỗi ra xem nó nói gì
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?
Lỗi ở đây!
Sửa lại:
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
choThiSinh
.