30/09/2018, 23:01
Danh sách học sinh sử dụng struct
Em không biết sai ở đâu mà không xuất ra được.
Đề: Quản lý sinh viên với số lượng không biết trước dùng struct!
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<iostream>
using namespace std;
int slm;
typedef struct{
char TenMonHoc[20];
float DiemTK;
}Subject;
typedef struct {
char TenSV[20];
int age;
char Lop[20];
Subject Diem[3];
float DTB;
char Xl[10];
}Student;
void KhoiTao(Student *myStudent,int sl)
{
myStudent = new Student[sl];
for(int i=0;i<sl;i++){
cout << "
Hoc sinh thu: " << i;
cout << "
Ho va ten: ";
fflush(stdin);
gets(myStudent[i].TenSV);
cout << "
Tuoi: ";
cin >> myStudent[i].age;
cout << "
Lop: ";
fflush(stdin);
gets(myStudent[i].Lop);
for(int j=0;j<3;j++){
cout << "
Mon: ";
fflush(stdin);
gets(myStudent[i].Diem[j].TenMonHoc);
cout << "
Diem TB cua mon hoc: ";
cin >> myStudent[i].Diem[j].DiemTK;
}
myStudent[i].DTB=(myStudent[i].Diem[0].DiemTK +myStudent[i].Diem[1].DiemTK + myStudent[i].Diem[2].DiemTK)/3;
if(myStudent[i].DTB < 5){
strcpy(myStudent[i].Xl,"Yeu");
}
else if(myStudent[i].DTB >=5 && myStudent[i].DTB <= 6.5){
strcpy(myStudent[i].Xl,"Trung Binh");
}
else if(myStudent[i].DTB > 6.5 && myStudent[i].DTB <8){
strcpy(myStudent[i].Xl,"Kha");
}
else {
strcpy(myStudent[i].Xl,"Gioi");
}
}
}
void Xuat(Student *myStudent, int sl)
{
for(int i=0;i<sl;i++){
cout << "
Ten sinh vien: " << myStudent[i].TenSV;
cout << "
Tuoi: " << myStudent[i].age;
cout << "
Lop: " << myStudent[i].Lop;
for(int j=0;j<3;j++){
cout << "
Mon: " << myStudent[i].Diem[j].TenMonHoc << "diem tong ket: " << myStudent[i].Diem[j].DiemTK;
}
cout << "
Diem trung binh: " << myStudent[i].DTB;
cout << "
Xep loai: " << myStudent[i].Xl;
}
}
void Loc (Student *myStudent, int sl)
{
for(int i=0;i<sl;i++){
if(strcmp(myStudent[i].Xl,"Gioi")==0){
cout << "
Ten sinh vien: " << myStudent[i].TenSV;
cout << "
Tuoi: " << myStudent[i].age;
cout << "
Lop: " << myStudent[i].Lop;
for(int j=0;j<3;j++){
cout << "
Mon: " << myStudent[i].Diem[j].TenMonHoc << "diem tong ket: " << myStudent[i].Diem[j].DiemTK;
}
cout << "
Diem trung binh: " << myStudent[i].DTB;
}
}
}
int main ()
{
Student *myStudent;
int sl=0;
cout << "
Nhap vao so luong hov sinh trong lop: ";
cin >> sl;
KhoiTao(myStudent,sl);
Xuat(myStudent,sl);
cout << "
Hoc sinh xep loai Gioi: ";
Loc(myStudent,sl);
delete [] myStudent;
return 0;
}
Bài liên quan
Lần sau nhớ viết TV đàng hoàng nha bạn.
cai go TV no bi hong r a!
cho phần khởi tạo myStudent = new Student[sl]; xuống hàm main là được.
Lý do, vì bạn để khởi tạo con trỏ trong hàm KhowiTao() thì khi thực hiện xong hàm này , hàm này bị hủy. con trỏ cũng thế. Nên khi xuống hàm Xuat, myStudent chưa có, nên chtrinh k biết xuất thông tin của ai.