Bác nào có thể giúp em tại sao có đường dài chạy khắp chương trình khi chạy được không ạ, cách sửa nó thì phải làm sao ạ (Thầy em chỉ rồi em không nhớ cách sửa lại )
tập tin txt của em có dạng
#include<conio.h>
#include<stdio.h>
#include <time.h>
#include <string>
#include<iostream>
using namespace std;
typedef struct _sinhvien {
char strTen[100];
char strMaso[100];
float diemToan;
float diemLy;
float diemHoa;
}SinhVien;
void docDanhSachSinhVien(SinhVien * p, const int numSinhVien, const char * filename)
{
}
void chuanHoaSinhVien(char *str, SinhVien &sv) {
char *pch;
pch = strtok(str, ";");
int i = 0;
while (pch != NULL) {
char tmpBuffer[100];
strncpy(tmpBuffer, pch, strlen(pch));
if (0 == i) {
memset(sv.strTen, 0, 100);
strncpy(sv.strTen, tmpBuffer, strlen(tmpBuffer));
}
else if (1 == i) {
memset(sv.strMaso, 0, 100);
strncpy(sv.strMaso, tmpBuffer, strlen(tmpBuffer));
}
else if (2 == i) {
sv.diemToan = (float)atof(pch);
}
else if (3 == i) {
sv.diemLy = (float)atof(pch);
}
else if (4 == i) {
sv.diemHoa = (float)atof(pch);
}
pch = strtok(NULL, ";");
i = i + 1;
}
}
void docDanhSachSinhvien(SinhVien *p, const int numSinhVien, char * filename) {
FILE *fb;
size_t len = 0;
fb = fopen(filename, "r");
if (fb == NULL) {
cout << "Khong the doc file" << filename << endl;
exit(-1);
}
char line[100];
int i = 0;
while ((fgets(line, sizeof(line), fb)) != NULL) {
chuanHoaSinhVien(line, p[i]);
i = i + 1;
}
cout << endl;
fclose(fb);
}
void xuatSinhVien(SinhVien sv) {
cout << "Ten: " << sv.strTen << " , ma so: " << sv.strMaso
<< ", diem Toan: " << sv.diemToan
<< ", diem Ly: " << sv.diemLy
<< ", diem Hoa: " << sv.diemHoa << endl;
}
float tinhTongDiem(SinhVien sv) {
return (sv.diemToan + sv.diemLy + sv.diemHoa);
}
int timSinhVienTongDiemCaoNhat(SinhVien *p, const int numSinhVien) {
int max_index = 0;
for (int i = 1; i < numSinhVien; i++) {
if (tinhTongDiem(p[i]) > tinhTongDiem(p[max_index])) {
max_index = i;
}
}
return max_index;
}
void hoanViSinhVien(SinhVien &a, SinhVien &b) {
SinhVien tmp = a;
a = b;
b = tmp;
}
void sapXepSinhVien(SinhVien *p, const int numSinhVien) {
for (int i = 0; i < numSinhVien - 1; i++) {
int min_index = i;
for (int j = i + 1; j < numSinhVien; j++) {
if (tinhTongDiem(p[j]) < tinhTongDiem(p[min_index])) {
min_index = j;
}
}
if (min_index != i) {
hoanViSinhVien(p[i], p[min_index]);
}
}
}
void docDanhSachSinhVien(SinhVien *p, const int numSinhVien, const char* filename);
void chuanHoaSinhVien(char *str, SinhVien &sv);
void xuatSinhVien(SinhVien sv);
float tinhTongDiem(SinhVien sv);
void hoanViSinhVien(SinhVien &a, SinhVien &b);
void sapXepSinhVien(SinhVien *p, const int numSinhVien);
int timSinhVienTongDiemCaoNhat(SinhVien *p, const int numSinhVien);
int main(int argc, char *argv[]) {
int const numSinhVien = 10;
SinhVien *pSinhVien = (SinhVien*)malloc(numSinhVien * sizeof(SinhVien));
if (pSinhVien != NULL) {
docDanhSachSinhVien(pSinhVien, numSinhVien, "sinhvien.txt");
for (int i = 0; i < numSinhVien; i++) {
xuatSinhVien(pSinhVien[i]);
}
int index = timSinhVienTongDiemCaoNhat(pSinhVien, numSinhVien);
cout << "Sinh vien co tong diem cao nhat tai vi tri la"
<< index << endl;
xuatSinhVien(pSinhVien[index]);
cout << "Mang sinh vien sau khi sap xep" << endl;
sapXepSinhVien(pSinhVien, numSinhVien);
for (int i = 0; i < numSinhVien; i++) {
xuatSinhVien(pSinhVien[i]);
}
}
if (pSinhVien != NULL) {
free(pSinhVien);
pSinhVien = NULL;
}
_getch();
}


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