Chào mọi người, hôm này em có làm 1 hàm chuyển 1 cấu trúc số (ví dụ 2 3 ) ở tệp này sẽ thành (2/3) ở tệp kia. Code của em như vậy.
void Read_sort_wirte(istream& inDev, ostream& outDev)//Hàm BAI3
{
int n = 0;
//=========================READ=====================
PhanSo trash;
PhanSo* pArr = nullptr;
while (inDev >> trash)// Dùng để nhập dữ liệu phân số từ thiết bị nhập một cách tùy chọn
{
if (inDev.fail()){
delete[] pArr;
pArr = nullptr;
break;
}
Chen_mang_phan_so(pArr, n, trash);
}
//=========================SORT=====================
////==================LAP MANG SO THUC==============
float* fArr = nullptr;
float* fArr_new = (float*)realloc(fArr, n + 1 * sizeof(float));//Lập một mảng số thực nhằm tính giá trị gần đúng của từng phân số của mảng phân số
if (fArr_new != nullptr)
{
for (int i = 0; i < n; i++)
{
fArr_new[i] = (float)pArr[i].tu / pArr[i].mau;
}
fArr = fArr_new;
}
////==================SORT=========================
for (int i = 0; i < n - 1; i++)
{
for (int y = i + 1; y < n; y++)
{
if (fArr[i] >fArr[y])
{
float temp = fArr[i];//Em không dùng hoán vị phương thức template <class T> cho hàm được ạ, nó bị lỗi , như nó bảo phải dùng trong main hay sao ấy thầy, thấy chỉ em với.
fArr[i] = fArr[y];
fArr[y] = temp;
PhanSo tempp = pArr[i];
pArr[i] = pArr[y];
pArr[y] = tempp;
}
}
}
//==================WRITE=====================
for (int i = 0; i < n; i++)
{
outDev << pArr[i];
}
delete[] pArr;
//delete[] fArr;
}
Và khi em xóa ô nhớ của fArr thì em mắc debug và k thể hiểu tại sao, mọ người giúp em với ạ.