#include <iostream>
#include <malloc.h>
using namespace std;
typedef struct
{
char id[ 9 ] ;
char name[ 20 ] ;
float Marks[ 3 ] ;
float DTB;
} Student;
void xeploai ( Student S)
{
if ( S.DTB >= 8 ) cout << "Gioi" ;
else if ( S.DTB >= 7 ) cout << "Kha" ;
else if ( S.DTB >= 5 ) cout << "Trung binh" ;
else cout << "Yeu" ;
}
void nhap_sv( Student & sv)
{
cout << "Nhap id: " ;
cin .get ( sv.id , 9 ) ;
cin .ignore ( ) ;
cout << "Nhap name: " ;
cin .get ( sv.name , 20 ) ;
cout << "Marks: baitap, giuaky, cuoiky: " ;
for ( int i = 0 ; i < 3 ; i++ )
{
cin >> sv.Marks [ i] ;
}
sv.DTB = sv.Marks [ 0 ] * 0.25 + sv.Marks [ 1 ] * 0.25 + sv.Marks [ 2 ] * 0.5 ;
}
void nhapDanhSach_sv( Student* & sv, const int & n)
{
sv = ( Student* ) calloc ( n, sizeof ( Student) ) ;
if ( sv == NULL ) return ;
for ( int i = 0 ; i < n; i++ )
{
nhap_sv( sv[ i] ) ;
}
}
void xuatDanhSach_sv( Student* & sv, const int & n)
{
if ( sv == NULL ) return ;
for ( int i = 0 ; i < n; i++ )
{
cout << "Thong tin sinh vien thu " << i + 1 << "\n " ;
cout << "MSSV: " << sv[ i] .id << "\n " ;
cout << "Ho va ten: " << sv[ i] .name << "\n " ;
cout << "Diem so: Bai tap, giua ky, cuoi ky: " << "\n " ;
for ( int j = 0 ; j < 3 ; j++ )
{
cout << sv[ i] .Marks [ j] << "\t " ;
}
cout << "\n Diem trung binh: " << sv[ i] .DTB << "\n " ;
cout << "Xep loai: \n " ;
xeploai( sv[ i] ) ;
cout << "\n " ;
}
}
Student* sv_pushback( Student* & sv, int & n)
{
void * p = sv;
n++ ;
sv = ( Student* ) realloc ( p, n) ;
nhap_sv( sv[ n - 1 ] ) ;
return sv;
}
int main( )
{
Student* a;
int n;
cout << "Nhap so sinh vien n = " ;
cin >> n;
nhapDanhSach_sv( a, n) ;
xuatDanhSach_sv( a, n) ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFsbG9jLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIHN0cnVjdAp7CgljaGFyIGlkWzldOyAKCWNoYXIgbmFtZVsyMF07CglmbG9hdCBNYXJrc1szXTsKCWZsb2F0IERUQjsgCQp9U3R1ZGVudDsKCnZvaWQgeGVwbG9haSAoU3R1ZGVudCBTKQp7CglpZiAoUy5EVEIgPj0gOCkgY291dCA8PCAiR2lvaSI7CgllbHNlIGlmIChTLkRUQiA+PSA3KSBjb3V0IDw8ICJLaGEiOwoJZWxzZSBpZiAoUy5EVEIgPj0gNSkgY291dCA8PCAiVHJ1bmcgYmluaCI7CgllbHNlIGNvdXQgPDwgIllldSI7Cn0KCnZvaWQgbmhhcF9zdihTdHVkZW50ICZzdikKewoJY291dCA8PCAiTmhhcCBpZDogIjsKCWNpbi5nZXQoc3YuaWQsIDkpOwoJY2luLmlnbm9yZSgpOwoJY291dCA8PCAiTmhhcCBuYW1lOiAiOwoJY2luLmdldChzdi5uYW1lLCAyMCk7Cgljb3V0IDw8ICJNYXJrczogYmFpdGFwLCBnaXVha3ksIGN1b2lreTogIjsKCWZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKQoJewoJCWNpbiA+PiBzdi5NYXJrc1tpXTsKCX0KCXN2LkRUQiA9IHN2Lk1hcmtzWzBdICogMC4yNSArIHN2Lk1hcmtzWzFdICogMC4yNSArIHN2Lk1hcmtzWzJdKjAuNTsKfQoKdm9pZCBuaGFwRGFuaFNhY2hfc3YoU3R1ZGVudCogJnN2LCBjb25zdCBpbnQgJm4pCnsKCXN2ID0gKFN0dWRlbnQqKWNhbGxvYyhuLCBzaXplb2YoU3R1ZGVudCkpOwoJaWYgKHN2ID09IE5VTEwpIHJldHVybjsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJewoJCW5oYXBfc3Yoc3ZbaV0pOwoJfQp9Cgp2b2lkIHh1YXREYW5oU2FjaF9zdihTdHVkZW50KiAmc3YsIGNvbnN0IGludCAmbikKewoJaWYgKHN2ID09IE5VTEwpIHJldHVybjsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJewoJCWNvdXQgPDwgIlRob25nIHRpbiBzaW5oIHZpZW4gdGh1ICIgPDwgaSArIDEgPDwgIlxuIjsKCQljb3V0IDw8ICJNU1NWOiAiIDw8IHN2W2ldLmlkIDw8ICJcbiI7CgkJY291dCA8PCAiSG8gdmEgdGVuOiAiIDw8IHN2W2ldLm5hbWUgPDwgIlxuIjsKCQljb3V0IDw8ICJEaWVtIHNvOiBCYWkgdGFwLCBnaXVhIGt5LCBjdW9pIGt5OiAiIDw8ICJcbiI7CgkJZm9yIChpbnQgaiA9IDA7IGogPCAzOyBqKyspCgkJewoJCQljb3V0IDw8IHN2W2ldLk1hcmtzW2pdIDw8ICJcdCI7CgkJfQoJCWNvdXQgPDwgIlxuRGllbSB0cnVuZyBiaW5oOiAiIDw8IHN2W2ldLkRUQiA8PCAiXG4iOwoJCWNvdXQgPDwgIlhlcCBsb2FpOiBcbiI7CgkJeGVwbG9haShzdltpXSk7CgkJY291dCA8PCAiXG4iOwoJfQp9CgpTdHVkZW50KiBzdl9wdXNoYmFjayhTdHVkZW50KiAmc3YsIGludCAmbikKewoJdm9pZCogcCA9IHN2OwoJbisrOwoJc3YgPSAoU3R1ZGVudCopcmVhbGxvYyhwLCBuKTsKCW5oYXBfc3Yoc3ZbbiAtIDFdKTsKCXJldHVybiBzdjsKfQoKaW50IG1haW4oKQp7CglTdHVkZW50KiBhOwoJaW50IG47Cgljb3V0IDw8ICJOaGFwIHNvIHNpbmggdmllbiBuID0gIjsKCWNpbiA+PiBuOwoJbmhhcERhbmhTYWNoX3N2KGEsIG4pOwoJeHVhdERhbmhTYWNoX3N2KGEsIG4pOwoJcmV0dXJuIDA7Cn0=