Advertisement
anhkiet2507

DANH SACH SINH VIEN - 3

Sep 12th, 2021
2,188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.40 KB | None | 0 0
  1. #include<iostream>
  2. #include<cmath>
  3. #include<iomanip>
  4. #include<string>
  5. #include<stdio.h>
  6. #include<vector>
  7. #include<sstream>
  8. using namespace std;
  9. struct SinhVien{
  10.     string MaSinhVien;
  11.     string TenSinhVien;
  12.     string Lop;
  13.     string NgaySinh;
  14.     float GPA;
  15. };
  16. string ChuanHoaNgaySinh(string s){
  17.     for(int j = 0 ; j < s.length();j++)
  18.      {
  19.          if(s[2] != '/')
  20.          {
  21.              s.insert(0,"0");
  22.          }
  23.          else if(s[5] !='/')
  24.          {
  25.              s.insert(3,"0");
  26.          }
  27.      }
  28.     return s;
  29. }
  30. void ChuanHoa(string &s){
  31.     s[0] = toupper(s[0]);
  32.     for(int i = 1; i < s.length(); i++){
  33.         s[i] = tolower(s[i]);
  34.     }
  35.    
  36. }
  37. string ChuanHoaHoTen(string &s){
  38.     vector<string> v;
  39.     stringstream ss(s);
  40.     string tmp;
  41.     string res="";
  42.     while(ss>>tmp) v.push_back(tmp);
  43.     for(int i = 0; i<v.size(); i++){
  44.         ChuanHoa(v[i]);
  45.     }
  46.     for(int i = 0; i<v.size(); i++){
  47.         res+=v[i];
  48.         if(i!=v.size()-1){
  49.             res+=' ';
  50.         }
  51.     }
  52.     return res;
  53. }
  54. string MaSinhVien(int i){
  55.     stringstream ss;
  56.     string s;
  57.     ss << "B20DCCN"<< setfill('0') << setw(3) <<i+1;
  58.     ss >> s;
  59.     return s;
  60. }
  61. void nhap(struct SinhVien sv[],int N){
  62.     for(int i = 0; i<N; i++){
  63.         scanf("\n");
  64.         fflush(stdin);
  65.         sv[i].MaSinhVien = MaSinhVien(i);
  66.         fflush(stdin);
  67.         getline(cin, sv[i].TenSinhVien);
  68.         sv[i].TenSinhVien = ChuanHoaHoTen(sv[i].TenSinhVien);
  69.         fflush(stdin);
  70.         getline(cin, sv[i].Lop);
  71.         fflush(stdin);
  72.         getline(cin, sv[i].NgaySinh);
  73.         sv[i].NgaySinh = ChuanHoaNgaySinh(sv[i].NgaySinh);
  74.         fflush(stdin);
  75.         cin >> sv[i].GPA;
  76.         scanf("\n");
  77.     }
  78. }
  79. void sapxep(struct SinhVien sv[], int N){
  80.     for(int i = 0; i<N-1; i++){
  81.         for(int j = i+1; j<N; j++){
  82.             if(sv[i].GPA<sv[j].GPA){
  83.                 struct SinhVien temp = sv[i];
  84.                 sv[i] = sv[j];
  85.                 sv[j] = temp;
  86.             }
  87.         }
  88.     }
  89. }
  90. void in(struct SinhVien sv[], int N){
  91.     for(int i = 0; i<N; i++){
  92.         cout << sv[i].MaSinhVien << " " << sv[i].TenSinhVien << " " << sv[i].Lop << " " << sv[i].NgaySinh << " " << fixed << setprecision(2) << sv[i].GPA << endl;
  93.     }
  94. }
  95.  
  96. int main(){
  97.     struct SinhVien ds[50];
  98.     int N;
  99.     cin >> N;
  100.     nhap(ds, N);
  101.     sapxep(ds,N);
  102.     in(ds, N);
  103.     return 0;
  104. }
  105.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement