first commit
This commit is contained in:
131
计算机组成原理实验代码/First_Fit_1.cpp
Normal file
131
计算机组成原理实验代码/First_Fit_1.cpp
Normal file
@@ -0,0 +1,131 @@
|
||||
|
||||
#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;
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user