first commit
This commit is contained in:
140
Test.cpp
Normal file
140
Test.cpp
Normal file
@@ -0,0 +1,140 @@
|
||||
//#include<stdio.h>
|
||||
//
|
||||
//void paixu(int n, int a[]) { //n为数组的元素个数
|
||||
// for (int i = 0; i < n - 1; i++) {
|
||||
// //TODO
|
||||
// for (int j = i + 1; j < n; j++) {
|
||||
// //TODO
|
||||
// if (a[i] > a[j]) {
|
||||
// int t = a[i];
|
||||
// a[i] = a[j];
|
||||
// a[j] = t;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// for (int i = 0; i < n; i++) {
|
||||
// //TODO
|
||||
// printf("%d", a[i]);
|
||||
// }
|
||||
//}
|
||||
|
||||
//int main() {
|
||||
// int a[5] = {8, 6, 5, 4, 1};
|
||||
// paixu(5, a);
|
||||
//}
|
||||
|
||||
//#include<stdio.h>
|
||||
//int main() {
|
||||
// int min, div, m, n, i = 2;
|
||||
// printf("请输入两个数:\n");
|
||||
// scanf("%d %d", &m, &n);
|
||||
// if (m > n)
|
||||
// min = n;
|
||||
// else
|
||||
// min = m;
|
||||
// for (i; i <= min; i++) {
|
||||
// if (m % i == 0 && n % i == 0) {
|
||||
// div = i;
|
||||
// }
|
||||
// }
|
||||
// printf("最大公约数为%d\n", div);
|
||||
// return 0;
|
||||
//}
|
||||
//
|
||||
//#include <stdio.h>
|
||||
//
|
||||
//int main() {
|
||||
// int n1, n2, i, gcd;
|
||||
//
|
||||
// printf("输入两个正整数");
|
||||
// scanf("%d %d", &n1, &n2);
|
||||
//
|
||||
// for (i = 1; i <= n1 && i <= n2; ++i) {
|
||||
// // 判断 i 是否为最大公约数
|
||||
// if (n1 % i == 0 && n2 % i == 0)
|
||||
// gcd = i;
|
||||
// }
|
||||
//
|
||||
// printf("%d 和 %d 的最大公约数是 %d", n1, n2, gcd);
|
||||
//
|
||||
// return 0;
|
||||
//}
|
||||
|
||||
|
||||
//#include <stdio.h>
|
||||
//int main()
|
||||
//{
|
||||
// int a[11]={1,2,3,4,5,7,8,9,10,11};
|
||||
// int i,t,m;
|
||||
// printf("输入一个数:\n");
|
||||
// scanf("%d",&m);
|
||||
// for(i=0;i<11;i++)
|
||||
// {
|
||||
// if(m<a[i])
|
||||
// {
|
||||
// t=m;m=a[i];a[i]=t;
|
||||
// }
|
||||
// else if(m>a[9])
|
||||
// a[10]=m;
|
||||
// }
|
||||
// printf("排序后:\n");
|
||||
// for(i=0;i<11;i++)
|
||||
// printf("%d ",a[i]);
|
||||
// return 0;
|
||||
//}
|
||||
|
||||
|
||||
//#include<stdio.h>
|
||||
//#include<math.h>
|
||||
//
|
||||
//int main() {
|
||||
// double r, s ;
|
||||
// printf("半径:");
|
||||
// scanf("%lf", &r);
|
||||
// s = (3 * 3.1415926 * r * r) / 4;
|
||||
// printf("s=%lf", s);
|
||||
//}
|
||||
|
||||
//#include <stdio.h>
|
||||
//#include <math.h>
|
||||
//main() {
|
||||
// int n, i, k;
|
||||
// for (n = 100; n > 0; n--) {
|
||||
// k = sqrt(n);
|
||||
// for (i = 2; i <= k; i++)
|
||||
// if (n % i == 0)
|
||||
// break;
|
||||
// if (i > k) {
|
||||
// printf("%d\n", n);
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int gcd(int m, int n) {
|
||||
int div, i, min;
|
||||
if (m < n) {
|
||||
min = m;
|
||||
} else {
|
||||
min = n;
|
||||
}
|
||||
for (i = 2; i <= min; i++) {
|
||||
if (m % i == 0 && n % i == 0) {
|
||||
div = i;
|
||||
}
|
||||
}
|
||||
return div;
|
||||
}
|
||||
|
||||
int main() {
|
||||
int m, n;
|
||||
printf("请输入两个整数:\n");
|
||||
scanf("%d %d", &m, &n);
|
||||
int result = gcd(m, n);
|
||||
printf("%d和%d的最大公约数是%d\n", m, n, result);
|
||||
return 0;
|
||||
}
|
||||
|
430
计算机组成原理实验代码/Best_Bad_Fit.cpp
Normal file
430
计算机组成原理实验代码/Best_Bad_Fit.cpp
Normal file
@@ -0,0 +1,430 @@
|
||||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
#define N 5
|
||||
#include<iostream>
|
||||
using namespace std;
|
||||
enum STATE
|
||||
{
|
||||
F,W
|
||||
};
|
||||
|
||||
struct subAreaNode
|
||||
{
|
||||
int addr; // <20><>ʼ<EFBFBD><CABC>ַ
|
||||
int size; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
||||
int taskId; // <20><>ҵ<EFBFBD><D2B5>
|
||||
STATE state; // <20><><EFBFBD><EFBFBD>״̬
|
||||
subAreaNode *pre; // <20><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>ָ<EFBFBD><D6B8>
|
||||
subAreaNode *nxt; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
}subHead;
|
||||
|
||||
|
||||
struct PCB
|
||||
{
|
||||
char name[8]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int arrive_time; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
int run_time; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
int finish_time; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
int zhouzhuan_time; //<2F><>תʱ<D7AA><CAB1>
|
||||
float daiquan_time; //<2F><>Ȩ<EFBFBD><C8A8>תʱ<D7AA><CAB1>
|
||||
};
|
||||
|
||||
float sumzhouzhuantime,sumdaiquanzhouzhuantime;
|
||||
struct PCB pcb[N],temp;
|
||||
|
||||
void input(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void sort(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD>̰<EFBFBD><CCB0><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
|
||||
void output(); //<2F><><EFBFBD><EFBFBD><EFBFBD>㷨<EFBFBD><E3B7A8><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
void intSubArea()
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
subAreaNode *fir = (subAreaNode *)malloc(sizeof(subAreaNode));
|
||||
// <20><><EFBFBD><EFBFBD><D7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
fir->addr = 0;
|
||||
fir->size = 1000; // <20>ڴ<EFBFBD><DAB4><EFBFBD>ʼ<EFBFBD><CABC>С
|
||||
fir->state = F;
|
||||
fir->taskId = -1;
|
||||
fir->pre = &subHead;
|
||||
fir->nxt = NULL;
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>Ϣ
|
||||
subHead.pre = NULL;
|
||||
subHead.nxt = fir;
|
||||
}
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>㷨
|
||||
int BestFit(int taskId, int size)
|
||||
{
|
||||
subAreaNode *tar = NULL;
|
||||
int tarSize = 1000 + 1;
|
||||
subAreaNode *p = subHead.nxt;
|
||||
while (p != NULL)
|
||||
{
|
||||
// Ѱ<><D1B0><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><D1BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (p->state == F && p->size >= size && p->size < tarSize) {
|
||||
tar = p;
|
||||
tarSize = p->size;
|
||||
}
|
||||
p = p->nxt;
|
||||
}
|
||||
if (tar != NULL) {
|
||||
// <20>ҵ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>з<EFBFBD><D0B7><EFBFBD>
|
||||
if (tar->size - size <= 10)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
tar->state = W;
|
||||
tar->taskId = taskId;
|
||||
}
|
||||
else
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>СΪsize<7A><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
subAreaNode *node = (subAreaNode *)malloc(sizeof(subAreaNode));
|
||||
node->addr = tar->addr + size;
|
||||
node->size = tar->size - size;
|
||||
node->state = F;
|
||||
node->taskId = -1;
|
||||
// <20>ķ<DEB8><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ָ<EFBFBD><D6B8>
|
||||
node->pre = tar;
|
||||
node->nxt = tar->nxt;
|
||||
if (tar->nxt != NULL)
|
||||
{
|
||||
tar->nxt->pre = node;
|
||||
}
|
||||
tar->nxt = node;
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
tar->size = size;
|
||||
tar->state = W;
|
||||
tar->taskId = taskId;
|
||||
}
|
||||
printf("<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>\n");
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>...\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void BadFit(int taskId,int size){ //<2F><EFBFBD><EEBBB5>Ӧ
|
||||
//<2F><><EFBFBD>ѿ<EFBFBD>ָ<EFBFBD><D6B8>
|
||||
struct subAreaNode *q = NULL;
|
||||
subAreaNode *node = subHead.nxt;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>п<EFBFBD>
|
||||
while(node != NULL){
|
||||
if(node->state == F && node->size >= size){
|
||||
q = node;
|
||||
break;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>û<EFBFBD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><D4B7><EFBFBD>
|
||||
if(node->nxt == NULL){
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>㹻<EFBFBD>Ŀռ䣡\n");
|
||||
break;
|
||||
} else{
|
||||
node = node->nxt;
|
||||
}
|
||||
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD>Ѱ<EFBFBD><D1B0><EFBFBD><EFBFBD><EFBFBD>ѵĿ<D1B5><C4BF>п<EFBFBD>
|
||||
while(node != NULL){
|
||||
if(node->state == F && node->size >= size && node->size < q->size){ //<2F><><EFBFBD>еĿռ<C4BF>
|
||||
q = node;
|
||||
}
|
||||
node = node->nxt;
|
||||
}
|
||||
if(q->size < size){ //<2F><><EFBFBD>ѿ<EFBFBD><D1BF>п<EFBFBD><D0BF>Ĵ<EFBFBD>СС<D0A1><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>Ŀռ<C4BF>
|
||||
struct subAreaNode *p = (struct subAreaNode*)malloc(sizeof(struct subAreaNode));
|
||||
p->addr = q->addr + size;
|
||||
p->size = q->size - size;
|
||||
p->state = F;
|
||||
p->taskId = -1;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ŀռ<C4BF>
|
||||
q->taskId = taskId;
|
||||
q->size = size;
|
||||
q->state = W;
|
||||
//<2F>ı<EFBFBD><C4B1>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
p->nxt = q->nxt;
|
||||
q->nxt = p;
|
||||
}else if(q->size == size){ //<2F><><EFBFBD>ѿ<EFBFBD><D1BF>п<EFBFBD><D0BF>ռ<EFBFBD><D5BC><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
q->taskId = taskId;
|
||||
q->size = size;
|
||||
q->state = W;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int freeSubArea(int taskId) // <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
{
|
||||
int flag = 0;
|
||||
subAreaNode *p = subHead.nxt, *pp;
|
||||
while (p != NULL)
|
||||
{
|
||||
if (p->state == W && p->taskId == taskId)
|
||||
{
|
||||
flag = 1;
|
||||
if ((p->pre != &subHead && p->pre->state == F)
|
||||
&& (p->nxt != NULL && p->nxt->state == F))
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20>Ⱥϲ<C8BA><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pp = p;
|
||||
p = p->pre;
|
||||
p->size += pp->size;
|
||||
p->nxt = pp->nxt;
|
||||
pp->nxt->pre = p;
|
||||
free(pp);
|
||||
// <20><><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pp = p->nxt;
|
||||
p->size += pp->size;
|
||||
p->nxt = pp->nxt;
|
||||
if (pp->nxt != NULL)
|
||||
{
|
||||
pp->nxt->pre = p;
|
||||
}
|
||||
free(pp);
|
||||
}
|
||||
else if ((p->pre == &subHead || p->pre->state == W)
|
||||
&& (p->nxt != NULL && p->nxt->state == F))
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>2<EFBFBD><32>ֻ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>
|
||||
pp = p->nxt;
|
||||
p->size += pp->size;
|
||||
p->state = F;
|
||||
p->taskId = -1;
|
||||
p->nxt = pp->nxt;
|
||||
if (pp->nxt != NULL)
|
||||
{
|
||||
pp->nxt->pre = p;
|
||||
}
|
||||
free(pp);
|
||||
}
|
||||
else if ((p->pre != &subHead && p->pre->state == F)
|
||||
&& (p->nxt == NULL || p->nxt->state == W))
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>3<EFBFBD><33>ֻ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>
|
||||
pp = p;
|
||||
p = p->pre;
|
||||
p->size += pp->size;
|
||||
p->nxt = pp->nxt;
|
||||
if (pp->nxt != NULL)
|
||||
{
|
||||
pp->nxt->pre = p;
|
||||
}
|
||||
free(pp);
|
||||
}
|
||||
else
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>úϲ<C3BA>
|
||||
p->state = F;
|
||||
p->taskId = -1;
|
||||
}
|
||||
}
|
||||
p = p->nxt;
|
||||
}
|
||||
if (flag == 1)
|
||||
{
|
||||
// <20><><EFBFBD>ճɹ<D5B3>
|
||||
printf("<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ճɹ<EFBFBD>...\n");
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// <20>Ҳ<EFBFBD><D2B2><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
printf("<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>...\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// <20><>ʾ<EFBFBD><CABE><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void showSubArea()
|
||||
{
|
||||
printf("\n");
|
||||
printf(" <20><>ǰ<EFBFBD><C7B0><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD> \n");
|
||||
printf(" W:<3A><><EFBFBD><EFBFBD>״̬ F:<3A><><EFBFBD><EFBFBD>״̬ \n");
|
||||
printf("___________________________________________\n");
|
||||
printf("| <20><>ʼ<EFBFBD><CABC>ַ | <20>ռ<EFBFBD><D5BC><EFBFBD>С | <20><><EFBFBD><EFBFBD>״̬ | <20><>ҵ<EFBFBD><D2B5> |\n");
|
||||
subAreaNode *p = subHead.nxt;
|
||||
while (p != NULL)
|
||||
{
|
||||
printf("___________________________________________\n");
|
||||
|
||||
printf(" %3d k |", p->addr);
|
||||
printf(" %3d k |", p->size);
|
||||
printf(" %s |", p->state == F ? "F" : "W");
|
||||
if (p->taskId > 0)
|
||||
{
|
||||
printf(" %2d ", p->taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf(" ");
|
||||
}
|
||||
printf("\n");
|
||||
p = p->nxt;
|
||||
}
|
||||
printf("___________________________________________\n");
|
||||
}
|
||||
|
||||
void sort() //<2F><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Խ<EFBFBD><D4BD>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
for(int i=0;i<N-1;i++)
|
||||
{
|
||||
for(int j=i+1;j<N;j++)
|
||||
{
|
||||
if(pcb[i].arrive_time>pcb[j].arrive_time)
|
||||
{
|
||||
temp=pcb[i];
|
||||
pcb[i]=pcb[j];
|
||||
pcb[j]=temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void output(int j)
|
||||
{
|
||||
int i;
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(FCFS<46><53><EFBFBD><EFBFBD><EFBFBD>㷨):"<<endl;
|
||||
pcb[0].finish_time=pcb[0].arrive_time+pcb[0].run_time;
|
||||
pcb[0].zhouzhuan_time=pcb[0].finish_time-pcb[0].arrive_time;
|
||||
pcb[0].daiquan_time=(float)pcb[0].zhouzhuan_time/pcb[0].run_time;
|
||||
for(i=1;i<j;i++)
|
||||
{
|
||||
if(pcb[i].arrive_time>pcb[i-1].finish_time)
|
||||
{
|
||||
pcb[i].finish_time=pcb[i].arrive_time+pcb[i].run_time;
|
||||
pcb[i].zhouzhuan_time=pcb[i].run_time;
|
||||
pcb[i].daiquan_time=(float)pcb[i].zhouzhuan_time/pcb[i].run_time;
|
||||
}
|
||||
else
|
||||
{
|
||||
pcb[i].finish_time=pcb[i-1].finish_time+pcb[i].run_time;
|
||||
pcb[i].zhouzhuan_time=pcb[i].finish_time-pcb[i].arrive_time;
|
||||
pcb[i].daiquan_time=(float)pcb[i].zhouzhuan_time/pcb[i].run_time;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for(i=0;i<j;i++)
|
||||
{
|
||||
sumzhouzhuantime+=pcb[i].zhouzhuan_time;
|
||||
sumdaiquanzhouzhuantime+=pcb[i].daiquan_time;
|
||||
}
|
||||
|
||||
printf("****************************************************************\n");
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>תʱ<D7AA><CAB1> <20><>Ȩ<EFBFBD><C8A8>תʱ<D7AA><CAB1> \n");
|
||||
printf("****************************************************************\n");
|
||||
for(i=0;i<j;i++)
|
||||
{
|
||||
printf(" %s %d %d %d %d %.2f\n",pcb[i].name,pcb[i].arrive_time,pcb[i].run_time,pcb[i].finish_time,pcb[i].zhouzhuan_time,pcb[i].daiquan_time);
|
||||
|
||||
}
|
||||
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
|
||||
cout<<"ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>תʱ<EFBFBD><EFBFBD>:"<<sumzhouzhuantime/N<<endl;
|
||||
cout<<"ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>תʱ<EFBFBD><EFBFBD>:"<<sumdaiquanzhouzhuantime/N<<endl;
|
||||
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
|
||||
}
|
||||
|
||||
|
||||
void showProess(int j){
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n");
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>\n");
|
||||
for(int i=0;i<j;i++)
|
||||
{
|
||||
printf("%s \t",pcb[i].name);
|
||||
printf("%d \t",pcb[i].arrive_time);
|
||||
printf("%d \n",pcb[i].run_time);
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int ope, taskId, size,select,count;
|
||||
//oep <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1> taskId <20><><EFBFBD>̺<EFBFBD> size <20><><EFBFBD>̴<EFBFBD>С select <20><><EFBFBD><EFBFBD><EFBFBD>㷨ѡ<E3B7A8><D1A1> count <20><><EFBFBD><EFBFBD>
|
||||
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
intSubArea();
|
||||
printf(">>>>>>>>>>>>>>>>>><3E><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD>㷨ģ<E3B7A8><C4A3>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>/<2F><EFBFBD><EEBBB5>Ӧ<EFBFBD>㷨<<<<<<<<<<<<<<<<<<\n") ;
|
||||
printf(" ____________________________________\n");
|
||||
printf(" | 1: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>㷨 2: <20><EFBFBD><EEBBB5>Ӧ<EFBFBD>㷨 |\n");
|
||||
printf(" |___________________________________|\n");
|
||||
printf("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨:");
|
||||
scanf("%d",&select);
|
||||
|
||||
// ģ<>̬<E2B6AF><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨
|
||||
|
||||
for(int i=0;i<N;i++){
|
||||
printf(" ________________________________________________________________\n");
|
||||
printf(" | 1: <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD> 2: <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD> 3.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ 0: <20>˳<EFBFBD> |\n");
|
||||
printf(" |_______________________________________________________________|\n");
|
||||
printf("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>ִ<EFBFBD>еĹ<EFBFBD><EFBFBD><EFBFBD>:");
|
||||
scanf("%d", &ope);
|
||||
if (ope == 0) break;
|
||||
if (ope == 1) {
|
||||
|
||||
// ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>ţ<EFBFBD> ");
|
||||
scanf("%d", &taskId);
|
||||
|
||||
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:" );
|
||||
scanf("%s",pcb[i].name);
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뵽<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>:");
|
||||
scanf("%d",&pcb[i].arrive_time);
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>:");
|
||||
scanf("%d",&pcb[i].run_time);
|
||||
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>С(KB)<29><> ");
|
||||
scanf("%d", &size);
|
||||
count+=1;
|
||||
// showProess(count);
|
||||
|
||||
if (size <= 0)
|
||||
{
|
||||
printf("ERROR:<3A><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ֵ\n");
|
||||
continue;
|
||||
}
|
||||
switch(select){ //<2F><><EFBFBD><EFBFBD><EFBFBD>㷨ѡ<E3B7A8><D1A1>
|
||||
case 1:
|
||||
BestFit(taskId,size);
|
||||
break ;
|
||||
case 2:
|
||||
BadFit(taskId,size);
|
||||
break ;
|
||||
}
|
||||
}
|
||||
else if (ope == 2)
|
||||
{
|
||||
// ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>ţ<EFBFBD> ");
|
||||
scanf("%d", &taskId);
|
||||
freeSubArea(taskId);
|
||||
showSubArea();
|
||||
}
|
||||
else if(ope==3){
|
||||
showSubArea(); // <20><>ʾ<EFBFBD><CABE><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
else if(ope==4){
|
||||
showProess(count);
|
||||
output(count);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0/1/2\n");
|
||||
}
|
||||
}
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
|
||||
system("pause");
|
||||
return 0;
|
||||
}
|
15
计算机组成原理实验代码/F.cpp
Normal file
15
计算机组成原理实验代码/F.cpp
Normal file
@@ -0,0 +1,15 @@
|
||||
//#include <stdio.h>
|
||||
//#include <iostream>
|
||||
//#include<iomanip>
|
||||
//using namespace std;
|
||||
//int main()
|
||||
//{
|
||||
//
|
||||
// double F,C;
|
||||
// cin>>F;
|
||||
// C=(F-32)*5/9;
|
||||
// cout <<setiosflags(ios::fixed)<<setprecision(2) << C;
|
||||
// return 0;
|
||||
//}
|
||||
|
||||
|
91
计算机组成原理实验代码/FCFS.cpp
Normal file
91
计算机组成原理实验代码/FCFS.cpp
Normal file
@@ -0,0 +1,91 @@
|
||||
#include <stdio.h>
|
||||
#define n 5
|
||||
struct JCB
|
||||
{
|
||||
int name; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int atime; //<2F><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
int runtime; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
int ftime; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
int total; //<2F><>תʱ<D7AA><CAB1>
|
||||
float welght; //<2F><>Ȩ<EFBFBD><C8A8>תʱ<D7AA>䣨<EFBFBD><E4A3A8>תϵ<D7AA><CFB5><EFBFBD><EFBFBD>
|
||||
int arun; //<2F><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
}f[n];
|
||||
|
||||
|
||||
//<2F><>ʼִ<CABC><D6B4>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC>תʱ<D7AA><CAB1><EFBFBD>ʹ<EFBFBD>Ȩ<EFBFBD><C8A8>תʱ<D7AA>䣨<EFBFBD><E4A3A8>תϵ<D7AA><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int main()
|
||||
{
|
||||
int amount;
|
||||
int i,j,l,k,h;
|
||||
|
||||
struct JCB f[n];
|
||||
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD><EFBFBD><EFBFBD>(2-24):\n");
|
||||
scanf("%d",&amount);
|
||||
for(i=0;i<amount;i++)
|
||||
{
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣨0-30<33><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣨1-8<><38>:\n");
|
||||
scanf("%d",&f[i].name);
|
||||
scanf("%d",&f[i].atime);
|
||||
scanf("%d",&f[i].runtime);
|
||||
|
||||
}
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\t<EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>\t<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>\n");
|
||||
for(i=0;i<amount;i++)
|
||||
{
|
||||
printf("%d\t%d\t\t%d\t\n",f[i].name,f[i].atime,f[i].runtime);
|
||||
}
|
||||
printf("------<2D><><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD>FCFS<46><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨------\n");
|
||||
|
||||
|
||||
for(i=0;i<amount-1;i++) //<2F><><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><CCB5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA><EFBFBD><EFBFBD><EFBFBD>
|
||||
{ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD><EFA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
for(j=i+1;j<amount;j++)
|
||||
{
|
||||
if(f[j].atime < f[i].atime)
|
||||
{
|
||||
l =f[j].atime;
|
||||
h =f[j].runtime;
|
||||
k =f[j].name;
|
||||
|
||||
f[j].atime =f[i].atime;
|
||||
f[j].runtime =f[i].runtime;
|
||||
f[j].name =f[i].name;
|
||||
|
||||
f[i].atime =l;
|
||||
f[i].runtime =h;
|
||||
f[i].name =k;
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\n");
|
||||
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\t<EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>\t<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>\n");
|
||||
for(i=0;i<amount;i++)
|
||||
{
|
||||
printf("%d\t%d\t\t%d\t\n",f[i].name,f[i].atime,f[i].runtime);
|
||||
}
|
||||
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD> <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̽<EFBFBD><CCBD><EFBFBD> <20><>תʱ<D7AA><CAB1> <20><>תϵ<D7AA><CFB5>\n");
|
||||
f[0].arun=0;
|
||||
for(i=0;i<amount;i++)
|
||||
{
|
||||
if(f[i].arun<f[i].atime)
|
||||
{
|
||||
f[i].arun =f[i].atime;
|
||||
}
|
||||
|
||||
f[i].ftime=f[i].arun+f[i].runtime;
|
||||
f[i].total=f[i].ftime-f[i].atime;
|
||||
f[i].welght=(float)f[i].total/(float)f[i].runtime;
|
||||
printf("%d\t%d\t %d\t %d\t %d\t\t%d\t%f\n",f[i].name,f[i].atime,f[i].arun,f[i].runtime,f[i].ftime,f[i].total,f[i].welght);
|
||||
f[i+1].arun=f[i].arun+f[i].ftime;
|
||||
}
|
||||
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD> <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̽<EFBFBD><CCBD><EFBFBD> <20><>תʱ<D7AA><CAB1> <20><>תϵ<D7AA><CFB5>\n");
|
||||
for(i=0;i<amount;i++)
|
||||
{
|
||||
printf("%d\t%d\t %d\t %d\t %d\t\t%d\t%f\n",f[i].name,f[i].atime,f[i].arun,f[i].runtime,f[i].ftime,f[i].total,f[i].welght);
|
||||
}
|
||||
}
|
111
计算机组成原理实验代码/FCFS_2.cpp
Normal file
111
计算机组成原理实验代码/FCFS_2.cpp
Normal file
@@ -0,0 +1,111 @@
|
||||
|
||||
#include<iostream>
|
||||
using namespace std;
|
||||
#define N 3
|
||||
struct PCB
|
||||
{
|
||||
char name[8];
|
||||
int arrive_time;
|
||||
int run_time;
|
||||
int finish_time;
|
||||
int zhouzhuan_time;
|
||||
float daiquan_time;
|
||||
};
|
||||
|
||||
float sumzhouzhuantime,sumdaiquanzhouzhuantime;
|
||||
struct PCB pcb[N],temp;
|
||||
|
||||
void input(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void sort(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD>̰<EFBFBD><CCB0><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
|
||||
void output(); //<2F><><EFBFBD><EFBFBD><EFBFBD>㷨<EFBFBD><E3B7A8><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
|
||||
int main()
|
||||
{
|
||||
input();
|
||||
sort( );
|
||||
output();
|
||||
}
|
||||
|
||||
void input()
|
||||
{
|
||||
int i;
|
||||
cout<<"--------------------------------------"<<endl;
|
||||
cout<<" FCFS<46><53><EFBFBD><EFBFBD><EFBFBD>㷨 "<<endl;
|
||||
cout<<"--------------------------------------"<<endl;
|
||||
cout<<" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ:"<<endl;
|
||||
for ( i=0;i<N;i++)
|
||||
{
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n" );
|
||||
scanf("%s",pcb[i].name);
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뵽<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>:");
|
||||
scanf("%d",&pcb[i].arrive_time);
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>:");
|
||||
scanf("%d",&pcb[i].run_time);
|
||||
}
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:"<<endl;
|
||||
for( i=0;i<N;i++)
|
||||
{ printf("%s ",pcb[i].name);
|
||||
printf("%d ",pcb[i].arrive_time);
|
||||
printf("%d \n",pcb[i].run_time);
|
||||
}
|
||||
}
|
||||
|
||||
void sort()//<2F><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Խ<EFBFBD><D4BD>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
for(int i=0;i<N-1;i++)
|
||||
{
|
||||
for(int j=i+1;j<N;j++)
|
||||
{
|
||||
if(pcb[i].arrive_time>pcb[j].arrive_time)
|
||||
{
|
||||
temp=pcb[i];
|
||||
pcb[i]=pcb[j];
|
||||
pcb[j]=temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void output()
|
||||
{
|
||||
int i;
|
||||
cout<<"FCFS<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨:"<<endl;
|
||||
pcb[0].finish_time=pcb[0].arrive_time+pcb[0].run_time;
|
||||
pcb[0].zhouzhuan_time=pcb[0].finish_time-pcb[0].arrive_time;
|
||||
pcb[0].daiquan_time=(float)pcb[0].zhouzhuan_time/pcb[0].run_time;
|
||||
for(i=1;i<N;i++)
|
||||
{
|
||||
if(pcb[i].arrive_time>pcb[i-1].finish_time)
|
||||
{
|
||||
pcb[i].finish_time=pcb[i].arrive_time+pcb[i].run_time;
|
||||
pcb[i].zhouzhuan_time=pcb[i].run_time;
|
||||
pcb[i].daiquan_time=(float)pcb[i].zhouzhuan_time/pcb[i].run_time;
|
||||
}
|
||||
else
|
||||
{
|
||||
pcb[i].finish_time=pcb[i-1].finish_time+pcb[i].run_time;
|
||||
pcb[i].zhouzhuan_time=pcb[i].finish_time-pcb[i].arrive_time;
|
||||
pcb[i].daiquan_time=(float)pcb[i].zhouzhuan_time/pcb[i].run_time;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for(i=0;i<N;i++)
|
||||
{
|
||||
sumzhouzhuantime+=pcb[i].zhouzhuan_time;
|
||||
sumdaiquanzhouzhuantime+=pcb[i].daiquan_time;
|
||||
}
|
||||
|
||||
printf("----------------------------------------------------------------\n");
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>תʱ<D7AA><CAB1> <20><>Ȩ<EFBFBD><C8A8>תʱ<D7AA><CAB1> \n");
|
||||
printf("----------------------------------------------------------------\n");
|
||||
for(i=0;i<N;i++)
|
||||
{
|
||||
printf(" %s %d %d %d %d %.2f\n",pcb[i].name,pcb[i].arrive_time,pcb[i].run_time,pcb[i].finish_time,pcb[i].zhouzhuan_time,pcb[i].daiquan_time);
|
||||
|
||||
}
|
||||
cout<<"ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>תʱ<EFBFBD><EFBFBD>:"<<sumzhouzhuantime/N<<endl;
|
||||
cout<<"ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>תʱ<EFBFBD><EFBFBD>:"<<sumdaiquanzhouzhuantime/N<<endl;
|
||||
printf("----------------------------------------------------------------\n");
|
||||
}
|
||||
|
331
计算机组成原理实验代码/FenPei.cpp
Normal file
331
计算机组成原理实验代码/FenPei.cpp
Normal file
@@ -0,0 +1,331 @@
|
||||
#define _CRT_SECURE_NO_WARNINGS 1
|
||||
|
||||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
|
||||
enum STATE
|
||||
{
|
||||
Free,
|
||||
Busy
|
||||
};
|
||||
|
||||
struct subAreaNode
|
||||
{
|
||||
int addr; // <20><>ʼ<EFBFBD><CABC>ַ
|
||||
int size; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
||||
int taskId; // <20><>ҵ<EFBFBD><D2B5>
|
||||
STATE state; // <20><><EFBFBD><EFBFBD>״̬
|
||||
subAreaNode *pre; // <20><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>ָ<EFBFBD><D6B8>
|
||||
subAreaNode *nxt; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
}subHead;
|
||||
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
void intSubArea()
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
subAreaNode *fir = (subAreaNode *)malloc(sizeof(subAreaNode));
|
||||
// <20><><EFBFBD><EFBFBD><D7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
fir->addr = 0;
|
||||
fir->size = 1000; // <20>ڴ<EFBFBD><DAB4><EFBFBD>ʼ<EFBFBD><CABC>С
|
||||
fir->state = Free;
|
||||
fir->taskId = -1;
|
||||
fir->pre = &subHead;
|
||||
fir->nxt = NULL;
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>Ϣ
|
||||
subHead.pre = NULL;
|
||||
subHead.nxt = fir;
|
||||
}
|
||||
|
||||
// <20>״<EFBFBD><D7B4><EFBFBD>Ӧ<EFBFBD>㷨
|
||||
int firstFit(int taskId, int size)
|
||||
{
|
||||
subAreaNode *p = subHead.nxt;
|
||||
while (p != NULL)
|
||||
{
|
||||
if (p->state == Free && p->size >= size)
|
||||
{
|
||||
// <20>ҵ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>з<EFBFBD><D0B7><EFBFBD>
|
||||
if (p->size - size <= 10)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
p->state = Busy;
|
||||
p->taskId = taskId;
|
||||
}
|
||||
else {
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>СΪsize<7A><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
subAreaNode *node = (subAreaNode *)malloc(sizeof(subAreaNode));
|
||||
node->addr = p->addr + size;
|
||||
node->size = p->size - size;
|
||||
node->state = Free;
|
||||
node->taskId = -1;
|
||||
// <20>ķ<DEB8><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ָ<EFBFBD><D6B8>
|
||||
node->pre = p;
|
||||
node->nxt = p->nxt;
|
||||
if (p->nxt != NULL)
|
||||
{
|
||||
p->nxt->pre = node;
|
||||
}
|
||||
p->nxt = node;
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
p->size = size;
|
||||
p->state = Busy;
|
||||
p->taskId = taskId;
|
||||
}
|
||||
printf("<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>\n");
|
||||
return 1;
|
||||
}
|
||||
p = p->nxt;
|
||||
}
|
||||
printf("<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>...\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>㷨
|
||||
int bestFit(int taskId, int size)
|
||||
{
|
||||
subAreaNode *tar = NULL;
|
||||
int tarSize = 1000 + 1;
|
||||
subAreaNode *p = subHead.nxt;
|
||||
while (p != NULL)
|
||||
{
|
||||
// Ѱ<><D1B0><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><D1BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (p->state == Free && p->size >= size && p->size < tarSize) {
|
||||
tar = p;
|
||||
tarSize = p->size;
|
||||
}
|
||||
p = p->nxt;
|
||||
}
|
||||
if (tar != NULL) {
|
||||
// <20>ҵ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>з<EFBFBD><D0B7><EFBFBD>
|
||||
if (tar->size - size <= 10)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
tar->state = Busy;
|
||||
tar->taskId = taskId;
|
||||
}
|
||||
else
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>СΪsize<7A><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
subAreaNode *node = (subAreaNode *)malloc(sizeof(subAreaNode));
|
||||
node->addr = tar->addr + size;
|
||||
node->size = tar->size - size;
|
||||
node->state = Free;
|
||||
node->taskId = -1;
|
||||
// <20>ķ<DEB8><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ָ<EFBFBD><D6B8>
|
||||
node->pre = tar;
|
||||
node->nxt = tar->nxt;
|
||||
if (tar->nxt != NULL)
|
||||
{
|
||||
tar->nxt->pre = node;
|
||||
}
|
||||
tar->nxt = node;
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
tar->size = size;
|
||||
tar->state = Busy;
|
||||
tar->taskId = taskId;
|
||||
}
|
||||
printf("<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>\n");
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>...\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int freeSubArea(int taskId) // <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
{
|
||||
int flag = 0;
|
||||
subAreaNode *p = subHead.nxt, *pp;
|
||||
while (p != NULL)
|
||||
{
|
||||
if (p->state == Busy && p->taskId == taskId)
|
||||
{
|
||||
flag = 1;
|
||||
if ((p->pre != &subHead && p->pre->state == Free)
|
||||
&& (p->nxt != NULL && p->nxt->state == Free))
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20>Ⱥϲ<C8BA><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pp = p;
|
||||
p = p->pre;
|
||||
p->size += pp->size;
|
||||
p->nxt = pp->nxt;
|
||||
pp->nxt->pre = p;
|
||||
free(pp);
|
||||
// <20><><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pp = p->nxt;
|
||||
p->size += pp->size;
|
||||
p->nxt = pp->nxt;
|
||||
if (pp->nxt != NULL)
|
||||
{
|
||||
pp->nxt->pre = p;
|
||||
}
|
||||
free(pp);
|
||||
}
|
||||
else if ((p->pre == &subHead || p->pre->state == Busy)
|
||||
&& (p->nxt != NULL && p->nxt->state == Free))
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>2<EFBFBD><32>ֻ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>
|
||||
pp = p->nxt;
|
||||
p->size += pp->size;
|
||||
p->state = Free;
|
||||
p->taskId = -1;
|
||||
p->nxt = pp->nxt;
|
||||
if (pp->nxt != NULL)
|
||||
{
|
||||
pp->nxt->pre = p;
|
||||
}
|
||||
free(pp);
|
||||
}
|
||||
else if ((p->pre != &subHead && p->pre->state == Free)
|
||||
&& (p->nxt == NULL || p->nxt->state == Busy))
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>3<EFBFBD><33>ֻ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>
|
||||
pp = p;
|
||||
p = p->pre;
|
||||
p->size += pp->size;
|
||||
p->nxt = pp->nxt;
|
||||
if (pp->nxt != NULL)
|
||||
{
|
||||
pp->nxt->pre = p;
|
||||
}
|
||||
free(pp);
|
||||
}
|
||||
else
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>úϲ<C3BA>
|
||||
p->state = Free;
|
||||
p->taskId = -1;
|
||||
}
|
||||
}
|
||||
p = p->nxt;
|
||||
}
|
||||
if (flag == 1)
|
||||
{
|
||||
// <20><><EFBFBD>ճɹ<D5B3>
|
||||
printf("<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ճɹ<EFBFBD>...\n");
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// <20>Ҳ<EFBFBD><D2B2><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
printf("<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>...\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// <20><>ʾ<EFBFBD><CABE><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void showSubArea()
|
||||
{
|
||||
printf("*********************************************\n");
|
||||
printf("** <20><>ǰ<EFBFBD><C7B0><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD> **\n");
|
||||
printf("*********************************************\n");
|
||||
printf("** <20><>ʼ<EFBFBD><CABC>ַ | <20>ռ<EFBFBD><D5BC><EFBFBD>С | <20><><EFBFBD><EFBFBD>״̬ | <20><>ҵ<EFBFBD><D2B5> **\n");
|
||||
subAreaNode *p = subHead.nxt;
|
||||
while (p != NULL)
|
||||
{
|
||||
printf("**-----------------------------------------**\n");
|
||||
printf("**");
|
||||
printf(" %3d k |", p->addr);
|
||||
printf(" %3d k |", p->size);
|
||||
printf(" %s |", p->state == Free ? "Free" : "Busy");
|
||||
if (p->taskId > 0)
|
||||
{
|
||||
printf(" %2d ", p->taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf(" ");
|
||||
}
|
||||
printf("**\n");
|
||||
p = p->nxt;
|
||||
}
|
||||
printf("*********************************************\n");
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int option, ope, taskId, size;
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
intSubArea();
|
||||
// ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨
|
||||
while (1)
|
||||
{
|
||||
printf("\n\n");
|
||||
printf("\t****************<2A><>ѡ<EFBFBD><D1A1>Ҫģ<D2AA><C4A3><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>㷨******************\n");
|
||||
printf("\n\n");
|
||||
printf("\t \t 0 <20>״<EFBFBD><D7B4><EFBFBD>Ӧ<EFBFBD>㷨 \n");
|
||||
printf("\n\n");
|
||||
printf("\t \t 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>㷨 \n");
|
||||
printf("\n\n");
|
||||
printf("\t\t\t\t<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:");
|
||||
scanf("%d", &option);
|
||||
if (option == 0)
|
||||
{
|
||||
printf("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>㷨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>\n");
|
||||
break;
|
||||
}
|
||||
else if (option == 1)
|
||||
{
|
||||
printf("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>㷨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>\n");
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0/1\n\n");
|
||||
}
|
||||
}
|
||||
// ģ<>̬<E2B6AF><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨
|
||||
while (1)
|
||||
{
|
||||
printf("\n");
|
||||
printf("*********************************************\n");
|
||||
printf("** 1: <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD> 2: <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD> 0: <20>˳<EFBFBD> **\n");
|
||||
printf("*********************************************\n");
|
||||
scanf("%d", &ope);
|
||||
if (ope == 0) break;
|
||||
if (ope == 1) {
|
||||
// ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>ţ<EFBFBD> ");
|
||||
scanf("%d", &taskId);
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>С(KB)<29><> ");
|
||||
scanf("%d", &size);
|
||||
if (size <= 0)
|
||||
{
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ֵ\n");
|
||||
continue;
|
||||
}
|
||||
// <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD>㷨
|
||||
if (option == 0)
|
||||
{
|
||||
firstFit(taskId, size);
|
||||
}
|
||||
else
|
||||
{
|
||||
bestFit(taskId, size);
|
||||
}
|
||||
// <20><>ʾ<EFBFBD><CABE><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
showSubArea();
|
||||
}
|
||||
else if (ope == 2)
|
||||
{
|
||||
// ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>ţ<EFBFBD> ");
|
||||
scanf("%d", &taskId);
|
||||
freeSubArea(taskId);
|
||||
// <20><>ʾ<EFBFBD><CABE><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
showSubArea();
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0/1/2\n");
|
||||
}
|
||||
}
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
|
||||
system("pause");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
69
计算机组成原理实验代码/Fibonacci.cpp
Normal file
69
计算机组成原理实验代码/Fibonacci.cpp
Normal file
@@ -0,0 +1,69 @@
|
||||
/*------------------------------------------------
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD>
|
||||
--------------------------------------------------
|
||||
/* <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD>fun<75><6E><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD>ǣ<EFBFBD><C7A3><EFBFBD>Fibonacci<63><69><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD>С<EFBFBD><D0A1>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><C9BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD><D8A1><EFBFBD><EFBFBD><EFBFBD>Fibonacci<63><69><EFBFBD><EFBFBD>F(n)<29>Ķ<EFBFBD><C4B6><EFBFBD>Ϊ<EFBFBD><CEAA>
|
||||
F(0)=0<><30>F(1)=1
|
||||
F(n)=F(n-1)+F(n-2)
|
||||
<20><><EFBFBD>磺<EFBFBD><E7A3BA>s=1000ʱ<30><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ<D6B5><CEAA>1597<39><37>
|
||||
ע<>⣺<EFBFBD><E2A3BA><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>prog.c<>С<EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>main<69><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ں<EFBFBD><DABA><EFBFBD>fun<75>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䡣
|
||||
*********Begin**********<2A><>********** End **********<2A><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <conio.h>
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include<windows.h>
|
||||
int fun(int s)
|
||||
{
|
||||
/********** Begin **********/
|
||||
int f1,f2,f;
|
||||
f1=0;
|
||||
f2=1;
|
||||
do
|
||||
{
|
||||
f=f1+f2;
|
||||
f1=f2;
|
||||
f2=f;
|
||||
}
|
||||
while(f2<=s);
|
||||
|
||||
return f2;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End ***********/
|
||||
|
||||
}
|
||||
|
||||
|
||||
void NONO ( )
|
||||
{/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3>ر<EFBFBD><D8B1>ļ<EFBFBD><C4BC><EFBFBD> */
|
||||
FILE *fp, *wf ;
|
||||
int i, n, s ;
|
||||
|
||||
fp = fopen("bc06.in","r") ;
|
||||
if(fp == NULL) {
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>bc06.in<69><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!") ;
|
||||
}
|
||||
wf = fopen("bc06.out","w") ;
|
||||
for(i = 0 ; i < 10 ; i++) {
|
||||
fscanf(fp, "%d", &n) ;
|
||||
s = fun(n) ;
|
||||
fprintf(wf, "%d\n", s) ;
|
||||
}
|
||||
fclose(fp) ;
|
||||
fclose(wf) ;
|
||||
}
|
||||
|
||||
main() /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
{ int n;
|
||||
system("cls");
|
||||
n=1000;
|
||||
printf("n=%d,f=%d\n",n,fun(n));
|
||||
NONO();
|
||||
}
|
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;
|
||||
|
||||
}
|
||||
|
278
计算机组成原理实验代码/First_Fit_2.cpp
Normal file
278
计算机组成原理实验代码/First_Fit_2.cpp
Normal file
@@ -0,0 +1,278 @@
|
||||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
|
||||
enum STATE {
|
||||
F, W
|
||||
};
|
||||
|
||||
struct subAreaNode {
|
||||
int addr; // <20><>ʼ<EFBFBD><CABC>ַ
|
||||
int size; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
||||
int taskId; // <20><>ҵ<EFBFBD><D2B5>
|
||||
STATE state; // <20><><EFBFBD><EFBFBD>״̬
|
||||
subAreaNode *pre; // <20><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>ָ<EFBFBD><D6B8>
|
||||
subAreaNode *nxt; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
} subHead;
|
||||
|
||||
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
void intSubArea() {
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
subAreaNode *fir = (subAreaNode *)malloc(sizeof(subAreaNode));
|
||||
// <20><><EFBFBD><EFBFBD><D7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
fir->addr = 0;
|
||||
fir->size = 95; // <20>ڴ<EFBFBD><DAB4><EFBFBD>ʼ<EFBFBD><CABC>С
|
||||
fir->state = F;
|
||||
fir->taskId = -1;
|
||||
fir->pre = &subHead;
|
||||
fir->nxt = NULL;
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>Ϣ
|
||||
subHead.pre = NULL;
|
||||
subHead.nxt = fir;
|
||||
}
|
||||
|
||||
//// <20>״<EFBFBD><D7B4><EFBFBD>Ӧ<EFBFBD>㷨
|
||||
//int firstFit(int taskId, int size)
|
||||
//{
|
||||
//subAreaNode *p = subHead.nxt;
|
||||
//while (p != NULL)
|
||||
//{
|
||||
//if (p->state == F && p->size >= size)
|
||||
//{
|
||||
//// <20>ҵ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>з<EFBFBD><D0B7><EFBFBD>
|
||||
//if (p->size - size <= 10)
|
||||
//{
|
||||
//// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//p->state = W;
|
||||
//p->taskId = taskId;
|
||||
//}
|
||||
//else {
|
||||
//// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>СΪsize<7A><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//subAreaNode *node = (subAreaNode *)malloc(sizeof(subAreaNode));
|
||||
//node->addr = p->addr + size;
|
||||
//node->size = p->size - size;
|
||||
//node->state = F;
|
||||
//node->taskId = -1;
|
||||
//// <20>ķ<DEB8><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ָ<EFBFBD><D6B8>
|
||||
//node->pre = p;
|
||||
//node->nxt = p->nxt;
|
||||
//if (p->nxt != NULL)
|
||||
//{
|
||||
//p->nxt->pre = node;
|
||||
//}
|
||||
//p->nxt = node;
|
||||
//// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//p->size = size;
|
||||
//p->state = W;
|
||||
//p->taskId = taskId;
|
||||
//}
|
||||
//printf("<22>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>\n");
|
||||
//return 1;
|
||||
//}
|
||||
//p = p->nxt;
|
||||
//}
|
||||
//printf("<22>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>...\n");
|
||||
//return 0;
|
||||
//}
|
||||
|
||||
|
||||
//struct subAreaNode *node
|
||||
|
||||
void BestFit(int taskId, int size) { //<2F><EFBFBD><EEBBB5>Ӧ
|
||||
//<2F><><EFBFBD>ѿ<EFBFBD>ָ<EFBFBD><D6B8>
|
||||
struct subAreaNode *q = NULL;
|
||||
subAreaNode *node = subHead.nxt;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>п<EFBFBD>
|
||||
while (node != NULL) {
|
||||
if (node->state == F && node->size >= size) {
|
||||
q = node;
|
||||
break;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>û<EFBFBD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><D4B7><EFBFBD>
|
||||
if (node->nxt == NULL) {
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>㹻<EFBFBD>Ŀռ䣡\n");
|
||||
break;
|
||||
} else {
|
||||
node = node->nxt;
|
||||
}
|
||||
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD>Ѱ<EFBFBD><D1B0><EFBFBD><EFBFBD><EFBFBD>ѵĿ<D1B5><C4BF>п<EFBFBD>
|
||||
while (node != NULL) {
|
||||
if (node->state == F && node->size >= size && node->size < q->size) { //<2F><><EFBFBD>еĿռ<C4BF>
|
||||
q = node;
|
||||
}
|
||||
node = node->nxt;
|
||||
}
|
||||
if (q->size > size) { //<2F><><EFBFBD>ѿ<EFBFBD><D1BF>п<EFBFBD><D0BF>Ĵ<EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>Ŀռ<C4BF>
|
||||
struct subAreaNode *p = (struct subAreaNode*)malloc(sizeof(struct subAreaNode));
|
||||
p->addr = q->addr + size;
|
||||
p->size = q->size - size;
|
||||
p->state = F;
|
||||
p->taskId = -1;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ŀռ<C4BF>
|
||||
q->taskId = taskId;
|
||||
q->size = size;
|
||||
q->state = W;
|
||||
//<2F>ı<EFBFBD><C4B1>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
p->nxt = q->nxt;
|
||||
q->nxt = p;
|
||||
} else if (q->size == size) { //<2F><><EFBFBD>ѿ<EFBFBD><D1BF>п<EFBFBD><D0BF>ռ<EFBFBD><D5BC><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
q->taskId = taskId;
|
||||
q->size = size;
|
||||
q->state = W;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int freeSubArea(int taskId) { // <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
int flag = 0;
|
||||
subAreaNode *p = subHead.nxt, *pp;
|
||||
while (p != NULL) {
|
||||
if (p->state == W && p->taskId == taskId) {
|
||||
flag = 1;
|
||||
if ((p->pre != &subHead && p->pre->state == F)
|
||||
&& (p->nxt != NULL && p->nxt->state == F)) {
|
||||
// <20><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20>Ⱥϲ<C8BA><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pp = p;
|
||||
p = p->pre;
|
||||
p->size += pp->size;
|
||||
p->nxt = pp->nxt;
|
||||
pp->nxt->pre = p;
|
||||
free(pp);
|
||||
// <20><><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pp = p->nxt;
|
||||
p->size += pp->size;
|
||||
p->nxt = pp->nxt;
|
||||
if (pp->nxt != NULL) {
|
||||
pp->nxt->pre = p;
|
||||
}
|
||||
free(pp);
|
||||
} else if ((p->pre == &subHead || p->pre->state == W)
|
||||
&& (p->nxt != NULL && p->nxt->state == F)) {
|
||||
// <20><><EFBFBD><EFBFBD>2<EFBFBD><32>ֻ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>
|
||||
pp = p->nxt;
|
||||
p->size += pp->size;
|
||||
p->state = F;
|
||||
p->taskId = -1;
|
||||
p->nxt = pp->nxt;
|
||||
if (pp->nxt != NULL) {
|
||||
pp->nxt->pre = p;
|
||||
}
|
||||
free(pp);
|
||||
} else if ((p->pre != &subHead && p->pre->state == F)
|
||||
&& (p->nxt == NULL || p->nxt->state == W)) {
|
||||
// <20><><EFBFBD><EFBFBD>3<EFBFBD><33>ֻ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>
|
||||
pp = p;
|
||||
p = p->pre;
|
||||
p->size += pp->size;
|
||||
p->nxt = pp->nxt;
|
||||
if (pp->nxt != NULL) {
|
||||
pp->nxt->pre = p;
|
||||
}
|
||||
free(pp);
|
||||
} else {
|
||||
// <20><><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>úϲ<C3BA>
|
||||
p->state = F;
|
||||
p->taskId = -1;
|
||||
}
|
||||
}
|
||||
p = p->nxt;
|
||||
}
|
||||
if (flag == 1) {
|
||||
// <20><><EFBFBD>ճɹ<D5B3>
|
||||
printf("<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ճɹ<EFBFBD>...\n");
|
||||
return 1;
|
||||
} else {
|
||||
// <20>Ҳ<EFBFBD><D2B2><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
printf("<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>...\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// <20><>ʾ<EFBFBD><CABE><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void showSubArea() {
|
||||
printf("\n");
|
||||
printf(" <20><>ǰ<EFBFBD><C7B0><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD> \n");
|
||||
printf(" W:<3A><><EFBFBD><EFBFBD>״̬ F:<3A><><EFBFBD><EFBFBD>״̬ \n");
|
||||
printf("___________________________________________\n");
|
||||
printf("| <20><>ʼ<EFBFBD><CABC>ַ | <20>ռ<EFBFBD><D5BC><EFBFBD>С | <20><><EFBFBD><EFBFBD>״̬ | <20><>ҵ<EFBFBD><D2B5> |\n");
|
||||
subAreaNode *p = subHead.nxt;
|
||||
while (p != NULL) {
|
||||
printf("___________________________________________\n");
|
||||
|
||||
printf(" %3d k |", p->addr);
|
||||
printf(" %3d k |", p->size);
|
||||
printf(" %s |", p->state == F ? "F" : "W");
|
||||
if (p->taskId > 0) {
|
||||
printf(" %2d ", p->taskId);
|
||||
} else {
|
||||
printf(" ");
|
||||
}
|
||||
printf("\n");
|
||||
p = p->nxt;
|
||||
}
|
||||
printf("___________________________________________\n");
|
||||
}
|
||||
|
||||
int main() {
|
||||
int ope, taskId, size;
|
||||
char name;
|
||||
int ArriveTime;
|
||||
int ServerTime;
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
intSubArea();
|
||||
|
||||
// ģ<>̬<E2B6AF><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨
|
||||
while (1) {
|
||||
printf("Ĭ<EFBFBD><EFBFBD>FF(<28>״<EFBFBD><D7B4><EFBFBD>Ӧ<EFBFBD>㷨)\n");
|
||||
printf("_________________________________________\n");
|
||||
printf("| 1: <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD> 2: <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD> 0: <20>˳<EFBFBD> |\n");
|
||||
printf("|________________________________________|\n");
|
||||
scanf("%d", &ope);
|
||||
if (ope == 0) break;
|
||||
if (ope == 1) {
|
||||
// ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>ţ<EFBFBD> ");
|
||||
scanf("%d", &taskId);
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ");
|
||||
scanf("%s", &name);
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뵽<EFBFBD><EFBFBD>ʱ<EFBFBD>䣺 ");
|
||||
scanf("%d", &ArriveTime);
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣺 ");
|
||||
scanf("%d", &ServerTime);
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>С(KB)<29><> ");
|
||||
scanf("%d", &size);
|
||||
if (size <= 0) {
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ֵ\n");
|
||||
continue;
|
||||
}
|
||||
// <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD>㷨
|
||||
|
||||
//firstFit(taskId, size);
|
||||
BestFit(taskId, size);
|
||||
|
||||
// <20><>ʾ<EFBFBD><CABE><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
showSubArea();
|
||||
} else if (ope == 2) {
|
||||
// ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>ţ<EFBFBD> ");
|
||||
scanf("%d", &taskId);
|
||||
freeSubArea(taskId);
|
||||
// <20><>ʾ<EFBFBD><CABE><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
showSubArea();
|
||||
} else {
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0/1/2\n");
|
||||
}
|
||||
}
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
|
||||
system("pause");
|
||||
return 0;
|
||||
}
|
108
计算机组成原理实验代码/OPT.cpp
Normal file
108
计算机组成原理实验代码/OPT.cpp
Normal file
@@ -0,0 +1,108 @@
|
||||
#include <stdio.h>
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
int number=0;
|
||||
int Pyblock=0;
|
||||
int opt(int a[])
|
||||
{
|
||||
int i, j, zero = 0, one = 0, two = 0, q = 0;
|
||||
int b[Pyblock];
|
||||
for (i = 0; i < Pyblock; i++)
|
||||
{
|
||||
b[i] =-1; //<2F><>Ϊ-1
|
||||
}
|
||||
for (i = 0; i < number; i++)
|
||||
{
|
||||
if (i < 3)
|
||||
{
|
||||
q++;
|
||||
for (j = 0; j < Pyblock; j++)
|
||||
{
|
||||
if (b[j] == -1)
|
||||
{
|
||||
b[j] = a[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (b[0] != a[i])
|
||||
{
|
||||
if (b[1] != a[i])
|
||||
{
|
||||
if(b[2] != a[i]){
|
||||
q++;
|
||||
for (int t = i + 1; t < number; t++)
|
||||
{
|
||||
if (b[0] == a[t])
|
||||
zero = 1;
|
||||
else if (b[1] == a[t])
|
||||
one = 1;
|
||||
else if (b[2] == a[t])
|
||||
two = 1;
|
||||
if (zero == 1 && one == 1 && two == 0)
|
||||
{
|
||||
b[2] = a[i];
|
||||
break;
|
||||
}
|
||||
else if (zero == 1 && one == 0 && two == 1)
|
||||
{
|
||||
b[1] = a[i];
|
||||
break;
|
||||
}
|
||||
else if (zero == 0 && one == 1 && two == 1)
|
||||
{
|
||||
b[0] = a[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int f = 0; f < Pyblock; f++)
|
||||
{
|
||||
printf("%d\t", b[f]);
|
||||
}
|
||||
printf("\n");
|
||||
zero = 0;
|
||||
one = 0;
|
||||
two = 0;
|
||||
}
|
||||
return q;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int o;
|
||||
|
||||
while(1)
|
||||
{
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>:\n");
|
||||
scanf("%d",&Pyblock);
|
||||
printf("\n");
|
||||
break;
|
||||
}
|
||||
|
||||
while(1)
|
||||
{
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><EFBFBD><EFBFBD>:\n");
|
||||
scanf("%d",&number);
|
||||
printf("\n");
|
||||
break;
|
||||
}
|
||||
int a[number];
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n");
|
||||
for (int i = 0; i < number; i++)
|
||||
{
|
||||
cin>>a[i];
|
||||
}
|
||||
printf("optҳ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>㷨<EFBFBD><EFBFBD>\n");
|
||||
o = opt(a);
|
||||
printf("ȱҳ%d<>Σ<EFBFBD><CEA3>û<EFBFBD>%d<><64>, ȱҳ<C8B1><D2B3>:%.2f%% .\n\n\n", o, o - Pyblock,((double)o/number)*100);
|
||||
return 0;
|
||||
}
|
||||
|
||||
//4 3 2 1 4 3 5 4 3 2 1 5
|
||||
|
124
计算机组成原理实验代码/OPT2.cpp
Normal file
124
计算机组成原理实验代码/OPT2.cpp
Normal file
@@ -0,0 +1,124 @@
|
||||
#include<stdio.h>
|
||||
int block_num; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int page_num; //Ҫ<><D2AA><EFBFBD>ʵ<EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD>
|
||||
int page[100]; //Ҫ<><D2AA><EFBFBD>ʵ<EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int memory[10]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ҳ<EFBFBD><D2B3>
|
||||
int table[100][10]; //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
||||
int reg[10]; //<2F>Ĵ<EFBFBD><C4B4><EFBFBD>--<2D><>¼ҳ<C2BC><D2B3><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
char Que[100]; //<2F><><EFBFBD>飬<EFBFBD><E9A3AC>¼<EFBFBD>Ƿ<EFBFBD>ȱҳ
|
||||
|
||||
int main()
|
||||
{
|
||||
int count=0; //<2F><>¼ȱҳ<C8B1><D2B3><EFBFBD><EFBFBD>
|
||||
int i,j,k;
|
||||
while(1)
|
||||
{
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>(M<=10):\n");
|
||||
scanf("%d",&block_num);
|
||||
printf("\n");
|
||||
break;
|
||||
}
|
||||
|
||||
while(1)
|
||||
{
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><EFBFBD><EFBFBD>(P<=100):\n");
|
||||
scanf("%d",&page_num);
|
||||
printf("\n");
|
||||
break;
|
||||
}
|
||||
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n");
|
||||
for(i=0;i<page_num;i++)
|
||||
{
|
||||
scanf("%d",&page[i]);
|
||||
Que[i] = 'N';
|
||||
}
|
||||
|
||||
for(i=0;i<block_num;i++)
|
||||
memory[i]=-1; //<2F><>ʼ<EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ<EFBFBD>գ<EFBFBD><D5A3><EFBFBD>-1<><31>ʾ
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>
|
||||
for(i=0;i<page_num;i++)
|
||||
{
|
||||
if(i==0) //<2F><><EFBFBD>ʵĵ<CAB5>һ<EFBFBD><D2BB>ҳ<EFBFBD><D2B3>
|
||||
{
|
||||
memory[i]=page[i];
|
||||
reg[i]=i;
|
||||
for(j=0;j<block_num;j++)
|
||||
table[i][j]=memory[j];
|
||||
Que[i]='Y';
|
||||
count++;
|
||||
}
|
||||
else
|
||||
{ /*<2A>ж<EFBFBD><D0B6><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
for(j=0,k=0;j<block_num;j++)
|
||||
{
|
||||
if(memory[j]!=page[i])
|
||||
k++;
|
||||
else
|
||||
{ /*<2A><>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
reg[j]=i; //ˢ<>¸<EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
for(int n=0;n<block_num;n++)
|
||||
table[i][n]=memory[n];
|
||||
}
|
||||
}
|
||||
}
|
||||
if(k==block_num) /*<2A><>ҳ<EFBFBD>治<EFBFBD><E6B2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>ȱҳ*/
|
||||
{
|
||||
int q=0;
|
||||
Que[i]='Y';
|
||||
count++;
|
||||
for(int j=0;j<block_num;j++)
|
||||
{
|
||||
if(memory[j]==-1) /*<2A>ڴ<EFBFBD><DAB4><EFBFBD>δ<EFBFBD><CEB4>*/
|
||||
{
|
||||
memory[j]=page[i];
|
||||
reg[j]=i;
|
||||
for(int n=0;n<block_num;n++)
|
||||
table[i][n]=memory[n];
|
||||
break;
|
||||
}
|
||||
else
|
||||
q++;
|
||||
}
|
||||
if(q==block_num)/*<2A>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>LRU<52>û<EFBFBD><C3BB>㷨ѡ<E3B7A8><EFBFBD>ҳ*/
|
||||
{
|
||||
int min=0; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ҳ
|
||||
for(int m=1;m<block_num;m++)
|
||||
if(reg[m]<reg[min])
|
||||
min=m;
|
||||
memory[min]=page[i];
|
||||
reg[min]=i; /*<2A><>¼<EFBFBD><C2BC>ҳ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>ʱ<EFBFBD>䣨<EFBFBD>µ<EFBFBD><C2B5><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰmin<69><6E>λ<EFBFBD>ã<EFBFBD><C3A3>轫minλ<6E>õķ<C3B5><C4B7><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>*/
|
||||
for(int n=0;n<block_num;n++)
|
||||
table[i][n]=memory[n];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD>
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>OPTҳ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>㷨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n");
|
||||
printf("\n");
|
||||
printf("\n");
|
||||
printf("ҳ<EFBFBD><EFBFBD>:");
|
||||
for(i=0;i<page_num;i++)
|
||||
printf("%3d",page[i]);
|
||||
printf("\n");
|
||||
printf("-------------------------\n");
|
||||
for(i=0;i<block_num;i++)
|
||||
{
|
||||
printf("%2d:",i);
|
||||
for(j=0;j<page_num;j++)
|
||||
printf("%3d",table[j][i]);
|
||||
printf("\n");
|
||||
}
|
||||
printf("-------------------------\n");
|
||||
printf("ȱҳ:");
|
||||
for(i=0;i<page_num;i++)
|
||||
printf("%3c",Que[i]);
|
||||
printf("\n");
|
||||
|
||||
printf("-------------------------\n");
|
||||
printf("\tȱҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d\n",count);
|
||||
printf("\tȱҳ<EFBFBD><EFBFBD>:%d/%d\n",count,page_num);
|
||||
printf("-------------------------\n");
|
||||
}
|
88
计算机组成原理实验代码/OPT3.cpp
Normal file
88
计算机组成原理实验代码/OPT3.cpp
Normal file
@@ -0,0 +1,88 @@
|
||||
#include <stdio.h>
|
||||
#define number 11
|
||||
#define block 3
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
int opt(int a[])
|
||||
{
|
||||
int i, j, zero = 0, one = 0, two = 0, q = 0;
|
||||
int b[block];
|
||||
for (i = 0; i < block; i++)
|
||||
{
|
||||
b[i] =-1; //<2F><>Ϊ-1
|
||||
}
|
||||
for (i = 0; i < number; i++)
|
||||
{
|
||||
if (i < 3)
|
||||
{
|
||||
// printf("ȱҳ<C8B1><D2B3>%d\n", a[i]);
|
||||
q++;
|
||||
for (j = 0; j < block; j++)
|
||||
{
|
||||
if (b[j] == -1)
|
||||
{
|
||||
b[j] = a[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (b[0] != a[i] && b[1] != a[i] && b[2] != a[i])
|
||||
{
|
||||
// printf("ȱҳ<C8B1><D2B3>%d\n", a[i]);
|
||||
q++;
|
||||
for (int t = i + 1; t < number; t++)
|
||||
{
|
||||
if (b[0] == a[t])
|
||||
zero = 1;
|
||||
else if (b[1] == a[t])
|
||||
one = 1;
|
||||
else if (b[2] == a[t])
|
||||
two = 1;
|
||||
if (zero == 1 && one == 1 && two == 0)
|
||||
{
|
||||
b[2] = a[i];
|
||||
break;
|
||||
}
|
||||
else if (zero == 1 && one == 0 && two == 1)
|
||||
{
|
||||
b[1] = a[i];
|
||||
break;
|
||||
}
|
||||
else if (zero == 0 && one == 1 && two == 1)
|
||||
{
|
||||
b[0] = a[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// else
|
||||
// printf("%d<><64>ȱҳ<C8B1><D2B3>\n", a[i]);
|
||||
}
|
||||
for (int f = 0; f < block; f++)
|
||||
{
|
||||
printf("%d\t", b[f]);
|
||||
}
|
||||
printf("\n");
|
||||
zero = 0;
|
||||
one = 0;
|
||||
two = 0;
|
||||
}
|
||||
return q;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int i, o, l=0,f=0;
|
||||
int a[number];
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n");
|
||||
for (i = 0; i < number; i++)
|
||||
{
|
||||
cin>>a[i];
|
||||
}
|
||||
printf("optҳ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>㷨<EFBFBD><EFBFBD>\n");
|
||||
o = opt(a);
|
||||
printf("ȱҳ%d<>Σ<EFBFBD><CEA3>û<EFBFBD>%d<>Ρ<EFBFBD>\n\n\n", o, o - block);
|
||||
return 0;
|
||||
}
|
169
计算机组成原理实验代码/RR.cpp
Normal file
169
计算机组成原理实验代码/RR.cpp
Normal file
@@ -0,0 +1,169 @@
|
||||
#include <iostream>
|
||||
#include <queue>
|
||||
#include <iomanip>
|
||||
using namespace std;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char name;
|
||||
int ArrivalTime;
|
||||
int ServiceTime;
|
||||
int FinishedTime;
|
||||
int WholeTime;
|
||||
double WeightWholeTime;
|
||||
}RR;
|
||||
|
||||
static queue<RR>RRqueue; //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static double AverageWT =0,AverageWWT=0;
|
||||
static int q; //ʱ<><CAB1>Ƭ
|
||||
static int n; //<2F><><EFBFBD≯<EFBFBD><CCB8><EFBFBD>
|
||||
static RR RRarray[100]; //<2F><><EFBFBD>̽ṹ
|
||||
|
||||
void Input()
|
||||
{
|
||||
|
||||
|
||||
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
||||
cout<<"________________________________________________________"<<endl;
|
||||
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
cin>>n;
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD> ";
|
||||
cin>>q;
|
||||
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:"<<endl;
|
||||
for (int i=0;i<n;i++)
|
||||
{
|
||||
cin>>RRarray[i].name;
|
||||
}
|
||||
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵ĵ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>:"<<endl;
|
||||
for (int i=0;i<n;i++)
|
||||
{
|
||||
cin>>RRarray[i].ArrivalTime;
|
||||
}
|
||||
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵ķ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>:"<<endl;
|
||||
for (int i=0;i<n;i++)
|
||||
{
|
||||
cin>>RRarray[i].ServiceTime;
|
||||
}
|
||||
}
|
||||
|
||||
void RRAlgorithm()
|
||||
{
|
||||
char processMoment[100]; //<2F>洢ÿ<E6B4A2><C3BF>ʱ<EFBFBD><CAB1>Ƭp<C6AC><70>Ӧ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
RRqueue.push(RRarray[0]);
|
||||
|
||||
int processMomentPoint = 0;
|
||||
int CurrentTime=0;
|
||||
int tempTime;
|
||||
int i=1; //ָ<><D6B8><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD>̵<EFBFBD><CCB5>±<EFBFBD>
|
||||
int finalProcessNumber = 0; //ִ<><D6B4>RR<52>㷨<EFBFBD><EFBFBD><F3A3ACBD>̵ĸ<CCB5><C4B8><EFBFBD>
|
||||
int processTime[50];
|
||||
|
||||
//CurrentTime<6D>ij<EFBFBD>ʼ<EFBFBD><CABC>
|
||||
if (RRarray[0].ServiceTime>=q)
|
||||
{
|
||||
CurrentTime = q;
|
||||
}
|
||||
else
|
||||
{
|
||||
CurrentTime = RRarray[0].ServiceTime;
|
||||
}
|
||||
|
||||
while(!RRqueue.empty())
|
||||
{
|
||||
for (int j=i;j<n;j++) //ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵ĵ<CCB5><C4B5><EFBFBD>ʱ<EFBFBD><CAB1>С<EFBFBD>ڵ<EFBFBD>ǰʱ<C7B0><CAB1><EFBFBD>Ľ<EFBFBD><C4BD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
if (RRarray[j].name!=NULL && CurrentTime >= RRarray[j].ArrivalTime)
|
||||
{
|
||||
RRqueue.push(RRarray[j]);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
if (RRqueue.front().ServiceTime<q)
|
||||
{
|
||||
tempTime = RRqueue.front().ServiceTime;
|
||||
}
|
||||
else
|
||||
{
|
||||
tempTime = q;
|
||||
}
|
||||
|
||||
RRqueue.front().ServiceTime -= q; //<2F><><EFBFBD><EFBFBD>ÿִ<C3BF><D6B4>һ<EFBFBD>Σ<EFBFBD><CEA3>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> -q
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
processMoment[processMomentPoint] = RRqueue.front().name;
|
||||
processMomentPoint++;
|
||||
processTime[finalProcessNumber] = tempTime;
|
||||
finalProcessNumber++;
|
||||
|
||||
|
||||
if (RRqueue.front().ServiceTime <= 0) //<2F><>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
//RRqueue.front().FinishedTime = CurrentTime;
|
||||
RRqueue.pop(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵ķ<CCB5><C4B7><EFBFBD>ʱ<EFBFBD><CAB1>С<EFBFBD>ڵ<EFBFBD><DAB5>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>β
|
||||
RRqueue.push(RRqueue.front());
|
||||
RRqueue.pop();
|
||||
}
|
||||
CurrentTime += tempTime;
|
||||
|
||||
}
|
||||
|
||||
|
||||
for (int i=0;i<n;i++)
|
||||
{
|
||||
RRarray[i].WholeTime = RRarray[i].FinishedTime - RRarray[i].ArrivalTime;
|
||||
RRarray[i].WeightWholeTime = (double)RRarray[i].WholeTime/RRarray[i].ServiceTime;
|
||||
}
|
||||
|
||||
double x=0,y=0;
|
||||
for (int i=0;i<n;i++)
|
||||
{
|
||||
x += RRarray[i].WholeTime;
|
||||
y += RRarray[i].WeightWholeTime;
|
||||
}
|
||||
|
||||
AverageWT = x/n;
|
||||
AverageWWT = y/n;
|
||||
|
||||
}
|
||||
|
||||
void display()
|
||||
{
|
||||
cout<<"________________________________________________________"<<endl;
|
||||
cout<<"RR<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨ִ<EFBFBD>к<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>"<<endl;
|
||||
cout<<setw(10)<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD>"<<" ";
|
||||
cout<<setw(10)<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>"<<" ";
|
||||
cout<<setw(10)<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>"<<" ";
|
||||
cout<<setw(10)<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>"<<" ";
|
||||
cout<<setw(10)<<"<EFBFBD><EFBFBD>תʱ<EFBFBD><EFBFBD>"<<" ";
|
||||
cout<<setw(10)<<"<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>תʱ<EFBFBD><EFBFBD>"<<endl;
|
||||
for (int i = 0;i<n;i++)
|
||||
{
|
||||
cout<<setw(10)<<RRarray[i].name<<" ";
|
||||
cout<<setw(10)<<RRarray[i].ArrivalTime<<" ";
|
||||
cout<<setw(10)<<RRarray[i].ServiceTime<<" ";
|
||||
cout<<setw(10)<<RRarray[i].FinishedTime<<" ";
|
||||
cout<<setw(10)<<RRarray[i].WholeTime<<" ";
|
||||
cout<<setw(10)<<RRarray[i].WeightWholeTime<<" "<<endl;;
|
||||
}
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD>̵<EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>תʱ<EFBFBD><EFBFBD> = "<<AverageWT<<endl;
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD>̵<EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>תʱ<EFBFBD><EFBFBD> = "<<AverageWWT<<endl;
|
||||
cout<<"________________________________________________________"<<endl;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
Input();
|
||||
RRAlgorithm();
|
||||
display();
|
||||
system("pause");
|
||||
return 0;
|
||||
}
|
97
计算机组成原理实验代码/RR_V2.0.cpp
Normal file
97
计算机组成原理实验代码/RR_V2.0.cpp
Normal file
@@ -0,0 +1,97 @@
|
||||
#include<iostream>
|
||||
using namespace std;
|
||||
const int N=10;
|
||||
double daoda[N];//<2F>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
double fuwu[N]; //<2F>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
double fuwu_[N];//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||
double wancheng[N]={0};//<2F>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ,<2C><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ȶ<EFBFBD><C8B6><EFBFBD>ֵΪ0
|
||||
double zhouzhuan[N];//<2F>洢<EFBFBD><E6B4A2>תʱ<D7AA><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
double daiquanz[N];//<2F>洢<EFBFBD><E6B4A2>Ȩ<EFBFBD><C8A8>תʱ<D7AA><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
string name[N];//ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
int main()
|
||||
{
|
||||
//RR ʱ<><CAB1>Ƭ<EFBFBD><C6AC>ת<EFBFBD>㷨
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<endl;
|
||||
int n;//<2F><>ҵ<EFBFBD><D2B5>
|
||||
cin>>n;
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<n<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣺"<<endl;
|
||||
for(int i=0;i<n;i++)
|
||||
{
|
||||
cin>>name[i];//<2F><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>A B C ֮<><D6AE><EFBFBD><EFBFBD>
|
||||
cin>>daoda[i]>>fuwu[i];//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD> <20><><EFBFBD>뵽<EFBFBD><EBB5BD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
fuwu_[i]=fuwu[i];//<2F><><EFBFBD><EFBFBD>
|
||||
}
|
||||
double q;
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>Ƭq:"<<endl;
|
||||
cin>>q;
|
||||
for(int i=0;i<n;i++)//ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
for(int j=0;j<n;j++)
|
||||
{
|
||||
if(daoda[i]<daoda[j])
|
||||
{
|
||||
swap(daoda[i],daoda[j]);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⼸<EFBFBD><E2BCB8><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ͬһ<CDAC><D2BB><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><CCB5><EFBFBD>Щʱ<D0A9><CAB1><EFBFBD><EFBFBD>Ӧ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>һ<EFBFBD><D2BB>
|
||||
swap(fuwu[i],fuwu[j]);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>佻<EFBFBD><E4BDBB><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ҲӦ<D2B2>ý<EFBFBD><C3BD><EFBFBD>
|
||||
swap(fuwu_[i],fuwu_[j]);
|
||||
swap(zhouzhuan[i],zhouzhuan[j]);
|
||||
swap(daiquanz[i],daiquanz[i]);
|
||||
swap(name[i],name[j]);//<2F><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>ҲҪ<D2B2><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>ı仯<C4B1><E4BBAF><EFBFBD>仯
|
||||
}
|
||||
}
|
||||
}
|
||||
//<2F><>ʱ<EFBFBD><CAB1>
|
||||
double addfuwu=0;//<2F>ۼƷ<DBBC><C6B7><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC>ʼֵ<CABC><D6B5>Ϊ0
|
||||
int count=n;//Ϊ<>˲<EFBFBD><CBB2>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><6E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>count=n
|
||||
int count1=0;//<2F><>ijһ<C4B3><D2BB><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>ɵĽ<C9B5><C4BD><EFBFBD>
|
||||
while(count!=0)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30>ʱ<EFBFBD><CAB1>
|
||||
{
|
||||
count=count-count1;//<2F><>ʣ<EFBFBD><CAA3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>ɵĽ<C9B5><C4BD><EFBFBD><EFBFBD><EFBFBD>Ŀ
|
||||
for(int i=0;i<n;i++)
|
||||
{
|
||||
if(fuwu[i]<=q)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>µķ<C2B5><C4B7><EFBFBD>ʱ<EFBFBD><CAB1>С<EFBFBD><D0A1>ʱ<EFBFBD><CAB1>Ƭ
|
||||
{
|
||||
if(wancheng[i]!=0)//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ֹ<EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>תʱ<D7AA><CAB1><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ɵĽ<C9B5><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ
|
||||
{
|
||||
addfuwu=addfuwu+0;//<2F><><EFBFBD><EFBFBD>ȥ<EFBFBD>ۼ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>0
|
||||
}
|
||||
else
|
||||
{
|
||||
addfuwu=addfuwu+fuwu[i];//<2F>ۼ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD>ۼ<EFBFBD>ʱ<EFBFBD><CAB1>+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣨<EFBFBD><E4A3A8><EFBFBD><EFBFBD>С<EFBFBD><D0A1>q<EFBFBD><71>
|
||||
wancheng[i]=addfuwu;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>=Ŀǰ<C4BF>ۼƷ<DBBC><C6B7><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
count1++;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD>Ŀ
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fuwu[i]=fuwu[i]-q;//ʣ<><CAA3><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ʱ<EFBFBD><CAB1>-ʱ<><CAB1>Ƭq
|
||||
addfuwu=addfuwu+q;//<2F>ۼƷ<DBBC><C6B7><EFBFBD>ʱ<EFBFBD><CAB1>=֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>+ʱ<><CAB1>Ƭq(<28><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵ķ<CCB5><C4B7><EFBFBD>ʱ<EFBFBD><CAB1>)
|
||||
}
|
||||
}
|
||||
}
|
||||
// ----------------------
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>תʱ<D7AA><CAB1><EFBFBD>ʹ<EFBFBD>Ȩ<EFBFBD><C8A8>תʱ<D7AA><CAB1>
|
||||
for(int i=0;i<n;i++)
|
||||
{
|
||||
zhouzhuan[i]=wancheng[i]-daoda[i];//<2F><>תʱ<D7AA><CAB1>=<3D><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>-<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
daiquanz[i]=zhouzhuan[i]/fuwu_[i];//<2F><>Ȩ<EFBFBD><C8A8>תʱ<D7AA><CAB1>=<3D><>תʱ<D7AA><CAB1>/<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
}
|
||||
cout<<"RR<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨ִ<EFBFBD>к<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>£<EFBFBD>"<<endl;
|
||||
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<" "<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>"<<" "<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>"<<" "<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>"<<" "<<"<EFBFBD><EFBFBD>תʱ<EFBFBD><EFBFBD>"<<" "<<"<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>תʱ<EFBFBD><EFBFBD>"<<endl;
|
||||
for(int i=0;i<n;i++)
|
||||
{
|
||||
cout<<name[i]<<" \t";
|
||||
cout<<daoda[i]<<" \t"<<fuwu_[i]<<" \t";
|
||||
cout<<wancheng[i]<<" \t";
|
||||
cout<<zhouzhuan[i]<<"\t"<<daiquanz[i]<<"\t"<<endl;
|
||||
}
|
||||
double sum1=0;
|
||||
double sum2=0;
|
||||
for(int i=0;i<n;i++)
|
||||
{
|
||||
sum1+=zhouzhuan[i];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>תʱ<D7AA><CAB1><EFBFBD>ĺ<EFBFBD>
|
||||
sum2+=daiquanz[i]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8>תʱ<D7AA><CAB1><EFBFBD>ĺ<EFBFBD>
|
||||
}
|
||||
cout<<"ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>תʱ<EFBFBD>䣺"<<sum1/n<<endl;//ƽ<><C6BD><EFBFBD><EFBFBD>תʱ<D7AA><CAB1>=<3D><>תʱ<D7AA><CAB1>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
cout<<"ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>תʱ<EFBFBD>䣺"<<sum2/n<<endl;//ƽ<><C6BD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8>תʱ<D7AA><CAB1>=<3D><>Ȩ<EFBFBD><C8A8>תʱ<D7AA><CAB1>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
return 0;
|
||||
}
|
0
计算机组成原理实验代码/TestData.txt
Normal file
0
计算机组成原理实验代码/TestData.txt
Normal file
60
计算机组成原理实验代码/raylib_test.cpp
Normal file
60
计算机组成原理实验代码/raylib_test.cpp
Normal file
@@ -0,0 +1,60 @@
|
||||
#include <raylib.h>
|
||||
#include <math.h>
|
||||
|
||||
int main(void) {
|
||||
// 初始化
|
||||
const int screenWidth = 640;
|
||||
const int screenHeight = 480;
|
||||
|
||||
//启用反锯齿
|
||||
SetConfigFlags(FLAG_MSAA_4X_HINT);
|
||||
|
||||
//初始化窗口
|
||||
InitWindow(screenWidth, screenHeight, "Sample");
|
||||
|
||||
// 初始化摄像机
|
||||
Camera3D camera = { 0 };
|
||||
camera.position = (Vector3) {
|
||||
40.0f, 20.0f, 0.0f
|
||||
}; //相机所在位置{x,y,z}
|
||||
camera.target = (Vector3) {
|
||||
0.0f, 0.0f, 0.0f
|
||||
}; //相机朝向位置{x,y,z}
|
||||
camera.up = (Vector3) {
|
||||
0.0f, 1.0f, 0.0f
|
||||
}; //相机正上方朝向矢量
|
||||
camera.fovy = 70.0f; //相机视野宽度
|
||||
camera.projection = CAMERA_PERSPECTIVE; //采用透视投影
|
||||
|
||||
//设置动画帧率(刷新率,fps)为30帧/秒
|
||||
SetTargetFPS(30);
|
||||
//--------------------------------------------------------------------------------------
|
||||
int angle = 0; //多边形旋转角度
|
||||
|
||||
// 主游戏循环
|
||||
while (!WindowShouldClose()) { //关闭窗口或者按ESC键时返回true
|
||||
|
||||
double time = GetTime();
|
||||
// 每次循环更新一帧
|
||||
// 摄像机围绕y轴转动
|
||||
double cameraTime = time * 0.3;
|
||||
camera.position.x = (float)cos(cameraTime) * 40.0f;
|
||||
camera.position.z = (float)sin(cameraTime) * 40.0f;
|
||||
|
||||
BeginDrawing();
|
||||
|
||||
ClearBackground(WHITE);
|
||||
//以摄像机视角绘制3d内容
|
||||
BeginMode3D(camera);
|
||||
DrawCube(Vector3{0, 0, 0}, 10, 10, 10, VIOLET);
|
||||
DrawCubeWires(Vector3{0, 0, 0}, 10, 10, 10, BLACK);
|
||||
EndMode3D();
|
||||
EndDrawing();
|
||||
}
|
||||
|
||||
//关闭窗口
|
||||
CloseWindow();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user