Lỗi khi khai báo biến

E đang gặp vấn đề ở chỗ hàm sắp xếp, e vẫn chưa hiểu tại sao lại lỗi ở chỗ khai báo biến tam, hy vọng mn có thể giải đáp cho e ạ!

#include<iostream>
using namespace std;

struct sinhvien {
		char tennganh[50];
		int soluong;
	};

void nhap(sinhvien sv[]){
	int tong = 0;
	for(int i = 0; i < 3; i++){
		fflush(stdin);
		cout << "\nNhap nganh hoc thu " << i << ": ";
		gets(sv[i].tennganh);
		cout << "So luong SV: ";
		cin >> sv[i].soluong;
		tong = tong + sv[i].soluong;
	}
	cout << "\n=> Tong so sinh vien cua cac nganh la: " << tong << endl;
}

void xuat(sinhvien sv[]){
	for(int i = 0; i < 3; i++){
		cout << "\n	CHUYEN NGANH: " << sv[i].tennganh;
		cout << "\n	SO LUONG SV: " << sv[i].soluong << endl;
	}
}

void sapxep(sinhvien sv[]){
        sinhvien tam;
	for(int i = 0; i < 3; i++){
		for(int j = i + 1; j < 3; j++){
			if(sv[i].soluong > sv[j].soluong){
				tam = sv[i].soluong;
				sv[i].soluong = sv[j].soluong;
				sv[j].soluong = tam;
			}
		}
	}
}

int main(){
	sinhvien sv[3];
	nhap(sv);
	cout << "\nDanh sach ten nganh va so sinh vien cua nganh ban da nhap la: " << endl;
	xuat(sv);
	sapxep(sv);
	cout << "\nSap xep tang dan so luong SV cua cac nganh: " << endl;
	xuat(sv);
	char nganh[20];
	cout << "\nNhap nganh ban muon tim kiem: ";
	fflush(stdin);
	gets(nganh);
	for(int i = 0; i < 3; i++){
		if(sv[i].tennganh == nganh){
			cout << sv[i].soluong;
		}
	}
	return 0;
}

Gán kiểu int cho kiểu struct sinhvien¿

4 Likes

e vẫn chưa hiểu lắm ạ!
e đã cho biến “tam” vào hàm struct là int tam; mà vẫn ko dc ạ??
e cx thử int struct sinhvien cx ko dc?
a giải thích giúp e vs!

Bạn swap mỗi key (số lượng) là hỏng hết dữ liệu rồi còn gì.

2 Likes

Khi sắp xếp mảng số thì bạn viết 3 dòng kia thế nào?

Bạn nên nhớ (biết) là sắp xếp là định vị lại vị trí của phần tử trong mảng.
3 dòng trên có định vị lại phần tử trong mảng chưa?
Tất nhiên là không, 3 dòng kia chỉ thay đổi giá trị của phần tử trong mảng, KHÔNG thay đổi vị trí.

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