30/09/2018, 16:16

Bài tập về Struct

Cho một danh sách sinh viên được mô tả chi tiết như sau:

  • Danh sách sinh viên gồm n sinh viên. với n được nhập bất kỳ.
  • Thông tin một sinh viên bao gồm: Số thứ tự, Mã số sinh viên, Họ tên sinh viên, Điểm Nhập môn lập trình, Môn toán A1, Môn toán A2, Môn Vật lý kỹ thuật, Môn anh văn, Điểm trung bình tích lũy, Xếp loại (xuất sắc, giỏi, khá, trung bình, yếu).
  • Thông tin môn học bao gồm: Mã môn, Tên môn, Số tín chỉ, Điểm.
    Thực hiện các yêu cầu sau:
    a) Hãy thiết kế và xây dựng các cấu trúc (struct) phù hợp cho bài toán
    b) Xây dựng một chương trình hoàn chỉnh cho một lớp học đảm bảo các thao tác sau:
  • Hàm nhập xuất danh sách sinh viên (2 điểm).
  • Tìm một sinh viên thông qua mã số sinh viên hoặc qua tên sinh viên (1 điểm)
  • Tìm sinh viên có điểm trung bình cao nhất (1 điểm)
  • Liệt kê danh sách các sinh viên thuộc một loại bất kỳ (1 điểm)
  • Thêm, xóa một sinh viên ra khỏi danh sách (2 điểm)
  • Sắp xếp danh sách sinh viên tăng dần (1 điểm).
  • Theo điểm trung bình tích lũy
  • Hoặc Theo tên theo thứ tự ABC …
    Lưu ý:
  • ĐTBTC là trung bình cộng của tất cả các môn dựa trên điểm số và số tín chỉ.
  • Lưu ý: Xếp loại được tính như sau:
  • Xuất sắc: ĐTBTL>=9
  • Giỏi với: 8.0<=ĐTBTL<9
  • Khá với: 6.5<=ĐTBTL<8.0
  • Trung bình: 5.0<=ĐTBTL<6.5
  • Yếu: ĐTBTL<5

Em code thế này đước điểm tối đa không mọi người (chỉ câu a thôi nha ^^)
P/s Phần này em chưa học nên chưa có kinh nghiệm

#include<stdio.h>
#include<conio.h>
struct SinhVien
{
	char Hovaten[30],MSSV[10],Ngaysinh[10];
	float diemtoan,diemanhvan;
	
};
struct Thongtinmonhoc
{
	//Mã môn, Tên môn, Số tín chỉ, Điểm.
	char Mamon[10],Tenmon[10];
	int Sotinchi;
	float diem;
};
void nhapthongtinmonhoc(Thongtinmonhoc &x)
{
	fflush(stdin);
	printf("
Nhap Ten Mon Hoc: ");
	gets(x.Tenmon);
	fflush(stdin);
	printf("
Nhap Ma Mon Hoc: ");
	gets(x.Mamon);
	printf("
Nhap so tinh chi: ");
	scanf("%d",&x.Sotinchi);
	printf("
Nhap diem: ");
	scanf("%f",&x.diem);

}
void xuatthongtinmonhoc(Thongtinmonhoc x)
{
	printf("
Ten Mon Hoc: %s",x.Tenmon);
	printf("
Ma Mon Hoc: %s",x.Mamon);
	printf("
So Tinh Chi: %d",x.Sotinchi);
	printf("
Diem: %.2f",x.diem);

}
void nhapdulieuHS(SinhVien a[],int &n)
{
	
	for(int i=0;i<n;i++)
	{
		printf("
------------------------------------
");
		fflush(stdin);
		printf("
Nhap Ho Va Ten SV: ");
		gets(a[i].Hovaten);
		fflush(stdin);
		printf("
Nhap MSSV: ");
		gets(a[i].MSSV);
		fflush(stdin);
		printf("
Nhap ngay sinh: ");
		gets(a[i].Ngaysinh);
		printf("
Nhap diem toan: ");
		scanf("%f",&a[i].diemtoan);
		printf("
Nhap diem anh van: ");
		scanf("%f",&a[i].diemanhvan);
		
	}
}
void xuatdulieuHS(SinhVien a[],int n)
{
	for(int i=0;i<n;i++)
	{
		printf("
------------------------------------
");
		printf("
Ho va ten: %s",a[i].Hovaten);
		printf("
MSSV: %s",a[i].MSSV);
		printf("
Ngay sinh: %s",a[i].Ngaysinh);
		printf("
Diem toan: %0.1f",a[i].diemtoan);
		printf("
Diem anh van: %0.1f",a[i].diemanhvan);
		printf("
------------------------------------
");
	}
}
void main()
{
	int n;
	Thongtinmonhoc x;
	SinhVien a[100];
	printf("
Nhap so luong SV: ");
	scanf("%d",&n);
	nhapdulieuHS(a,n);
	xuatdulieuHS(a,n);
	nhapthongtinmonhoc(x);
	xuatthongtinmonhoc(x);
	getch();
}
Thực tế khắc nghiệt viết 18:19 ngày 30/09/2018

gồm có truct sinh viên thuộc kiểu môn học và struct danh sách sinh viên kiểu sinh viên
nghĩa là struct monhoc, sinhvien, danhsachsv

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

Mình ngĩ bạn cần thêm struct DanhSachSV.
Struct SinhVien các thuộc tính : Điểm Nhập môn lập trình,Môn toán A1, Môn toán A2, Môn Vật lý kỹ thuật, Môn anh văn, Điểm trung bình tích lũy, Xếp loại chưa có kìa bạn…

Thông tin môn học bao gồm: Mã môn, Tên môn, Số tín chỉ, Điểm.

Mình chưa hiểu thuộc tính điểm ở đây có ý nghĩa j ???

Kelvin Nguyễn viết 18:23 ngày 30/09/2018

Mình cũng không hiểu luôn

Kelvin Nguyễn viết 18:28 ngày 30/09/2018

Struct SinhVien các thuộc tính : Điểm Nhập môn lập trình,Môn toán A1, Môn toán A2, Môn Vật lý kỹ thuật, Môn anh văn, Điểm trung bình tích lũy, Xếp loại chưa có kìa bạn.
Cái này do mình làm biếng

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

chạy luôn :running: .
p/s: đùa chứ, k hiểu thì bạn hỏi thầy …hi

Kelvin Nguyễn viết 18:17 ngày 30/09/2018

Ê mà làm câu

  • Tìm một sinh viên thông qua mã số sinh viên hoặc qua tên sinh viên
    thì làm sao ấy nhĩ
Phạm Hoàng Tuấn viết 18:17 ngày 30/09/2018

Thì viết hàm TimKiem với tham số đầu vào là keywork( char [30]) (do Hoten, MSSV bạn lưu kiểu đó), duyệt toàn bộ danh sách sinh viên, ku nào có MSSV hoặc Hoten trùng với Keywork thì lôi nó ra. Không có thì trả về null.

Thực tế khắc nghiệt viết 18:25 ngày 30/09/2018

xin lỗi vài ngày qua bận 1 số chuyện giải quyết vì thế ko tham gia để trả lời đc. Ý mình nói ở đây là lồng struct. nghĩa là ta có struct monhoc.h, sinhvien.h và danhsachsv.h
bạn làm từ từ thôi. với mảng các sinh viên trong danhsachsv và mảng monhoc trong sinhvien.
vídụ : sinhvien có nhiều môn học mà.

Trần Hồng Phong viết 18:17 ngày 30/09/2018

Có 2 struct độc lập cần tạo trước là MonHoc (thông tin môn học) và Ngay (kiểu ngày/ tháng/ năm). Sau đó sử dụng 2 struct này trong struct SinhVien (lưu ý struct SinhVien không cần phải có thông tin điểm trung bình tích lũy và xếp loại vì dữ liệu này có thể được tính toán dựa trên điểm số các môn nên không cần lưu lại). Hơn nữa, bạn cũng không cần struct DanhSachSV vì cơ bản bạn có thể khai báo một mảng SinhVien và sử dụng

Tin Pham viết 18:21 ngày 30/09/2018

viết chương trình có sử dụng kiểu dữ liệu struct và định nghĩa các hàm để thực hiện các công việc sau:
a) Nhập MSSV (số nguyên), họ lót (chuỗi), tên (chuỗi) và điểm (số thực) của không quá 20 sinh viên (2 điểm).
b) Tìm các sinh viên có điểm thấp nhất và cao nhất (2 điểm).
c) Tính điểm trung bình của các sinh viên (2 điểm).
d) Tìm họ tên của sinh viên có MSSV được nhập từ bàn phím (2 điểm).
e) Tìm tất cả sinh viên (gồm MSSV, họ tên và điểm) có tên giống với tên được nhập từ bàn phím (2 điểm).
anh bạn anh chị giúp mình giải bài này với.cám ơn ạ!!

Trần Hồng Phong viết 18:18 ngày 30/09/2018

Tạo topic mới đi bạn. Hơn nữa bạn nhờ giúp mà đưa nguyên cái đề như thế này không ổn, dù biết cũng không ai rãnh làm cho bạn hết Bạn nên làm, và cố gắng làm và hỏi những khó khăn, khuất mắt

Nguyễn Văn Nam viết 18:26 ngày 30/09/2018

Tạo topic mới đi bạn. Hơn nữa bạn nhờ giúp mà đưa nguyên cái đề như thế này không ổn, dù biết cũng không ai rãnh làm cho bạn hết Bạn nên làm, và cố gắng làm và hỏi những khó khăn, khuất mắt

ban oi cho minh hoi neu ma cau hoi khac mot chut la : dung nhap khi ma MSSV la trong thi lam ntn

HK boy viết 18:32 ngày 30/09/2018

Tạo topic mới đi bạn. Nhớ gõ tiếng Việt có dấu.

Bài liên quan
+1