Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 20
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Quản lí danh sách sinh viên!

    Anh chị giúp em làm bài tập này với.
    Nhập vào họ tên SV,Mã SV,Điểm Toán, Điểm lý,điểm hóa. Yêu cầu:
    +Tính Điểm trung bình,Xong rùi xuất ra các thông tin trên(cái này thì em làm được rồi).
    +Sắp xếp điểm trung bình theo thứ tự tăng dần trong mảng.
    +Xóa Một sinh viên bất kì trong mảng, bằng cách nhập vào mã SV.
    +Xếp loại học lực: nếu Điểm TB>=8 thì giỏi,>=7 thì khá,>=5 thì trung bình,<5 thì kém...
    Anh chị giúp dùm em với nhé....Em mới học nên mò hoài hông ra àh..

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mã nguồn PHP:
    #include<iostream.h>#include<stdio.h>struct sinhvien{ long masv; float dt,dl,dh,tb; char hoten[20]; };void nhap(sinhvien sv[],int n){ for(int i=0;i<n;i++) { cout<<"sinh vien thu "<<i+1<<"
    "; cout<<"Nhap ho va ten:"; gets(sv[i].hoten); cout<<"Nhap ma sinh vien: "; cin>>sv[i].masv; cout<<"Nhap diem toan:"; cin>>sv[i].dt; cout<<"Nhap diem ly:"; cin>>sv[i].dl; cout<<"Nhap diem hoa:"; cin>>sv[i].dh; sv[i].tb=(sv[i].dt+sv[i].dl+sv[i].dh)/3; }}void xuat(sinhvien sv[],int n){ for(int i=0;i<n;i++) { cout<<"sinh vien thu "<<i+1<<"
    "; cout<<"
    Ho la:"<<sv[i].hoten<<"
    "; cout<<"
    Ma sv:"<<sv[i].masv<<"
    "; cout<<"
    Diem toan la:"<<sv[i].dt<<"
    "; cout<<"
    Diem ly la:"<<sv[i].dl<<"
    "; cout<<"
    Diem hoa la:"<<sv[i].dh<<"
    "; cout<<"
    Diem trung binh la:"<<sv[i].tb<<"
    "; } }void sapxepdtb(sinhvien sv[],int n){ sinhvien t; for(int i=0;i<n-1;i++) for(int j=i+1;j<n;j++) if(sv[i].tb>sv[j].tb) { t=sv[i]; sv[i]=sv[j]; sv[j]=t; }}void xoasv(sinhvien sv[],int &n,long x){ for(int i=0;i<n;i++) if(sv[i].masv==x) { for(int j=i;j<n-1;j++) sv[j]=sv[j+1]; n--; }}void main(){ sinhvien sv[20]; int n; long x; cout<<"
    Moi nhap so luong sv: "; cin>>n; cout<<"Moi ban nhap thong tin ve sv:"; nhap(sv,n); cout<<"Xuat danh sach sv: "; xuat(sv,n); cout<<"Sap xep theo diem tb tang dan: "; xuat(sv,n); sapxepdtb(sv,n); cout<<"nhap ma sv can xoa: "; cin>>x; cout<<"danh sach sau khi xoa: "; xoasv(sv,n,x); xuat(sv,n);}  
    còn câu cuối mình chưa làm

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Còn câu xếp loại thì bạn nên dùng hàm strcpy()
    Mã:
    void xeploai (sinhvien sv[],int n)
    {
    for (int i=0;i<n;i++)
    if (sv[i].tb<=10)&& (sv.[i].tb>=8)
    strcpy(sv.xeploai,"Gioi")
    else
    if (sv[i].tb>=7)
    strcpy(sv.xeploai,"Kha")
    else
    if (sv[i].tb>=5)
    strcpy(sv.xeploai,"TB")
    else
    strcpy(sv.xeploai,"TB")
    }

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi hoang minh nguyen
    còn câu cuối mình chưa làm
    Góp ý tý nha: Code cũng được, nhưng trong bài này, nếu đã sử dụng iostream.h thì khỏi cần stdio.h. Hơn nữa, trước khi gọi hàm nhap() đã có cin >> n; vì vậy trong body của nhập cần thay gets(sv[i].hoten); bởi char ch;cin.get(ch);cin.getline(sv[i].hoten,20);. Trong struct sinhvien Không nên có db vì nó được tính thông qua dt,dl,dh.

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi a1master.moon
    Còn câu xếp loại thì bạn nên dùng hàm strcpy()
    Mã:
    void xeploai (sinhvien sv[],int n)
    {
    for (int i=0;i<n;i++)
    if (sv[i].tb<=10)&& (sv.[i].tb>=8)
    strcpy(sv.xeploai,"Gioi")
    else
    if (sv[i].tb>=7)
    strcpy(sv.xeploai,"Kha")
    else
    if (sv[i].tb>=5)
    strcpy(sv.xeploai,"TB")
    else
    strcpy(sv.xeploai,"TB")
    }
    Theo mình thì không nên đưa thêm xeploai vào cấu trúc sinhvien mà nên khai báo mảng loai, viết hàm xeploai() như sau:

    Mã:
    char *loai[] = {"Gioi", "Kha","Trung binh","Kem"};int xeploai(sinhvien a){    float tb = (a.dt+a.dl+a.dh)/3;    if (tb >=8) return 0;    if (tb >=7) return 1;    if (tb >=5) return 2;    return 3;}
    Với sv[k] thì loại được xếp sẽ là loai[xeploai(sv[k])]

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    t đề xuất code như sau:
    Mã:
    #include "conio.h"
    #include "stdio.h"
    #include "string.h"
    
    typedef struct SV
    {
    char msv[5],ht[15];
    float dt,dl,dh,dtb;
    char xeploai[5];
    }sv;
    
    void nhap(sv ds[],int &dem)
    {
    	char ma[5],ten[15];
    	float t,l,h;
    	int i=1;
    	do{
    	printf("
    Sinh vien thu a[%d]",i);
    	printf("
    Nhap ma sinh vien:");gets(ma);
    	if(strcmp(ma,"*")!=0)
    		{
    		strcpy(ds[i].msv,ma);
    		printf("Nhap ten sinh vien:");gets(ten);
    		strcpy(ds[i].ht,ten);
    		printf("Diem toan:");scanf("%f",&t);
    		ds[i].dt=t;
    		printf("Diem ly:");scanf("%f",&l);
    		ds[i].dl=l;
    		printf("Diem hoa:");scanf("%f",&h);
    		ds[i].dh=h;
    		fflush(stdin);
    		printf("
    ========================");
    		ds[i].dtb=(float)(ds[i].dt+ds[i].dl+ds[i].dh)/3;
    		i++;
    		}
    	}while(strcmp(ma,"*")!=0);
    	dem=i;
    }
    
    void xuat(sv ds[],int dem)
    {
    for(int i=1;i<dem;i++)
    printf("
    %5s %15s %3.2f %3.2f %3.2f %3.2f ",ds[i].msv,ds[i].ht,ds[i].dt,ds[i].dl,ds[i].dh,ds[i].dtb);
    }
    
    void sxep(sv ds[],int dem)
    {
    	sv tg;
    for(int i=1;i<dem-1;i++)
    for(int j=i+1;j<dem;j++)
    if(ds[i].dtb>ds[j].dtb)
    	{
    	tg=ds[i];
    	ds[i]=ds[j];
    	ds[j]=tg;
    	}
    }
    
    int test(sv ds[],int dem,char mx[])
    {
    int k,d=0;
    for(int i=1;i<dem;i++)
    if(strcmp(ds[i].msv,mx)==0)
    d++;
    return d;
    }
    
    void xeploai(sv ds[],int dem)
    {
    for(int i=1;i<dem;i++)
    	{
    if(ds[i].dtb>=8)
    	strcpy(ds[i].xeploai,"gioi");
    if(ds[i].dtb>=7 && ds[i].dtb<8)
    	strcpy(ds[i].xeploai,"kha");
    if(ds[i].dtb>=5 && ds[i].dtb<7)
    	strcpy(ds[i].xeploai,"tb");
    if(ds[i].dtb>=0 && ds[i].dtb<5)
    	strcpy(ds[i].xeploai,"yeu");
    	}
    }
    
    void xuatxeploai(sv ds[],int dem)
    {
    for(int i=1;i<dem;i++)
    printf("
    %5s %15s %3.2f %5s ",ds[i].msv,ds[i].ht,ds[i].dtb,ds[i].xeploai);
    }
    
    void main()
    {
    	sv ds[50];
    	char mx[5];
    	int dem=0,j=1;
    	clrscr();
    	nhap(ds,dem);
    	printf("
    Danh sach nhap vao:");
    	xuat(ds,dem);
    	printf("
    Danh sach sau khi sap xep:");
    	sxep(ds,dem);
    	xuat(ds,dem);
    	printf("
    Nhap ma sinh vien can xoa:");gets(mx);
    	if(test(ds,dem,mx)==0)
    	printf("
    Khong tim thay sinh vien co ma '%s'.",mx);
    	else
    	{
    	for(int i=1;i<dem;i++)
    	if(strcmp(ds[i].msv,mx)!=0)
    		{
    		ds[j]=ds[i];
    		j++;
    		}
    	dem=j;
    	printf("
    Danh sach sinh vien sau khi xoa:");
    	xuat(ds,dem);
    	}
    	printf("
    Danh sach xep loai sinh vien:");
    	xeploai(ds,dem);
    	xuatxeploai(ds,dem);
    	getch();
    }
    muốn đẹp hơn thì bạn hãy làm tiếp việc chỉnh sửa xuat(...) nha

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi donvuon
    Góp ý tý nha: Code cũng được, nhưng trong bài này, nếu đã sử dụng iostream.h thì khỏi cần stdio.h. Hơn nữa, trước khi gọi hàm nhap() đã có cin >> n; vì vậy trong body của nhập cần thay gets(sv[i].hoten); bởi char ch;cin.get(ch);cin.getline(sv[i].hoten,20);. Trong struct sinhvien Không nên có db vì nó được tính thông qua dt,dl,dh.
    baïn coù theå giaûi thích cho mình rõ hơn về phần này ko?

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi hoang minh nguyen
    baïn coù theå giaûi thích cho mình rõ hơn về phần này ko?
    bạn viết trên ngôn ngữ C++ thì thư viện iostream.h đã gần như bao hàm cả stdio.h
    các hàm cin.get() và cin.getline() được sử dụng trong C++;và gets() được sử dụng trong C.và bạn đã sử dụng gets() trong C sang C++.Nhưng điều này là vẫn hoàn toàn chấp nhận được chứ có sao đâu
    còn việc sử dụng thêm biến để lưu điểm trung bình cũng đc.có hay ko có ko quan trọng

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi giaicuu_505_1412
    bạn viết trên ngôn ngữ C++ thì thư viện iostream.h đã gần như bao hàm cả stdio.h
    các hàm cin.get() và cin.getline() được sử dụng trong C++;và gets() được sử dụng trong C.và bạn đã sử dụng gets() trong C sang C++.Nhưng điều này là vẫn hoàn toàn chấp nhận được chứ có sao đâu
    còn việc sử dụng thêm biến để lưu điểm trung bình cũng đc.có hay ko có ko quan trọng
    nói thật là những cái đó thầy dạy thế nào bọn mình biết vậy chứ cũng chẳng bit cái nào là C cái nào là C++,cám ơn bạn nhiều nha

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi hoang minh nguyen
    Mã nguồn PHP:
    #include<iostream.h> #include<stdio.h> struct sinhvien { long masv; float dt,dl,dh,tb; char hoten[20]; }; void nhap(sinhvien sv[],int n) { for(int i=0;i<n;i++) { cout<<"sinh vien thu "<<i+1<<"
    "
    ; cout<<"Nhap ho va ten:"; gets(sv[i].hoten); cout<<"Nhap ma sinh vien: "; cin>>sv[i].masv; cout<<"Nhap diem toan:"; cin>>sv[i].dt; cout<<"Nhap diem ly:"; cin>>sv[i].dl; cout<<"Nhap diem hoa:"; cin>>sv[i].dh; sv[i].tb=(sv[i].dt+sv[i].dl+sv[i].dh)/3; } } void xuat(sinhvien sv[],int n) { for(int i=0;i<n;i++) { cout<<"sinh vien thu "<<i+1<<"
    "
    ; cout<<" Ho la:"<<sv[i].hoten<<"
    "
    ; cout<<" Ma sv:"<<sv[i].masv<<"
    "
    ; cout<<" Diem toan la:"<<sv[i].dt<<"
    "
    ; cout<<" Diem ly la:"<<sv[i].dl<<"
    "
    ; cout<<" Diem hoa la:"<<sv[i].dh<<"
    "
    ; cout<<" Diem trung binh la:"<<sv[i].tb<<"
    "
    ; } } void sapxepdtb(sinhvien sv[],int n) { sinhvien t; for(int i=0;i<n-1;i++) for(int j=i+1;j<n;j++) if(sv[i].tb>sv[j].tb) { t=sv[i]; sv[i]=sv[j]; sv[j]=t; } } void xoasv(sinhvien sv[],int &n,long x) { for(int i=0;i<n;i++) if(sv[i].masv==x) { for(int j=i;j<n-1;j++) sv[j]=sv[j+1]; n--; } } void main() { sinhvien sv[20]; int n; long x; cout<<"Moi nhap so luong sv: "; cin>>n; cout<<"Moi ban nhap thong tin ve sv:"; nhap(sv,n); cout<<"Xuat danh sach sv: "; xuat(sv,n); cout<<"Sap xep theo diem tb tang dan: "; xuat(sv,n); sapxepdtb(sv,n); cout<<"nhap ma sv can xoa: "; cin>>x; cout<<"danh sach sau khi xoa: "; xoasv(sv,n,x); xuat(sv,n); }  
    còn câu cuối mình chưa làm
    anh ơi, em đang học lập trình C nhưng ngôn ngữ anh viết là của C++ nên em hơi khó hiểu một tí, anh có thể sửa lại dùm em được không? em cám ơn mí anh chị nhiều nha,hj.......

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •