01/10/2018, 10:25
Nhờ mọi người sửa code vòng for()
đề bài của mình là tìm trong danh sách sinh viên nữ có điểm trung bình nhỏ nhất
vòng for thứ 2 mình k biết sửa thế nào cho hợp lý
void timnu(sinhvien ds[], int n)
{
int i;
int x;
char nu[5];
for(i=0;i<n;i++)
{
if(strcmp(nu,ds[i].gioitinh)==0)
{
int min=ds[0].diemtb;
for(i=0;i<n;i++)
if(ds[i].diemtb<min)
{
min = ds[i].diemtb;
x=i;
}
}
}
}
Bài liên quan
Bạn khai báo một biến
min_gì_đấy
và biếnvị_trí
cho giá trị khởi điểm của chúng bằng-1
(Nếu bạn thắc mắc tại sao điểm trung bình có thể âm thì tí nữa ta sẽ có câu trả lời).Kế đến bạn cho vòng
for
lấy giá trị của các học sinh từ học sinh thứ nhất (phần tử thứ0
.) tới học sinh cuối cùng (phần tử thứn - 1
) Trong quá trình lặp, bạn sẽ kiểm tra nếu học sinh đó cógioitinh
là nữ không? Nếu có thì ta sẽ tiếp tục xử lí.Kế đến bạn sẽ so sánh điểm trung bình với biến
min_gì_đấy
và xử lí với biếnvị_trí
. Việc này là của bạn.Sau khi duyệt xong hết tất cả các phần tử. Nếu biến
min_gì_đấy
mà bằng-1
thì là rất vô lí vì không có điểm trung bình nào mà âm cả. Do đó không có học sinh nữ nào để tao có thể lấy điểm. Còn nếu ngược lại thì ta sẽ cóvị_trí
.Code bạn chưa khởi tạo cho
nu[]
. Để code gọn đẹp thì ngoài post trên ra ban đầu nên set min bằng 999, khi gặp tới đó thì min tự xuống đúng bằng số đầu. Nếu min vượt quá 10 hay dưới 0 nhưng vị trí hợp lệ tức là lỗi