int su=kai; sum=0; for(int i=0;i<num;i++) { if(su<s[i]) s1[i]=s[i]-su; else s1[i]=su-s[i]; su=s[i]; sum+=s1[i]; } for(int i=0;i<num;i++) { printf("\t%d\t\t\t\t\t%d\t\t\n",s[i],s1[i]); } printf("寻道长度:%d\n",sum); avg1=(double)sum/num; printf("平均寻道长度:%.2lf\n",avg1); // printf("%f\n",avg1); arr[0]=avg1; }具体实现
时间: 2024-03-03 12:51:31 浏览: 171
aula 1_SumSeriesC++_SUM_
这段代码可以放在main函数中,它的作用是计算磁盘调度算法中的磁头移动距离和平均移动距离。具体实现如下:
```c++
int main() {
int s[MAX], s1[MAX]; // 定义数组s和s1,存储磁道号和磁头移动距离
int num; // 需要访问的磁道数目
int kai; // 起始磁道号
int sum; // 磁头移动距离之和
double avg1; // 平均移动距离
double arr[10]; // 存储平均移动距离的数组
printf("请输入需要访问的磁道数目:");
scanf("%d", &num);
printf("请输入起始磁道号:");
scanf("%d", &kai);
printf("请输入需要访问的磁道号:");
for (int i = 0; i < num; i++) {
scanf("%d", &s[i]);
}
// 计算磁头移动距离和平均移动距离
int su = kai;
sum = 0;
for (int i = 0; i < num; i++) {
if (su < s[i])
s1[i] = s[i] - su;
else
s1[i] = su - s[i];
su = s[i];
sum += s1[i];
}
for (int i = 0; i < num; i++) {
printf("\t%d\t\t\t\t\t%d\t\t\n", s[i], s1[i]);
}
printf("寻道长度:%d\n", sum);
avg1 = (double)sum / num;
printf("平均寻道长度:%.2lf\n", avg1);
arr[0] = avg1;
return 0;
}
```
在输入需要访问的磁道数目、起始磁道号和需要访问的磁道号后,程序会计算出磁头移动距离和平均移动距离,并将平均移动距离存入数组arr的第一个元素中。其中,数组s存储需要访问的磁道号,数组s1存储每个磁道号与前一个磁道号之间的距离。最后,程序会输出每个磁道号与前一个磁道号之间的距离,磁头移动距离之和和平均移动距离。
阅读全文