01/10/2018, 11:37

Nhờ mọi người debug hộ...sắp xếp sv theo điểm giảm dần..struct

#include <iostream>
#include <string.h>

using namespace std;

struct sinhvien 
{
	char hoten[50];
	char gioitinh[5];
	float diem;	
};

void nhap (int &n,sinhvien sv[]) {

	for (int i=0;i<n;i++) {
		fflush(stdin);
		cout<<"hoten: ";
		gets(sv[i].hoten);
		cout<<"diem: ";
		cin>>sv[i].diem;
		cout<<"gioi tinh: ";
		cin>>sv[i].gioitinh;
	}
}

void sapxep (int &n, sinhvien sv[]) {

	for (int i=0;i<n-1;i++) {
		for (int j=0;j<n;j++) {
			if(sv[i].diem < sv[j].diem) {
				sinhvien t =sv[i].diem;
				sv[i].diem=sv[j].diem;
				sv[j].diem = sinhvien t;
			}
		}
	}
}

void xuat (int &n, sinhvien sv[]) {
	for (int i=0;i<n;i++) {
		cout<<sv[i].hoten<<endl<<sv[i].diem<<endl<<sv[i].gioitinh<<endl;
	}
}
main () {
	
	sinhvien sv[10];
	int n;
	cin>>n;
	nhap(n,sv);
	sapxep (n,sv);
	xuat (n,sv);
	
}
nghia viết 13:44 ngày 01/10/2018

Chào new!
Bạn bị lỗi gì vây có thể miêu tả chi tiết đc ko?

new viết 13:52 ngày 01/10/2018

lỗi chỗ sắp xếp b à…bạn thử chạy xem hộ mình

HK boy viết 13:47 ngày 01/10/2018
sinhvien t =sv[i].diem;
sv[i].diem=sv[j].diem;
sv[j].diem = sinhvien t;

Bạn đọc lại kĩ đoạn này cho mình nhé. Bạn swap cả sinh viên hay chỉ swap điểm? Bạn khai báo tiếp sinhvien t ở cuối làm gì?

P/s: Không vào được trang cá nhân của thớt :v nick này như kiểu nick ấy nhỉ :v

nghia viết 13:40 ngày 01/10/2018

Chào New!

  1. Bạn cần tối ưu thuật toán nha!
  2. Sai! gán 1 kiểu int cho 1 struct sinhvien t =sv[i].diem;
  3. Bạn đang hoán vị điểm của sinh viên chứ đâu hoán đổi sinh viên!
sv[i].diem=sv[j].diem;
new viết 13:47 ngày 01/10/2018

ok r b…debug thành công …tks u

new viết 13:37 ngày 01/10/2018

ok b…chỉ sv[i]= sv[j] …đã sưa đk r…tks

Bài liên quan
0