01/10/2018, 12:26

Khi gặp phải lỗi này thì phải sửa sao ạ?

#include<iostream>
#include<string>
#include<string.h>
#include<Windows.h>
using namespace std;

//==============================================================

struct sinhvien
{
	string HoTen;
	string MSSV;
	float DiemTB;
};
typedef struct sinhvien SinhVien;

struct danhsach
{
	int a[100];
	SinhVien arr[100];
	int n;
};
typedef struct danhsach DanhSach;

//=================================================================

void NhapThongTinSV(SinhVien &sv)
{
		do{
			fflush(stdin);
			cout << "
Nhap ho ten sinh vien: ";
			getline(cin, sv.HoTen);
			if (sv.HoTen.length() > 30){
				cout << "
Ho ten toi da 30 ki tu vui long nhap lai
";
			}
		} while (sv.HoTen.length() > 30);
		do{
			fflush(stdin);
			cout << "
Nhap ma so sinh vien: ";
			getline(cin, sv.MSSV);
			if (sv.MSSV.length() > 10){
				cout << "
Ho ten toi da 30 ki tu vui long nhap lai
";
			}
		} while (sv.MSSV.length() > 10);

		do{
			cout << "
Nhap diem trung binh cua sinh vien: ";
			cin >> sv.DiemTB;
			if (sv.DiemTB<0 || sv.DiemTB>10){
				cout << "
Diem trung binh phai lon hon 0 va nho hon 10";
			}
		} while (sv.DiemTB<0 || sv.DiemTB>10);
}
void ChuanHoaHoTen(char a[])
{
	int length = strlen(a);
	char *b = new char(length);
	int k = 0;
	bool flag = 0;
	for (int i = 0; i < length; i++)
	{
		if (a[i] != ' '&& flag == 0)
		{
			b[k++] = toupper(a[i]);
			flag = 1;
		}
		else if (a[i] = ' ' && flag == 1)
		{
			flag = 0;
			b[k++] = a[i];
		}
		else{
			b[k++] = tolower(a[i]);
		}
	}
	b[k] = '';
	strcpy(a, b);
}
void XuatThongTinSinhVien(SinhVien sv)
{
	cout << "
Ho ten Sinh Vien: " << sv.HoTen << endl;
	cout << "
Ma so sinh vien: " << sv.MSSV << endl;
	cout << "
Diem trung binh cua sinh vien:
 " << sv.DiemTB << endl;
}
void NhapDanhSachSinhVien(DanhSach &ds)
{
	for (int i = 0; i < ds.n; i++)
	{
		cout << "

		 NHAP THONG TIN SINH VIEN THU " << i + 1 << endl;
		ChuanHoaHoTen(ds.arr.HoTen);
		NhapThongTinSV(ds.arr[i]);
	}
}
void XuatDanhSachSinhVien(DanhSach ds)
{
	for (int i = 0; i < ds.n; i++)
	{
		cout << "

		 XUAT THONG TIN SINH VIEN THU " << i + 1 << endl;
		XuatThongTinSinhVien(ds.arr[i]);
	}
}
float DiemTrungBinhCaoNhat(DanhSach ds)
{
	float Max = ds.arr[0].DiemTB;
	for (int i = 0; i < ds.n; i++)
	{
		if (ds.arr[i].DiemTB>Max)
		{
			Max = ds.arr[i].DiemTB;
		}
	}
	return Max;
}

int main()
{
	DanhSach ds;
	cout << "Nhap so luong sinh vien: ";
	cin >> ds.n;

	cout << "

		 ============= NHAP DANH SACH SINH VIEN ============= 
";
	NhapDanhSachSinhVien(ds);
	cout << "

		 ============= XUAT DANH SACH SINH VIEN =============
";
	XuatDanhSachSinhVien(ds);

	cout << "

Diem trung binh cao nhat : " << DiemTrungBinhCaoNhat(ds) << endl;
	return 0;
}
HK boy viết 14:36 ngày 01/10/2018

Bạn gặp lỗi ở đâu? Đưa lỗi lên, không phải ai cũng đọc hết được cái code dài thế này.

Thanh Tùng viết 14:42 ngày 01/10/2018

lỗi vậy đó anh

Error 2 error C2228: left of ‘.HoTen’ must have class/struct/union c:\users\administrator\documents\visual studio 2013\projects\hamstruct\xulyttsv\01.cpp 90 1 XuLyTTSV

HK boy viết 14:36 ngày 01/10/2018

Dòng 90

ChuanHoaHoTen(ds.arr.HoTen);

Bạn nhìn cho kĩ.

P/s: Lần sau bạn nên tự debug, chứ không phải cứ mỗi khi compile error là quăng code lên đây hỏi.

Thanh Tùng viết 14:33 ngày 01/10/2018

giờ mình phải sửa sao ạ

HK boy viết 14:31 ngày 01/10/2018

Kèm luôn dòng 90 + 91 cho bạn:

ChuanHoaHoTen(ds.arr.HoTen);
NhapThongTinSV(ds.arr[i]);

Đây là code của bạn chứ không phải code của mình nên bạn cần có trách nhiệm với nó 1 tí. Đọc kĩ rồi sửa nha.

Bài liên quan
0