用C++(编译器不支持C++11标准、不调用SDL2_ttf库但可以调用SDL2库)模拟实现电梯 LOOK、C-SCAN 算法,并计算及比较磁头移动道数。 三、要求及提示 本题目必须单人完成。 1、首先假设磁盘磁道数为 1500,磁头初始位置可任意设置。 2、用随机数生成函数产生“磁道号”序列(即磁盘请求的位置),共产生 400 个。其中 50%位于 0~499,25%分布在 500~999,25%分布在 1000~1499。 3、计算及比较每种磁盘调度算法下的磁头移动道数。 注:要求代码产生图形可视化界面:该可视化包含 坐标轴,横轴为时间,纵轴为磁道访问索引,并且能够动态模拟每个算法的调度过程, 可采用从上一个请求到下一个请求进行连线的方式
时间: 2024-03-15 16:42:35 浏览: 120
好的,这是一个模拟实现电梯 LOOK、C-SCAN 算法的问题,并计算及比较磁头移动道数,要求使用C++实现,编译器不支持C++11标准,不能调用SDL2_ttf库,但可以调用SDL2库。同时,要求实现一个图形可视化界面,该可视化包含坐标轴,横轴为时间,纵轴为磁道访问索引,并且能够动态模拟每个算法的调度过程,可采用从上一个请求到下一个请求进行连线的方式。
首先,我们需要了解电梯调度算法中的两种算法 LOOK 和 C-SCAN 算法。LOOK 算法是一种类似于电梯运行的算法,它在磁盘上寻找最近的请求,并在相反的方向上遇到边界时改变方向。C-SCAN 算法也是一种类似于电梯运行的算法,但是它总是在一个方向上移动,直到到达磁盘的边缘,然后返回磁盘的另一侧。
接下来,我们需要生成随机的磁道号序列,可以使用rand()函数来生成随机数,然后根据磁盘请求的位置分布,将随机数分为三个区间,分别生成对应的磁道号。
然后,我们需要实现 LOOK 和 C-SCAN 算法。对于每个算法,我们需要将生成的磁道号序列按照算法的规则进行排序,然后计算磁头移动道数。计算磁头移动道数时,可以通过计算相邻请求之间的距离来实现。
最后,我们需要实现图形可视化界面,可以使用SDL2库来绘制界面。我们需要绘制一个坐标轴,然后在每个请求到达时,将其绘制在图形界面上,并连接相邻请求之间的线段,模拟磁头移动的过程。需要注意的是,每个算法的处理结果需要在图形界面上显示出来,方便比较不同算法的效果。
以上是解决该问题的基本思路,具体实现时需要注意细节处理,如排序算法的实现、图形界面的交互逻辑实现等。
相关问题
linux 安装SDL2_ttf
以下是在 Linux 上安装 SDL2_ttf 的步骤:
1. 打开终端,使用以下命令安装 SDL2_ttf 的依赖项:
```
sudo apt-get install libsdl2-ttf-dev
```
2. 下载 SDL2_ttf 的源代码。你可以从官方网站(https://www.libsdl.org/projects/SDL_ttf/)下载最新版本的源代码,也可以使用以下命令进行下载:
```
wget https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-2.0.15.tar.gz
```
3. 解压下载的源代码文件:
```
tar zxvf SDL2_ttf-2.0.15.tar.gz
```
4. 进入解压后的目录:
```
cd SDL2_ttf-2.0.15
```
5. 使用以下命令进行编译和安装:
```
./configure
make
sudo make install
```
完成以上步骤后,SDL2_ttf 库就已经成功安装到你的 Linux 系统中了。
kylin 安装SDL2_ttf
安装 SDL2_ttf 需要以下步骤:
1. 安装依赖库:
```
sudo apt-get install build-essential libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev
```
2. 下载 SDL2_ttf 开源库:
```
wget https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-2.0.15.tar.gz
```
3. 解压压缩包:
```
tar -zxvf SDL2_ttf-2.0.15.tar.gz
cd SDL2_ttf-2.0.15
```
4. 编译并安装:
```
./configure
make
sudo make install
```
完成以上步骤后,SDL2_ttf 库就已经成功安装到你的系统中了。在编译你的程序时,需要加上 `-lSDL2_ttf` 参数以链接 SDL2_ttf 库。
阅读全文