没有合适的资源?快使用搜索试试~ 我知道了~
DOS的文件分配表策略的模拟实现
5星 · 超过95%的资源 需积分: 3 23 下载量 70 浏览量
2009-12-08
16:19:10
上传
评论
收藏 69KB DOC 举报
温馨提示
试读
12页
DOS的文件分配表策略的模拟实现,实现DOS的文件分配表策略和文件目录项
资源推荐
资源详情
资源评论
#include <windows.h>
#include <iostream>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define Request_num 13 //循环次数
using namespace std;
int FAT[30][10];
int iname = 1;
int LT_length = 0;
int LN_length = 0;
typedef struct File{
int filename; //文件名
int filesize; //簇数
int start; //起始
struct File *next;
}File, *FileLink;
//设置输出字体的颜色 textcolor(15);//白 textcolor(12); textcolor(10);
void textcolor (int color)
{
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), color);
}
//初始化 FAT 数组
void Initialize()
{
int i, j;
for(i = 0; i < 30; i++)
for(j = 0; j < 10 ;j++)
FAT[i][j] = -1;
}
//检查数组空闲空间大小
int CheckSpace(int size)
{
int i, j, space=0;
for(i = 0; i < 30; i++)
for(j = 0; j < 10; j++)
{
if(FAT[i][j] == -1) space++;
if(space >= size) return 1;
}
return -1;
}
//随机产生删除的结点(即随机产生删除第几个文件)
int xRandom(int length)
{
int number;
srand( (unsigned)time( 0 ) );
number = 1 + (rand() % (length - 2));
if(length > 25 && number < 4 )
number += 20 ;
return number;
}
//随机生成文件大小
int Random()
{
int random1, random2, random;
srand( (unsigned)time( 0 ) );
if(iname % 10 == 0)
random1 = -2 + (rand() % 15);
else if(iname % 10 == 1)
random1 = -5 + (rand() % 20);
else if(iname % 10 == 2)
random1 = 4 + (rand() % 10);
else if(iname % 10 == 3)
random1 = -3 + (rand() % 20);
else if(iname % 10 == 4)
random1 = -8 + (rand() % 15);
else if(iname % 10 == 5)
random1 = 2 + (rand() % 10);
else if(iname % 10 == 6)
random1 = -6 + (rand() % 25);
else if(iname % 10 == 7)
random1 = -2 + (rand() % 15);
else if(iname % 10 == 8)
random1 = 5 + (rand() % 10);
else if(iname % 10 == 9)
random1 = -3 + (rand() % 20);
random2 = -5 + (rand() % 15);
random = random1 + random2;
if(random < 0) random += 15;
if(random <= 2) random += 3;
return random;
}
//分配簇
int Allocate(int size)
{
int i, j, k, l, flag1 = 0, flag2 = 0, flag = 0, first;
for(i = 0; i < 30; i++)
for(j = 0; j < 10; j++)
{
if(FAT[i][j] == -1)
{
flag++;
if(flag2 == 1)
{
FAT[k][l] = i*10 + j + 1;
flag2 = 0;
}
if(flag1 == 0)
{
first = i*10 + j + 1;
flag1 = 1;
}
k = i;
l = j;
flag2 = 1;
if(flag >= size)
{
FAT[i][j] = 0;
flag2 = 0;
return first;
}
}
}
return first;
剩余11页未读,继续阅读
资源评论
- w2163u2012-06-20适合一些初学者,资源很有参考价值,功能都能实现。
- hhloong2012-05-31DOS的文件分配表策略的模拟实现,实现DOS的文件分配表策略和文件目录项,功能都能实现,代码也完整。
LHWLJS
- 粉丝: 2
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功