Đề: Viết các chương trình thực hiên công việc sau:
-Nhập danh sách các loại xe của hãng xe máy honda gồm các thông tin: mã xe, tên xe, màu sắc, đơn giá và lưu vào tệp honda.dat(dạng nhị phân); việc nhập sẽ dừng lại khi mã xe được nhập là 0.
- Hiện danh sách xe từ tệp honda.txt ra màn hình
- Nhập tên từ bàn phím, tìm và in ra các màu sắc và đơn giá tương ứng của loại xe đó.
- Sắp xếp danh sách xe theo đơn giá giảm dần và hiển thị ra màn hình với đầy đủ các thông tin.
Viết chương trình chính để gọi các chương trình con theo trật tự trên. Tổ chức chương trình thông qua menu
Lỗi: chương trình chỉ chạy hết phần nhập thôi ạ
#include<conio.h>
#include<stdio.h>
#include<string.h>
struct honda
{
int ma;
char ten[20];
char mau[9];
int gia;
};
void luu(honda a[],int n, FILE*f)
{
int i;
f=fopen("honda.txt","wb");
if(f!=NULL)
printf("\n Luu file thanh cong");
else
return;
fwrite(&n,sizeof(int),1,f);
for(i=0;i<n;++i)
{
fwrite(&a[i],sizeof(honda),1,f);
}
fclose(f);
}
void doc(honda a[], int n)
{
honda tg;
FILE*f;
f=fopen("honda.txt","rb");
if(f==NULL)
{
printf("Loi");
}
else
{
while(fread(&tg,sizeof(a),1,f)>0)
{
printf("\n Ma xe: ",tg.ma);
printf("\n Ten xe: ",tg.ten);
printf("\n Mau xe: ",tg.mau);
printf("\n Don gia: ",tg.gia);
}
}
fclose(f);
}
int nhap(honda a[], int n)
{
FILE*f;
int i=0;
do
{
printf("\n Ma xe:");scanf("%d",&a[i].ma);
if(a[i].ma ==0)
{
printf("\n Ban vua ket thuc viec nhap du lieu.");
break;
}
printf("\n Ten xe:");fflush(stdin);gets(a[i].ten);
printf("\n Mau: "); fflush(stdin);gets(a[i].mau);
printf("\n Don gia:");scanf("%d",&a[i].gia);
i++;
}
while(1);
luu(a,n,f);
return i;
}
/*void hien1(honda a[],int i)
{
printf("%-10d",a[i].ma);
printf("%-15s",a[i].ten);
printf("%-15s",a[i].mau);
printf("%-10.2d",a[i].gia);
printf("\n");
}*/
void hien(honda a[], int n)
{
int i;
doc(a,n);
printf("\n %-10s%-15s%-15s%-12s","Ma xe","Ten xe","Mau xe","Don gia");
for(i=0;i<n;i++)
{
printf("\n %-10d%-15s%-15s%-12d",a[i].ma,a[i].ten,a[i].mau,a[i].gia);
}
}
void tim(honda a[],int n)
{
int i,x;
char ten[20];
printf("\n Nhap ten xe can tim:");fflush(stdin);gets(ten);
for(i=0;i<n;++i)
{
x=strcmp(ten,a[i].ten);
if(x==0)
hien(a,n);
}
}
void sapxep(honda a[], int n)
{
honda tg;
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
{
tg=a[i];
a[i]=a[j];
a[j]=tg;
}
printf("\n Danh sach sau sap xep la: ");
hien(a,n);
}
int main()
{
honda a[10];
int n=0;
FILE*f;
int chon;
printf("\n Moi ban chon chuc nang: ");
printf("\n 1: Nhap danh sach cac xe");
printf("\n 2: Hien danh sach ");
printf("\n 3: Tim xe");
printf("\n 4: Sap xep xe theo gia giảm dần");
printf("\n 5: Thoat");
do
{
printf("\n Ban chon: ");
scanf("%d",&chon);
switch(chon)
{
case 1:
{
nhap(a,n);
break;
}
case 2:
{
printf("\n Danh sach hang xe may honda: ");
hien(a,n);
break;
}
case 3:
{
tim(a,n);
break;
}
case 4:
{
sapxep(a,n);
break;
}
case 5: break;
}
}while(chon!=5);
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?