Code bài tập xếp loại struct học sinh theo điểm bị lỗi

Cho em hỏi em sai chổ nào ạ. Giúp em sửa lổi ạ
Đề bài là nhập vào Họ tên, điểm tb và xếp loại theo điểm của từng HS ạ
Lỗi như này ạ
[Error] incompatible types in assignment of ‘const char [11]’ to ‘char [10]’

#include<stdio.h>
#include<conio.h>
#include<string.h>
struct Hoso
{	char HoTen[40];
	float Diem;
	char Loai[10];
};
void Nhap(struct Hoso a[], int n)
{	int i;
	for(i=0;i<n;i++)
	{	fflush(stdin);
		printf("Nhap Ho ten:");
		gets(a[i].HoTen);
		fflush(stdin);
		printf("Nhap diem:");
		scanf("%f",&a[i].Diem);
	}
}
void Xuat(struct Hoso a[],int n)
{	int i;
	printf("\t\t\tXEP LOAI VAN HOA\n");
	printf("%-30s %-10s %-12s\n","HO VA TEN","DIEM","XEP LOAI\n");
	for(i=0;i<n;i++)
	{	printf("%-30s %-10.2f %-12s\n",a[i].HoTen,a[i].Diem,a[i].Loai);
	}
}
void XepLoai(struct Hoso a[],int n)
{	int i;
	for(i=0;i<n;i++);
	{	if(a[i].Diem<5.0)	a[i].Loai="Khong dat";
		else if(a[i].Diem<7.0)	a[i].Loai="Trung binh";
			 else if(a[i].Diem<8.0)		a[i].Loai="Kha";
				  else if(a[i].Diem<9.0)	a[i].Loai="Gioi";
			 		   else 	a[i].Loai="Xuat sac";
	}
	Xuat(a,n);
}

int main(){
	int n,i,j;
	struct Hoso a[50];
	
	printf("Nhap vao so hoc sinh:");
	scanf("%i",&n);
	fflush(stdin);
	Nhap(a,n);
    Xeploai(a,n)
	getch();
	return 0 ;
}

:rofl::rofl::rofl:


Sorry, tớ sẽ nghiêm túc hơn. Dưới đây là danh sách compile error của cậu:

  1. Cậu không thể gán xâu như thế này trong C:

Cậu cần dùng strcpy.

  1. Tớ biết cậu hào phóng, cơ mà dấu ; ở sau vòng lặp for sẽ làm cậu bất ngờ khi cậu có n > 1:
  1. Cậu có

và cậu đang cố gán nó với 1 xâu có 11 chữ cái:

  1. Cậu nên lấy dấu ; ở phần 2 và để ở cuối dòng này:
  1. Cậu dùng nhầm hàm rồi.

Nó nên là XepLoai.
6. không phải lỗi, nhưng cậu có khai báo cả i và j ở hàm main nhưng quên không dùng nó.


Còn dưới đây là lời khen:

  1. Cậu format code rất sáng tạo:
  1. Tớ rất thích Hadouken style của cậu, vô cùng sáng tạo:

Tớ đoán cậu phải mất cả 30 phút để căn dấu cách đẹp như vậy!

4 Likes

nhưng là sao để sửa lổi
[Error] incompatible types in assignment of ‘const char [11]’ to ‘char [10]
gán xâu thế nào mới đúng ạ. dùng hàm trong thư viện <string.h> được không ạ.
còn mấy lổi như dấu ; , tên hàm e sẽ sửa lại.do e đánh nhầm thôi ạ

Sửa lại code rồi up lên lại đi bạn. Coi lại chổ Loai[10] tăng lên [11] thử được không, mình có trình biên dịch nào để test thử.

Không gán được đâu, mảng ko phải con trỏ.

4 Likes

Oh, sorry cậu, tớ chưa chỉ rõ.

// Fix this
a[i].Loai="Khong dat";

// to this
strcpy(a[i].Loai, "Khong dat");

strcpy ở trong string.h rồi.

3 Likes

Oke . Thanks cậu :grin::grin::grin::grin::grin::grin::grin::grin::grin::grin::grin::grin::grin:

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