Mảng chạy bị lỗi

đề bài là: SV viết chương trình cho nhập và xuất ra màn hình mảng Tourists gồm 3 phần tử, mỗi phần tử gồm các thông tin: tên, tuổi, quốc tịch. Sắp xếp theo thứ tự tuổi từ thấp đến cao.
Bài này sao chỗ khai báo biến tạm để hoán vị nó lại bị lỗi ạ?, với lại em làm nó lại bị theo thứ tự giảm dần ạ

#include<stdio.h>
#include<string.h>
int main()
{
struct khach
{
	char ten[50]; 
	char quoctich[50];
	int tuoi;
}
Tourists[50];
int i,j,n;
printf("nhap so nguoi:");
scanf("%d",&n);
for(i=0;i<n;i++){
	printf("thong tin nguoi thu %d:\n",i+1);
	printf("ten:");
	getchar();
	gets(Tourists[i].ten);
	printf("tuoi:");
	scanf("%d",&Tourists[i].tuoi);
	printf("quoc tich:");
	getchar();
	gets(Tourists[i].quoctich);
}
for(i=0;i<n;i++){
	for(j=i+1;j<n;j++){
		if(Tourists[i].tuoi<Tourists[j].tuoi){
		struct khach tam;
		tam = Tourists[i].tuoi;
		Tourists[i].tuoi=Tourists[j].tuoi;
		Tourists[j].tuoi=tam;
	}
}
}
for(i=0;i<n;i++){
	printf("ten:%s\n",Tourists[i].ten);
	printf("tuoi:%d\n",Tourists[i].tuoi);
	printf("quoctich:%s\n",Tourists[i].quoctich);
}

   	return 0;
}

Gán tuoi (kiểu int) cho tam (kiểu struct Tourists struct khach).

3 Likes

nó bị lỗi như vậy ạ

Bạn vẫn chưa hiểu câu này???

3 Likes

Bạn để ý là cái khai báo struct ở trên là bạn đã tạo 1 biến tên là khach có 3 phần tử rồi. Giờ bạn muốn tạo biến khach thì chỉ cần khai báo như biến bình thường thôi, bạn dư cái struct, như vậy là đúng nè :

khach khachtam;
khachtam = Tourists[i];
Tourist[i] = Touris[j];
Tourist[j] = khachtam;

Làm như vậy bạn khỏi cần phải sao chép từng phần tử chi cho mệt lại còn dễ sai. Còn muốn thứ tự giảm dần thì chỉ cần đổi ngược lại dấu toán tử so sánh trong câu lệnh if là ok!

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