• Chào Guest,

    Hãy cùng mọi người hướng đến một cộng đồng MMO ngày càng trong sạch. MMO4ME.com sẽ là nơi tập trung tất cả những thông tin uy tín cũng như lừa đảo (SCAM) của bất kì cá nhân nào. (Đọc chi tiết!)

    Chương trình khởi động:
    Thưởng 1.5 MR ngay khi bạn tạo yêu cầu mới cho bất kì cá nhân nào và được duyệt thành công. Chi tiết các bạn có thể xem thêm tại đây.

Request Cần người pro C giúp bài tập môn Nguyên Lý Hệ Điều Hành

sato002

Hero
Joined
Nov 22, 2014
Messages
613
Reactions
303
MR
0.002
Tình hình e đang bắt nộp gấp quá . Pro nào đi qua giúp em chỉnh sửa 1 chút . E xin hậu tạ 1 card DT 50k . thank
Em đang làm bài tập về lập lịch Priority PreEmptive :

#include<stdio.h>
#include<stdlib.h>
typedef struct process
{
int id,at,bt,st,ft,pr;
float wt,tat;
}process;

process p[10],p1[10],temp;

int accept(int ch);
void sort(int n);
void gantt(int n);
void turnwait(int n);
void display(int n);

int main()
{
int i,n,ts,ch,j,x;
p[0].tat=0;
p[0].wt=0;
n=accept(ch);
sort(n);
gantt(n);
turnwait(n);
display(n);
return 0;
}


int accept(int ch) //Ham nhap cho nguoi su dung
{
int i,n;
printf("\nNhap so tien trinh: ");
scanf("%d",&n);
if(n==0)
{
printf("\nKhong co tien trinh thuc hien");
exit(1);
}
for(i=1;i<=n;i++)
{
do{
printf("\nNhap thoi gian xuat hien tien trinh P%d: ",i);
scanf("%d",&p.at);
p.id=i;
}while(p.at<0 || p.at!=p.at);
}
for(i=1;i<=n;i++)
{
do{
printf("\nThoi gian thuc hien cua tien trinh P%d: ",i);
scanf("%d",&p.bt);
}while(p.bt<0||p.bt==0);
}
for(i=1;i<=n;i++)
{
do{
printf("\nNhap tien trinh duoc uu tien%d: ",i);
scanf("%d",&p.pr);
}while(p.pr<0);
}
printf("\ndau vao cap phat:\n");
printf("==============================================================");
printf("\nTien trinh\tAT\tBT\tPR");
for(i=1;i<=n;i++)
printf("\nP%d\t%d\t%d\t%d",p.id,p.at,p.bt,p.pr);
printf("\n============================================================");
for(i=1;i<=n;i++) // sao chep lai(dummy area)
p1=p;
return n;
}

void sort(int n)
{
int i,j;
for(i=2;i<=n;i++)
for(j=1;j<=i;j++)
if(p[j].at>p.at)
{
temp=p;
p=p[j];
p[j]=temp;
}
else if(p[j].at==p.at) //neu ca 2 thoi gian den la bang nhau thi thuc hien theo FCFS
if(p[j].bt>p.bt)
{
temp=p;
p=p[j];
p[j]=temp;
}
}

/* Bieu do gantt */

void gantt(int n)
{
int i,j,min,nextval,limit,ts,m=1;
limit=0;
nextval=p[1].at;
printf("\nTien trinh bat dau tu: ");
scanf("%d",&ts);
for(i=1;i<=n;i++)
limit=limit+p.bt;
limit=limit+p[1].at;
if(p1[1].bt<ts)
nextval=nextval+p1[1].bt;
else
nextval=nextval+ts;
printf("gian do gantt la :\n\n");
printf("%d->P%d->%d",p1[1].at,p1[1].id,nextval);
if(p1[m].bt<ts)
p1[m].bt=0;
else
p1[m].bt=p1[m].bt-ts;
do
{
if(p1[m].bt<=0)
{
min=9999;
for(i=1;(p1.at)<=nextval,i<=n;i++)
if(p1.pr<min && p1.bt>0)
{
min=p1.pr;
m=i;
}
}
i=1;
while(i<=n)
{
if((p1.at)<=nextval)
if((p1.pr<p1[m].pr) && (p1[m].bt>0) && (p1.bt>0))
m=i;
i++;
}
if(p1[m].bt<ts)
nextval=nextval+p1[m].bt;
else
nextval=nextval+ts;
printf("->P%d->%d",p1[m].id,nextval);
if(p1[m].bt<ts)
p1[m].bt=0;
else
p1[m].bt=p1[m].bt-ts;
if(p1[m].bt==0)
p[m].ft=nextval;

}while(nextval<limit);
}

/* ham tinh thoi gian xu ly va thoi gian doi */
void turnwait(int n)
{
int i;
for(i=1;i<=n;i++)
{
p.tat=p.ft-p.at;
p.wt=p.tat-p.bt;
p[0].tat=p[0].tat+p.tat;
p[0].wt=p[0].wt+p.wt;
}
p[0].tat=p[0].tat/n;
p[0].wt=p[0].wt/n;
}
void display(int n)
{
int i;
printf("\n\n-------------------TABLE----------------------------------\n");
printf("\nTien trinh\tAT\tBT\tFT\tTAT\t\tWT");
for(i=1;i<=n;i++)
printf("\nP%d\t%d\t%d\t%d\t%f\t%f",p.id,p.at,p.bt,p.ft,p.tat,p.wt);
printf("\n\n-----------------------------------------------------------");
printf("\nthoi gian xu li trung binh: %f",p[0].tat);
printf("\nthoi gian doi trung binh: %f",p[0].wt);
}

Đây là code . Mà có 1 yêu cầu là nhập dữ liệu số PriO ( số ưu tiên của từng tiến trình ) . Yêu cầu của ông giáo là nhập mấy số này không được trùng nhau + phải là 1 dãy số ( ví dụ có 5 tiến trình thì là 1-5-4-3-2 ) kiểu như vậy . Pro nào sửa giúp em phần nhập dữ liệu này với . E cần gấp quá . Thanks
 

Announcements

Today's birthdays

Forum statistics

Threads
418,919
Messages
7,078,290
Members
170,993
Latest member
68gamebaisystems
Back
Top Bottom