Đề bài:
Viết chương trình thực hiện các yêu cầu sau:
- Khởi tạo (hoặc nhập) danh sách 5 học sinh (sử dụng con trỏ cấp phát bộ nhớ động), mỗi học sinh gồm các thông tin: họ và tên, năm sinh, giới tính, điểm trung bình cả năm.
- Chương trình cho phép người dùng chọn thực hiện 1 trong các yêu cầu sau (người dùng có thể lặp lại việc lựa chọn yêu cầu mà không cần chạy lại chương trình):
- Hiển thị danh sách học sinh vừa nhập ra màn hình sao cho thông tin mỗi học sinh trên một dòng.
- Hiển thị ra màn hình những học sinh có điểm trung bình cả năm từ 6.5 trở lên sao cho thông tin mỗi học sinh trên một dòng.
Phần đề còn lại
- Hiển thị ra màn hình tất cả học sinh nam sinh trước năm 2000 (nếu có).
- Nhập số nguyên k, khởi tạo (hoặc nhập) thông tin học sinh mới, chèn sinh viên mới vào vị trí thứ k trong danh sách, nếu giá trị k không hợp lệ thì thêm học sinh mới vào cuối danh sách, ghi danh sách ra file hocsinh.bnr.
- Xóa hết những học sinh sinh năm 2000 trong danh sách, sau đó ghi danh sách ra file “hocsinh.bnr”.
Đây là code của mình:
#include <iostream>
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <iomanip>
using namespace std;
struct SinhVien{
char hoten[50], diachi[50];
int namsinh;
float DtBN;
};
typedef SinhVien* List;
void nhapSV(SinhVien &sv);
void nhapDS(List &s, int &n);
void hienSV(SinhVien sv);
void hienDS(List s, int n);
void hienDSd(SinhVien sv, List s, int n);
int main()
{
SinhVien sv;
List s;
int n,chon;
nhapDS(s,n);
loop:
cout<<"\n Hay chon 1 viec ma ban can: "<<endl;
cout<<" 1. Hien thi danh sach sinh vien"<<endl;
cout<<" ";
cout<<" Ban chon viec nao: "; cin>>chon;
switch(chon)
{
case 1: hienDS(s,n);break;
case 2: hienDSd(sv,s,n);break;
case 3: return 0;break;
default: cout<<"Chon sai, hay chon lai.";
}
goto loop;
return 0;
}
void nhapSV(SinhVien &sv)
{
cout<<"Ho va ten: ";
fflush(stdin);
gets(sv.hoten);
cout<<"Dia chi: ";
fflush(stdin);
gets(sv.diachi);
cout<<"Nam sinh: "; cin>>sv.namsinh;
cout<<"Diem trung binh nam: "; cin>>sv.DtBN;
}
void nhapDS(List &s, int &n)
{
cout<<"Nhap vao thong tin sinh vien: "<<endl;
cout<<"nhap so luong sinh vien: "; cin>>n;
s = new SinhVien[n];
for(int i=0; i<n; i++)
{
cout<<"Sinh vien thu "<<i+1<<" : ";
nhapSV(s[i]);
}
}
void hienSV(SinhVien sv)
{
cout<<setw(20)<<left<<sv.hoten;
cout<<setw(20)<<left<<sv.diachi;
cout<<setw(12)<<right<<sv.namsinh;
cout<<setw(12)<<right<<sv.DtBN<<endl;
}
void hienDS(List s,int n)
{
cout<<setw(20)<<left<<"Ho va ten";
cout<<setw(20)<<left<<"Dia chi";
cout<<setw(12)<<right<<"Nam sinh";
cout<<setw(12)<<right<<"DTBN"<<endl;
for(int i=0; i<n; i++)
hienSV(s[i]);
}
void hienDSd(SinhVien sv,List s, int n)
{
cout<<"Danh sach hoc sinh co DTBN >= 6.5: "<<endl;
for(int i=0; i<n; i++)
if(sv.DtBN >= 6.5)
{
hienSV(s[i]);
}
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?