Thứ Hai, 4 tháng 8, 2014

Struct cuộc gọi

/**
Để quản các cuộc gọi điện thoại nội mạng (gọi là các cuộc gọi) người ta quản lý các thông tin sau: 
+ số máy thực hiện cuộc gọi, 
+ số máy nhận cuộc gọi, thời gian thực hiện cuộc gọi (tính bằng giây), 
+ thời điểm thực hiện cuộc gọi (thời điểm thực hiện cuộc gọi có hai loại là giờ thấp điểm và giờ cao điểm (giá trị 1 ứng với giờ thấp điểm, giá trị 0 ứng với giờ cao điểm). 

Hãy khai báo mảng cấu trúc để lưu thông tin của các cuộc gọi và viết chương trình thực hiện các công việc sau:
a. Nhập vào thông tin của n (n  100) cuộc gọi với điều kiện không có cuộc gọi nào có số máy thực hiện cuộc gọi trùng với số máy nhận cuộc gọi.
b. In ra màn hình thông tin của những cuộc gọi có thời gian gọi lớn hơn m  phút với giá trị m  nhập vào từ bàn phím. Thông tin của mỗi cuộc gọi in trên một dòng theo thứ tự: 
 số máy thực hiện cuộc gọi, số máy nhận cuộc gọi, thời gian thực hiện cuộc gọi, 
thời điểm thực hiện cuộc gọi (giờ thấp điểm/giờ cao điểm).
c. In ra màn hình thông tin của các cuộc gọi có số tiền cao nhất. Biết rằng, 6 giây đầu tiên có đơn giá là 800 đồng/6 giây (nếu gọi chưa đủ 6 giây thì làm tròn số tiền đến 6 giây thực hiện cuộc gọi), các giây tiếp theo có đơn giá 100 đồng/giây. 
Ngoài ra trong giờ thấp điểm thì đơn giá sẽ được giảm 10%.
/**/

/**/

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>

struct DT
{
char goi[12],nhan[12];
int tg,td;
};

void nhap(DT *a,int n)
{
for(int i=0;i<n;i++)
{
printf("\n\n Nhap cuoc goi thu %d",i+1);

printf("\n-   So may goi: ");
fflush(stdin);
gets(a[i].goi);

char tam[12];
do
{
printf("-   So may nhan: ");
fflush(stdin);
gets(tam);
}
while(strcmp(tam,a[i].goi)==0);

strcpy(a[i].nhan,tam);

printf("-   Thoi gian: ");
scanf("%d",&a[i].tg);

printf("-   Thoi diem: ");
scanf("%d",&a[i].td);
}
}

void thongtin(DT a)
{
printf("\n- So may goi: %s",a.goi);
printf("; So may nhan: %s",a.nhan);
printf("; Thoi gian: %d",a.tg);
if(a.td==1)
printf("; Gio thap diem");
else printf("; Gio cao diem");
}

void inthongtin(DT *a,int n,int m)
{
for(int i=0;i<n;i++)
if(a[i].tg>m)
thongtin(a[i]);
}

float dongia(DT a)
{
float gia;
if(a.tg<=6)
gia=800;
else gia=(a.tg-6)*100+800;
if(a.td==1)
gia=gia*9/10;
return gia;
}

void intiencaonhat(DT *a,int n)
{
float max=dongia(a[0]);
for(int i=0;i<n;i++)
if(dongia(a[i])>max)
max=dongia(a[i]);

for(int i=0;i<n;i++)
if(dongia(a[i])==max)
thongtin(a[i]);
}

void main()
{
DT a[100];
int n;

printf(" Nhap so luong cuoc goi: ");
scanf("%d",&n);

nhap(a,n);

printf("-------------------------------");

int m;
printf("\n Nhap so phut: ");
scanf("%d",&m);
printf("\n Thong tin cuoc goi lon hon %d phut la: ",m);
inthongtin(a,n,m);

printf("\n\n Thong tin cuoc goi co so tien cao nhat la: ");
intiencaonhat(a,n);

getch();

}
/**/

Không có nhận xét nào:

Đăng nhận xét