30/09/2018, 16:05

hàm tìm thí sinh trúng tuyển trong cấu trúc (struct)

Mọi người giúp e ý này vs ạ,e chưa nghĩ ra cách làm
Cho một danh sách n thí sinh (3≤n≤35), mỗi thí sinh gồm: Số báo danh, họ và tên, ngày sinh (ngày/tháng/năm), giới tính, hộ khẩu (huyện-tỉnh) và tổng điểm. Viết chương trình thực hiện các yêu cầu sau (các yêu cầu được viết bởi các hàm)

  • Nhập vào điểm chuẩn tuyển sinh (13.5≤điểm chuẩn≤25) Hiển thị những thí sinh ở “Gia Lâm-Hà Nội” trúng tuyển.
Phạm Hoàng Tuấn viết 18:20 ngày 30/09/2018

Em tạo 1 class hoặc 1 struct thí sinh, gồm các thông tin trên. Viết các hàm
NhapThiSinh() : Nhập các thông tin cần thiết cho 1 thí sinh đó (họ tên, ngày sinh, điểm tỏng kết)
NhapDanhSachThiSinh() : Nhap so luong thi sinh, dùng vòng lặp để nhập từng thí sinh 1
XuatThiSinh() : Xuất thông tin của 1 thí sinh.
HienThiTrungTuyen (); Em duyệt qua toàn bộ thí sinh, xét thí sinh nào có điểm tổng kết lớn hơn hoặc = điểm chuẩn và kiểm dùng hàm tra xem địa chỉ của thí sinh đó có phải là ‘Gia Lâm-Hà Nội’ không thi xuất thí sinh đó ra.(có thể dùng hàm std::string::find , hoặc so sánh chuỗi trực tiếp…)

Đào Văn Duy viết 18:16 ngày 30/09/2018

ok ạ,e sx thử xem thế nào,thanks a

Đào Văn Duy viết 18:10 ngày 30/09/2018

a có thế viết cho e đoạn code hiển thị những thí sinh trúng tuyển ở gia lâm hà nội đc k ạ,struct nhé a

Phạm Hoàng Tuấn viết 18:10 ngày 30/09/2018

Của e đây. a chỉ làm căn bản thôi, e làm thêm nhé, có gì thắc mắc thì post lên

``C++

#include "stdafx.h"
#include "string"
#include "iostream"

struct ThiSinh
{
	std::string SoBaoDanh;
	std::string HoTen;
	std::string NgaySinh;
	std::string GioiTinh;
	std::string HoKhau;
	float TongDiem;
}
;
typedef struct ThiSinh THISINH;
void ThiSinhTrungTuyen(THISINH * DSThiSinh, float diemchuan, int n);

void XuatThiSinh(THISINH ts);

int _tmain(int argc, _TCHAR* argv[])
{
	int n = 3;
	THISINH * DSThiSinh = new THISINH[n];
	DSThiSinh[0].HoTen = "Tran Van A";
	DSThiSinh[0].SoBaoDanh = "001";
	DSThiSinh[0].TongDiem = 15;
	DSThiSinh[0].HoKhau = "113, Gia Lam- Ha Noi";

	DSThiSinh[1].HoTen = "Le Van B";
	DSThiSinh[1].SoBaoDanh = "002";
	DSThiSinh[1].TongDiem = 11;
	DSThiSinh[1].HoKhau = "456, Gia Lam- Ha Noi";

	DSThiSinh[2].HoTen = "Lai Van S";
	DSThiSinh[2].SoBaoDanh = "002";
	DSThiSinh[2].TongDiem = 17;
	DSThiSinh[2].HoKhau = "113, Sai Gon";

	std::cout << "Danh sach thi sinh trung tuyen: " << std::endl;
	ThiSinhTrungTuyen(DSThiSinh, 15, 3);

	getchar();
	return 0;
}

void XuatThiSinh(THISINH ts)
{
	std::cout << "SoBao danh: " << ts.SoBaoDanh<<std::endl;
	std::cout << "HoTen: " << ts.HoTen << std::endl;
	std::cout << "Ho Khau " << ts.HoKhau << std::endl;
	std::cout << std::endl;
	
}

void ThiSinhTrungTuyen(THISINH * DSThiSinh,float diemchuan,int n)
{
	for (int i = 0; i < n; i++)
	{
		if (DSThiSinh[i].TongDiem >= diemchuan && DSThiSinh[i].HoKhau.find("Gia Lam- Ha Noi") != std::string::npos)
		{
			XuatThiSinh(DSThiSinh[i]);
		}
	}
}
Đào Văn Duy viết 18:09 ngày 30/09/2018

âu kê , thanks a,e cũng làm đc rồi hehe, nhưng cho e hỏi là std::string::npos kia là cái gì vậy ạ

Phạm Hoàng Tuấn viết 18:15 ngày 30/09/2018

std::string::npos thường mang giá trị là -1.
Hàm std::string::find('abc') sẽ trả về vị trí xuất hiện đầu tiên của chuỗi 'abc' trong chuỗi mẹ. Nếu chuỗi mẹ đó không chứa chuỗi 'abc' thì sẽ trả về giá trị -1.

Bài liên quan
0