01/10/2018, 00:55

Kiểu dữ liệu dạng gói (struct)

Viết CTC thực hiện các công việc sau:
o Nhập danh sách các món ăn gồm các thông tin: tên món ăn, đơn giá;
o Hiện danh sách vừa nhập ra màn hình
o Tìm món ăn có đơn giá cao nhất
o Thống kê các món ăn có đơn giá từ x đến y, với x, y nhập từ bàn phím và lưu vào file THUCDON.TXT
o Hiển thị
Áp dụng CTC trên
Mong mọi người xem giúp e ý 4. Em cảm ơn

#include<stdio.h>
#include<conio.h>
#include<string.h>
struct MonAn
{
    char TenMon[50];
    int Gia;
};
void Nhap( MonAn dsma[], int sl)
{
    int i;
    for(i=0;i<sl; i++)
    {
        fflush(stdin);
        printf("
Nhap ten mon an: ");
        gets(dsma[i].TenMon);
        fflush(stdin);
        printf("
Nhap gia: ");
        scanf("%d", &dsma[i].Gia);
    }
}
void Xuat(MonAn dsma[], int sl)
{
    printf("
---------------THONG TIN MON AN---------------");
    printf( "
TT    Ten mon an      Gia");
    int i;
    for(i=0; i<sl; i++)
    {
        printf("
%2d %13s %7d",i+1, dsma[i].TenMon, dsma[i].Gia);
    }
}
int TimKiem(MonAn dsma [], int sl)
{
    int i;
    int DatNhat = 0;
    for(i=0; i<sl; i++)
    {
        if (dsma[DatNhat].Gia < dsma[i].Gia)
        {
            dsma[DatNhat].Gia=dsma[i].Gia;
            DatNhat= i;
        }
    }
    printf("
Mon an co gia dat nhat la: %s ", dsma[DatNhat].TenMon);
}
// 4. thong ke cac mon an co don gia tu x den y
void ThongKe( MonAn dsma[], int sl)
{
    int i;
    int x, y;
    printf("
Nhap don gia x:");
    scanf("%d", &x);
    printf("
Nhap don gia y (y> x):");
    scanf("%d", &y);
    for(i=0; i<sl; i++)
    {
        if(dsma[x].Gia < dsma[i].Gia && dsma[y].Gia > dsma[i].Gia)
        printf("
Cac mon an thuoc khoang gia tren la:");
    }
    //printf("
%2d %13s %7d",i+1, dsma[i].TenMon, dsma[i].Gia);
}
int main()
{
    int n;
    MonAn ds[100];
    printf("
Nhap so luong mon an: ");
    scanf("%d", &n);
    fflush(stdin);
    Nhap(ds,n);
    fflush(stdin);
    Xuat(ds,n);
    TimKiem(ds, n);
    ThongKe(ds,n);
    printf("
Cac mon an thuoc khoang gia tren la:");
    Xuat(ds,n);
}
Pham Van Hai viết 03:04 ngày 01/10/2018

Chỗ này theo mình hiểu x, y là đơn giá rồi chứ ko phải vị trí:

if(x < dsma[i].Gia && dsma[i].Gia < y)
    printf("\n%2d %13s %7d",i+1, dsma[i].TenMon, dsma[i].Gia);

if(dsma[x].Gia < dsma[i].Gia && dsma[y].Gia > dsma[i].Gia)
printf("\nCac mon an thuoc khoang gia tren la:");

Falcon viết 03:06 ngày 01/10/2018

đc rồi bác ạ, em cảm ơn

Bài liên quan
0