30/09/2018, 17:44

Sắp xếp mặt hàng

Hãy sắp xếp danh sách các mặt hàng đã có trong file theo lợi nhuận giảm dần. Mỗi mặt hàng gồm các thông tin:
• Mã mặt hàng: là một số nguyên, tự động tăng. Tính từ 1.
• Tên mặt hàng, nhóm hàng: là các xâu ký tự
• Giá mua, giá bán: là các số thực (không quá 9 chữ số) Dữ liệu vào:
Dòng đầu chứa số mặt hàng. Mỗi mặt hàng viết trên 4 dòng:
• Dòng 1: Tên mặt hàng • Dòng 2: Nhóm hàng • Dòng 3: Giá mua.
• Dòng 4: Giá bán
Kết quả:
In ra danh sách mặt hàng đã sắp xếp theo lợi nhuận giảm dần (lợi nhuận tính bằng giá bán trừ đi giá mua). Nếu 2 mặt hàng lợi nhuận bằng nhau thì mặt hàng nào xuất hiện trước trong file sẽ viết trước. Mỗi mặt hàng viết trên một dòng gồm: mã, tên, nhóm hàng và lợi nhuận. Các thông tin cách nhau đúng 1 khoảng trống.

INPUT:

3 
May tinh SONY VAIO 
Dien tu 
16400 
17699 
Tu lanh Side by 
Side 
Dien lanh 
18300 
25999 
Banh Chocopie 
Tieu dung 
27.5 
37 

OUTPUT:

2 Tu lanh Side by Side Dien lanh 7699 
1 May tinh SONY VAIO Dien tu 1299 
3 Banh Chocopie Tieu dung 10.5 

CODE:

#include<stdio.h>
#include<string.h>
FILE *f1 = fopen("m.inp","r");
FILE *f2 = fopen("m.out","w");

struct sv
{
	int ma;
	char ten[100],nhom[100];
	float mua,ban;
};
sv ds[100];

main()
{
	int n,i,j;
	char t[10000];
	fscanf(f1,"%d
",&n);

	for(i=0;i<n;i++)
	{
		ds[i].ma = i+1;
		fgets(ds[i].ten,1000,f1);
		if(ds[i].ten[strlen(ds[i].ten)-1]=='
') ds[i].ten[strlen(ds[i].ten)-1]='';
		
		fgets(ds[i].nhom,1000,f1);
		if(ds[i].nhom[strlen(ds[i].nhom)-1]=='
') ds[i].nhom[strlen(ds[i].nhom)-1]='';
		
		fscanf(f1,"%f%f",&ds[i].mua,&ds[i].ban);
							
	}

	for(i=0;i<n-1;i++)
	{
		for(j=i+1;j<n;j++)
		{
			if(ds[i].ban - ds[i].mua < ds[j].ban - ds[j].mua)
			{
				sv u=ds[i];
				ds[i]=ds[j];
				ds[j]=u;
			}
		}
	}
	
	for(i=0;i<n;i++)
		fprintf(f2,"%d %10s %10s %3.1f
",ds[i].ma,ds[i].ten,ds[i].nhom,ds[i].ban - ds[i].mua);
}

Sao code của e lại ra thế này:

3      Side  Dien lanh  7699.0
1 May tinh SONY VAIO    Dien tu  1299.0
2            Tu lanh Side by  0.0

Ai giúp vs ạ. E đang cần gấp lắm.

Chi Ngo viết 19:48 ngày 30/09/2018

Cái này là do bạn chưa định dạng đầy đủ thôi.
Xem ở link sau nhé: http://www.cplusplus.com/reference/cstdio/printf/
Bạn cho dấu “-” vào trước để nó căn trái xem thế nào!

For a brighter future: http://chingovan.blogspot.com/

*grab popcorn* viết 19:56 ngày 30/09/2018

Bạn học trưởng nào mà cho đề liên miên ác v -,-

Bài liên quan
0