CPP/计算机组成原理实验代码/First_Fit_1.cpp

132 lines
2.7 KiB
C++
Raw Normal View History

2023-05-12 00:34:15 +08:00
#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><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;
}