#include <iostream>
#include<string.h>
using namespace::std;
struct page{
int pagenum;
int A;
int M;
};
int run(page *a,int num){
page b[5];
int count=0;
for (int i=0; i<5; i++) {
b[i].pagenum=0;
b[i].A=0;
b[i].M=0;
}
for (int i=0; i<num; i++) {
cout<<"now page "<<a[i].pagenum<<" get in"<<endl;
int flag=1;
int same=0;
for (int j=0; j<5; j++) {
if (a[i].pagenum==b[j].pagenum) {
flag=0;
same=j;
}
}
if (flag==0){
if (count==5) {
for (int j=0; j<5; j++) {
b[j].A=0;
}
}
cout<<"page "<<a[i].pagenum<<" exitsing"<<endl;
b[same].A=a[i].A;
b[same].M=a[i].M;
}
if (flag) {
if (count<5) {
b[count].pagenum=a[i].pagenum;
b[count].A=a[i].A;
b[count].M=a[i].M;
count++;
}
else {
for (int j=0; j<5; j++) {
b[j].A=0;
}
for (int j=0; j<5; j++) {
if (b[j].A==0&&b[j].M==0) {
b[j].pagenum=a[i].pagenum;
b[j].A=a[i].A;
b[j].M=a[i].M;
goto outside;
}
else if (j==4){
for (j=0; j<5; j++) {
if (b[j].A==0&&b[j].M==1) {
b[j].pagenum=a[i].pagenum;
b[j].A=a[i].A;
b[j].M=a[i].M;
goto outside;
}
else if (j==4){
for (j=0; j<5; j++) {
if (b[j].A==1&&b[j].M==0) {
b[j].pagenum=a[i].pagenum;
b[j].A=a[i].A;
b[j].M=a[i].M;
goto outside;
}
else if (j==4){
for (j=0; j<5; j++) {
if (b[j].A==1&&b[j].M==1) {
b[j].pagenum=a[i].pagenum;
b[j].A=a[i].A;
b[j].M=a[i].M;
goto outside;
}
}
}
}
}
}
}
}
}
outside:
same=0;
}
cout<<"pagenum use change"<<endl;
for (int j=0; j<5; j++) {
cout<<b[j].pagenum<<" "<<b[j].A<<" "<<b[j].M<<endl;
}
cout<<""<<endl;
}
return 0;
}
int change(page *a,int num,int changepagenum,int changepagenumto,int changea,int changem){
a[changepagenum].pagenum=changepagenumto;
a[changepagenum].A=changea;
a[changepagenum].M=changem;
return 0;
}
int showdetail(page *a,int num){
cout<<"pagenum use change:"<<endl;
for (int i=0; i<num; i++) {
cout<<a[i].pagenum<<" "<<a[i].A<<" "<<a[i].M<<endl;
}
return 0;
}
int main(){
page a[20];
int num;
int flag=1;
string choice;
cout<<"please input the number of the pages:";
cin>>num;
cout<<"please input use order(num) and if change(0/1) of the pages:"<<endl;
for (int i=0; i<num; i++) {
cin>>a[i].pagenum;
a[i].A=1;
cin>>a[i].M;
}
while (flag) {
cout<<"please input next:";
cin>>choice;
if (choice=="showdetail") {
showdetail(a, num);
}
else if (choice=="run") {
run(a, num);
}
else if (choice=="change"){
int changepagenum=0;
int changepagenumto=0;
int changea=0;
int changem=0;
cout<<"please input num"<<endl;
cin>>changepagenum;
cout<<"please input new pagenum A M"<<endl;
cin>>changepagenumto;
cin>>changea;
cin>>changem;
change(a, num,changepagenum,changepagenumto,changea,changem);
}
else if (choice=="exit") {
flag=0;
}
}
return 0;
}
改进型 Clock 页面置换算法实现
最新推荐文章于 2023-06-19 21:47:44 发布