Ứng dụng mảng trong lập trình C

Chào!
Các anh chị làm ơn hướng dẫn em cách làm mảng bài này với ạ!
*Định nghĩa một cấu trúc HOADON và một cấu trúc DATE như sau:struct DATE{
int ngay;
char thang[10];
int nam;
};
struct HOADON{
char tenloaihang[50];
int soluonghang;
int dongia;
long sotien;
struct DATE ngaymua;
};
a. Nhập vào một mảng các hóa đơn
b. Viết hàm tính tổng số tiền mà khách hàng phải trả dựa vào số tiền mỗi hoá đơn
c. Tìm hoá đơn có số tiền là nhỏ nhất
 

tengiday

Happy life
Mấy bài này cơ bản quá. Chắc bạn đã học về 'struct' và 'array' rồi, nên bài tập này là kết hợp 2 thứ lại. Nếu có 1 mảng các số, muốn tình tổng thì bạn viết như thế nào? Nếu muốn tìm số nhỏ nhất trong mảng chứa các số thì bạn làm thế nào? Bạn viết code 2 phần đó lên đây trước đã nhé.
 
d/ liệt kê các hoá đơn mua sau năm 2016
đây là code của toàn bài, nhưng em chạy nó có phần sai, nhưng em tìm hoài ko ra. mong anh tìm và chỉnh sửa giùm em, em cảm ơn
#include <stdio.h>#include <stdlib.h>
#include <string.h>


struct HOADON
{
char tenloaihang[50];
int soluonghang;
int dongia;
long sotien;
struct ngaymua{
int ngay, thang, nam;
} nm;
};


void Mang(struct HOADON a[], int n);


void Mang(struct HOADON a[], int n)
{
do
{
printf("Nhap so mat hang: ");
scanf("%d",&n);
}
while (n <= 0);
int i;
long thanhtien=0;
for (i = 1; i <= n; i++)
{
#define sv a
printf("hoa don %d la: ", i);
fflush(stdin);
gets(a.tenloaihang);
printf("so luong: ");
fflush(stdin);
scanf("%d",&a.soluonghang);
printf("don gia: ");
fflush(stdin);
scanf("%d", &a.dongia);
a.sotien =a.soluonghang*a.dongia;
printf("so tien la: %d\n", a.sotien );
thanhtien = thanhtien+a.sotien;
printf("ngay mua la: ");
fflush(stdin);
scanf("%02d",&sv.nm.ngay);
scanf("%02d",&sv.nm.thang);
scanf("%04d",&sv.nm.nam);
}
printf("tong so tien la: %d\n", thanhtien );


printf("hoa don co so tien nho nhat la: ");


for(i=0;i<n;i++)
{
if((a.sotien<a[i+1].sotien))
{
printf("%s ",a.tenloaihang);
}
else
{
printf("%s", a[i+1].tenloaihang);
}

}

printf("\nhoa don mua sau 2016 la: ");
//
for(i=0;i<n;i++)
{
if(sv.nm.nam>2016){

}
else
{

}

}

printf("%s ",a.tenloaihang);
}


int main()
{
struct HOADON a[100];
int n;
Mang(a,n);
getch();
}
 

tengiday

Happy life
1) Ở trong C/C++, index của mảng bắt đầu bằng 0. Lúc nhập dữ liệu bạn cho i từ 1 tới n, trong khi lúc sau i từ 0 tới n - 1. Bạn cần đổi vòng 'for' nhập dữ liệu từ 0 tới < n.
2) Tìm phần tử nhỏ nhất của bạn chưa đúng. Nó phải như thế này
[ah]
Mã:
printf("hoa don co so tien nho nhat la: ");
int index = 0; // assume giá trị nhỏ nhất là phần tử đầu tiên
for (int i = 1; i < n; ++i)
	if (a[i].sotien < a[index].sotien)
		index = i;
printf("%s", a[index].tenloaihang);
[/ah]
3) Hóa đơn sau năm 2016:
[ah]
Mã:
printf("\nhoa don mua sau 2016 la: ");
for (int i = 0; i < n; ++i)
	if (a[i].nm.nam > 2016)
		printf("%s ", a[i].tenloaihang);
printf("\n");
[/ah]
 

Thống kê

Chủ đề
100,667
Bài viết
467,441
Thành viên
339,833
Thành viên mới nhất
duythinh2222
Top