Kiểm tra code so sánh phân số khi input từ file

Mọi người kiểm tra giúp mính tại chổ sắp xếp phân số.
khi mình run thì báo lổi chổ dấu bằng;

#include<iostream>
#include<fstream>
//#include<stdio.h>
using namespace std;
fstream f1("output.txt",ios::out);
struct phanso
{
	int tu;
	int mau;

};
struct danhsach
{
	phanso ds_ps[100];
	int n;
};
void docphanso(phanso &ps, ifstream &f)
{
	f>>ps.tu;
	f>>ps.mau;
}
void docfile(danhsach &ds, ifstream &f)
{
	f>>ds.n;
	for(int i=0;i<ds.n;i++)
	{
		docphanso(ds.ds_ps[i],f);
	}
}
void Xuat_Danh_Sach_Phan_So(danhsach ds)
{
	for (int i = 0; i < ds.n; i++)
	{
		cout << ds.ds_ps[i].tu << "/" << ds.ds_ps[i].mau << endl;
		
	}
	
}
void sapxepphanso(danhsach ds)
{
	for (int i = 0; i < ds.n; i++)
	{
		for(int j=i+1;j<ds.n;j++)
		{
			float a;
			float b;
			if(float(ds.ds_ps[i].tu)/ds.ds_ps[i].mau>float(ds.ds_ps[j].tu)/ds.ds_ps[j].mau)
			{
				 
			    float temp=float(ds.ds_ps[i].tu)/ds.ds_ps[i].mau;
			    float(ds.ds_ps[i].tu)/ds.ds_ps[i].mau=float(ds.ds_ps[j].tu)/ds.ds_ps[j].mau;
				float(ds.ds_ps[j].tu)/ds.ds_ps[j].mau=temp;
		
			}
		}
		
	}
	for (int i = 0; i < ds.n; i++)
	{
		cout << ds.ds_ps[i].tu << "/" << ds.ds_ps[i].mau ;
	}
}
int swap(float a,float b)
{
	float temp=a;
	a=b;
	b=temp;
}
int main()
{
	
	
	ifstream f;
	f.open("input.txt",ios_base::in); // mo de doc file
	danhsach ds;
	docfile(ds,f);
	Xuat_Danh_Sach_Phan_So(ds);
	//sapxepphanso( ds);
	
	return 0;
}

Có kiểu gán a/b=c nữa sao bạn?
Thế thì a sẽ bằng bao nhiêu và b sẽ bằng bao nhiêu?
Vế bên trái (lvalue) phải là giá trị biến độc lập chứ đâu phải phép tính.

float a = 1;
float b = 2;
float c = 1000000000000000000;
a/b = c; // WTF?

Này bạn sai cú pháp cơ bản. CƠ BẢN đấy!

Còn muốn hoán vị thì hoán vị từng phần tử của mảng. Hiểu không?

Ps dsps[1000000000000000000000000000000000000000];
...
Ps temp = ps[i];
ps[i] = ps[j]
ps[j] = temp;

Liệu bạn thấy nó đơn giản quá không?

4 Likes

Góp ý thêm với bác: trong C++ STL có 1 hàm swap(a, b) có sẵn, không việc gì lại phải viết lại khổ sở vậy làm gì cả.
Ngoài ra sắp xếp phân số cũng có thể viết 1 hàm boolean rồi cho vào hàm sort đấy :smile:. Nhất thời em chưa kịp hình dung ra bác khai báo kiểu danhsach như thế nào nên nói vậy để bác tự tìm hiểu.
Link tham khảo: https://codeforces.com/blog/entry/78540https://www.geeksforgeeks.org/swap-in-cpp/

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