Code danh sách sinh viên bị lỗi

Mọi người giúp em fix lỗi này được không ạ, em là ma mới nên chưa thạo tay lắm, cảm ơn mọi người nhiều ạ

#include<stdio.h>
#include<string.h>
#include <stdarg.h> // Nham cho muc dich xay dung ham voi tham so tuy y khong limit so luong 

typedef struct date{
	int dayday;
	int monthmonth;
	int yyyy;
}DATE;

 typedef struct SinhVien
{ 
     int MasoSV; //...char MasoSV[10]; 
     int MaLop;
     char hoTen[30];
     DATE ngaysinh;
     char gt[5];
     float diemThi;
}SV;


void NhapDOB(DATE &d);
SV NhapInfo(SV s);
void Nhapvao(SV *s);
void XuatInfo(SV s);
void sapxepten(SV *s,int n);
//void Xuatsapxepten(SV a[],int n);
void sapxepdiemthitang(SV *s, int n);
//void XuatSXdiemThi(SV a[],int n);
//void NHANDANGcacSVcunglop(SV a[],int n);
//void XuatSVcunglop(SV a[],int n);
int SoSanhMaLop(SV x,SV y);
int kq(SV x,SV y);
void SapxepdiemthigiamdanSVinthesameclass(SV *s,int n);
void hoanvi(SV *s1, SV *s2);




void NhapDOB(DATE &d)
{
	printf("\nNhap ngay sinh cua sinh vien: ",d.dayday,d.monthmonth,d.yyyy);
}

SV NhapInfo(SV s)
{
	printf("\nNhap ma so sinh vien: ");
	scanf("%d",&s.MasoSV);
	printf("\nNhap ma lop: ");
	scanf("%d",&s.MaLop);
	printf("\nNhap ten: "); 
	fflush(stdin); 
	gets(s.hoTen);
    printf("\nNhap gioi tinh: "); 
	gets(s.gt);
    printf("\nInput Date of Birth: "); 
	scanf("%2d/%2d/%4d",&s.ngaysinh.dayday,&s.ngaysinh.monthmonth,&s.ngaysinh.yyyy);
    printf("\nNhap diem thi cua sinh vien: "); 
	scanf("%.2f", &s.diemThi);
	
 return s;
}

void Nhapvao(SV *s)
{
	printf("\nNhap ma so sinh vien: ");
	scanf("%d",&s->MasoSV);
	printf("\nNhap ma lop: ");
	scanf("%d",&s->MaLop);
	printf("\nNhap ten: "); 
	fflush(stdin); 
	gets(s->hoTen);
    printf("\nNhap gioi tinh: "); 
	gets(s->gt);
    printf("\nInput Date of Birth: "); 
	scanf("%2d/%2d/%4d",&s->ngaysinh.dayday,&s->ngaysinh.monthmonth,&s->ngaysinh.yyyy);
    printf("\nNhap diem thi cua sinh vien: "); 
	scanf("%.2f", &s->diemThi);
	
}
void XuatInfo(SV s)
{
	printf("\nMa so sinh vien: %d ;",s.MasoSV);
	printf("\nMa lop: %d ;",s.MaLop);
    printf("\nHo ten SV: %s ;", s.hoTen);
    printf("\nGioi tinh: %s ;", s.gt);
    printf("\nDOB  : %2d/%2d/%4d ;",s.ngaysinh.dayday,s.ngaysinh.monthmonth,s.ngaysinh.yyyy);
    printf("\nDiem thi cua sinh vien: %.2f ;", s.diemThi);
}

void hoanvi(SV *s1,SV *s2)
{
	SV k;
	k=*s1;
	*s1=*s2;
	*s2=k;
}

//SAP XEP Theo Ten ABC
void sapxepten(SV *s,int n)
{
	int i,j;
	for(int i=0;i<n-1;++i)
	{
		for(int j=i+1;j<n;++j)
		{
		   if(strcmp(s[i].hoTen,s[j].hoTen)==1)
		  {
		hoanvi(&s[i],&s[j]);
		  }
		}
	} 
}



//SAP XEP theo diemThi tang dan
void sapxepdiemthitang(SV *s, int n)
{
    //Sap xep theo Diemthi tang dan
    
    int i,j;
    for(int i=0;i<n-1;++i){
        for(int j=i+1;j<n;++j){
            if(s[i].diemThi > s[j].diemThi){
            	//Hoanvi 2 so s[i] & s[j]
               hoanvi(&s[i],&s[j]);
            }
        }
    }
}
void SapxepdiemthigiamdanSVinthesameclass(SV *s,int n)
    //Sap xep theo Diemthi giam dan cua cac sv cung lop
{
  
    int i,j;
    for(int i=0;i<n-1;++i){
        for(int j=i+1;j<n;++j){
            if(s[i].diemThi < s[j].diemThi){
                // Hoanvi 2 so s[i] & s[j]
                hoanvi(&s[i],&s[j]);       
            }
        }
    }
}
int SoSanhMaLop(SV x,SV y)
{
    int ML1 = x.MaLop;
    int ML2 = y.MaLop;
    if (ML1 == ML2)
        {printf("\nMa lop 1 trung Ma lop 2\n");} true;
    if (ML1 != ML2)
        {printf("\nMa lop 1 khac voi Ma lop 2\n");} false;
}


int main(){
	SV s[100];
	SV x,y;
	SV kq;
	int n,i,j;
	int DSSV;
	
	do{
		printf("\nCHUONG TRINH INFORMATION of STUDENTS:\n-------------------------------------------------\n");
		      printf("1.Nhap thong tin sinh vien\n");
		      printf("2.Sap xep thu tu theo ten sinh vien\n");
		      printf("3.Sap xep thu tu theo diem thi sinh vien\n");
		      printf("4.Nhan dien sinh vien cung lop\n");
		      printf("5.Xet diem thi theo thu tu giam dan cua cac sinh vien cung lop\n");
		    printf("Nhap vao 1...4 de thuc hien cong viec can xac dinh trong program: ");
		    scanf("%d",&DSSV);
		    switch(DSSV){
		    	case 1:{
		    		printf("1.Nhap thong tin sinh vien\n");
		    		Nhapvao(s,&n);
					break;
				}
				case 2:{
					
					printf("2.Thong tin sinh vien sau khi hoan tat nhap:\n-----------------------------------\n");
					XuatInfo(s,n);
					break;
				}
				case 3:{
					
					printf("3.Sap xep thu tu theo ten sinh vien\n");
					NhapInfo(s,&n);
					sapxepten(s,n);
					for (i=1;i<=n;++i)
					XuatInfo(s,n);
					break;
				}
				case 4:{
					//tang dan
					printf("4.Sap xep thu tu theo diem thi sinh vien\n");
					NhapInfo(s,&n);
					sapxepdiemthitang(s,n);
					for (i=1;i<=n;++i)
					XuatInfo(s,n);
					break;
				}
				case 5:{
					
					printf("5.Nhan dien sinh vien cung lop\n");
					int kq = SoSanhMaLop (x,y);
                           //SoSanh (x,y)=(malop1, malop2);
                           XuatInfo(x);XuatInfo(y);
                            true;{printf("Sinh Vien cung lop: %d");}
							false;{printf("Sinh Vien khac lop!");}    
    
					break;
				}
				case 6:{
					
					printf("6.Xet diem thi theo thu tu giam dan cua cac sinh vien cung lop\n");
					NhapInfo(s,&n);
					SapxepdiemthigiamdanSVinthesameclass(s,n);
					for (i=1;i<=n;++i)
					XuatInfo(s,n);
					break;
				}
			}
	} while (DSSV != 6);
		
	return 0;
}
[Error] too many arguments to function 'void Nhapvao(SV*)'
[Error] could not convert '(SV*)(& s)' from 'SV* {aka SinhVien*}' to 'SV {aka SinhVien}'

Ở phần prototype của hàm Nhapvao phía trên bạn viết là void Nhapvao(SV *s); chỉ có một tham số, còn lúc bạn gọi ở dưới thì bạn lại truyền thêm cả &n vào luôn. Nên compiler mới báo:

[Error] too many arguments to function 'void Nhapvao(SV*)'

Khi gọi hai hàm NhapInfoXuatInfo bạn cũng bị lỗi tương tự.

4 Likes

cảm ơn bạn nhiều lắm

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?