132 lines
2.7 KiB
C++
132 lines
2.7 KiB
C++
|
|
|||
|
#include <stdio.h>
|
|||
|
#include <string.h>
|
|||
|
#include <stdlib.h>
|
|||
|
#include <vector>
|
|||
|
#include <iostream>
|
|||
|
using namespace std;
|
|||
|
struct FF {
|
|||
|
char name[10];
|
|||
|
float address;//<2F><>ʼ<EFBFBD><CABC>ַ
|
|||
|
float AFFival_time;//û<><C3BB>
|
|||
|
float Service_hours;//û<><C3BB>
|
|||
|
float Process_size;//<2F><><EFBFBD>̴<EFBFBD>С
|
|||
|
float size;//<2F><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>һ<EFBFBD><D2BB>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ֵ
|
|||
|
float max_size;//<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
float state;//0Ϊ<30><CEAA><EFBFBD><EFBFBD> 1Ϊ<31><CEAA><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊʲô<CAB2><C3B4><EFBFBD><EFBFBD>bool <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ϯֻ<CFAE><D6BB><EFBFBD><EFBFBD>60
|
|||
|
};
|
|||
|
void print_Memory(FF *p,int N);//<2F>ڴ<EFBFBD><DAB4>ռ<EFBFBD><D5BC><EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>
|
|||
|
void recovery(FF *p,int N);//<2F><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9><EFBFBD>
|
|||
|
void input(FF *p, int N);//<2F><><EFBFBD>뺯<EFBFBD><EBBAAF>
|
|||
|
void run(FF *p,int N);//<2F><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
|||
|
void detelex(FF *p,int N);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD><CCBA><EFBFBD>
|
|||
|
void input(FF *p, int N) {
|
|||
|
int i;
|
|||
|
int x=0;
|
|||
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>С");
|
|||
|
scanf("%f",&p[0].max_size);
|
|||
|
printf("\n");
|
|||
|
for(i = 0; i <= N - 1; i++) {
|
|||
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%d<><64><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD>̴<EFBFBD>С(<28><><EFBFBD>磺1 2 1 5)<29><>\n", i+1);
|
|||
|
scanf("%s %f %f %f", p[i].name, &p[i].AFFival_time, &p[i].Service_hours,&p[i].Process_size);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void print(FF *p,int N){
|
|||
|
for(int i=0;i<=N;i++){
|
|||
|
printf(p[i].name, &p[i].AFFival_time, &p[i].Service_hours,&p[i].Process_size);
|
|||
|
}
|
|||
|
}
|
|||
|
void distribution(FF *p,int N) {
|
|||
|
int i;
|
|||
|
p[0].size=p[0].max_size;
|
|||
|
|
|||
|
for (i=0; i<N; i++) {
|
|||
|
p[i+1].size=p[i].Process_size;
|
|||
|
if(p[0].size>=p[i].Process_size) {
|
|||
|
p[0].size=p[0].size-p[i].Process_size;
|
|||
|
p[i+1].state=1;
|
|||
|
} else {
|
|||
|
printf("<EFBFBD><EFBFBD>%d<><64><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",i+1);
|
|||
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>лл<EFBFBD>㣬<EFBFBD>ڴ治<EFBFBD><EFBFBD>\n");
|
|||
|
p[i+1].size=p[0].size;
|
|||
|
p[i+1].state=0;
|
|||
|
print_Memory(p, N);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
void recovery(FF *p,int N) {//<2F><><EFBFBD><EFBFBD>һ<EFBFBD>ٷֻ<D9B7><D6BB><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int i;
|
|||
|
for(i=1; i<N; i++) {
|
|||
|
if(p[i].state==0&&p[i+1].state==0) {
|
|||
|
|
|||
|
p[i].size=p[i].size+p[i+1].size;
|
|||
|
p[i+1].size=0;
|
|||
|
}
|
|||
|
}
|
|||
|
printf("\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
|
|||
|
}
|
|||
|
void print_Memory(FF *p,int N) {
|
|||
|
int i;
|
|||
|
float q;
|
|||
|
p[0].address=0;
|
|||
|
printf("\n<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>״̬\n");
|
|||
|
for (i=1; i<=N; i++) {
|
|||
|
printf("<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ַ:\t");
|
|||
|
q+=p[i].size;
|
|||
|
p[i].address=q;
|
|||
|
printf("%f\t",p[i-1].address);
|
|||
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С:\t");
|
|||
|
printf("%f\t",p[i].size);
|
|||
|
if(p[i].state==1) {
|
|||
|
printf("\t<EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><EFBFBD><EFBFBD>\n");
|
|||
|
} else {
|
|||
|
printf("\t<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
|
|||
|
}
|
|||
|
}
|
|||
|
printf("ʣ<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>");
|
|||
|
printf("%f",p[0].size);
|
|||
|
}
|
|||
|
void run(FF *p,int N) {
|
|||
|
int xx=0;
|
|||
|
while(xx!=4) {
|
|||
|
printf("\n<EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>밴1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>밴2<EFBFBD><EFBFBD><EFBFBD>鿴<EFBFBD>ڴ<EFBFBD><EFBFBD>밴3<EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD>밴4\n");
|
|||
|
cin>>xx;
|
|||
|
if(xx==1) {
|
|||
|
detelex(p, N);
|
|||
|
print(p,N);
|
|||
|
} else if(xx==2) {
|
|||
|
recovery(p, N);
|
|||
|
} else if(xx==3) {
|
|||
|
print_Memory(p, N);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
void detelex(FF *p,int N) {
|
|||
|
float yy;
|
|||
|
printf("\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ַ\n");
|
|||
|
scanf("%f",&yy);
|
|||
|
for(int i =0;i<N;i++){
|
|||
|
if(yy==p[i].address){
|
|||
|
cout<<"<EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD>"<<"\n";
|
|||
|
p[i+1].state=0;
|
|||
|
}
|
|||
|
};
|
|||
|
}
|
|||
|
void FF_MAIN() {
|
|||
|
int N;
|
|||
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n");
|
|||
|
scanf("%d",&N);
|
|||
|
FF *p = new FF[N];
|
|||
|
input(p, N);
|
|||
|
distribution(p,N);
|
|||
|
run (p,N);
|
|||
|
delete [] p;
|
|||
|
}
|
|||
|
int main() {
|
|||
|
FF_MAIN();
|
|||
|
return 0;
|
|||
|
|
|||
|
}
|
|||
|
|