void FCFS() { cout << endl; cout << "\t\t\t\t\tFCFS" << endl; initial(); //按照输入顺序依次访问磁道 moveDistance[0] = abs(trackOrder[0] - startTrack); Sum_Distance = moveDistance[0]; visitOrder[0] = trackOrder[0]; for (int i = 1; i < trackNum; i++) { moveDistance[i] = abs(trackOrder[i] - trackOrder[i - 1]); Sum_Distance += moveDistance[i]; visitOrder[i] = trackOrder[i]; } averageDistance = Sum_Distance * 1.0 / trackNum; display(); }这段代码的流程图是什么
时间: 2024-03-19 08:41:31 浏览: 20
以下是这段代码的简单流程图:
开始 --> 初始化 --> 计算第一个磁道号与起点的距离 --> 计算相邻磁道间的距离 --> 计算总距离和平均距离 --> 显示结果 --> 结束
其中,每个流程步骤都用一个矩形框表示,箭头表示执行顺序和流程方向。这个流程图较为简单,只是描述了这段代码的基本流程,更详细的流程细节可以根据实际需求进行补充。
相关问题
帮我将下面代码转为java代码 #include "stdafx.h" #include <iostream> #include <iomanip> #include <math.h> using namespace std; const int MaxNumber=100; int TrackOrder[MaxNumber]; int MoveDistance[MaxNumber]; int FindOrder[MaxNumber]; double AverageDistance; bool direction; int BeginNum; int M=500; int N; int SortOrder[MaxNumber]; bool Finished[MaxNumber]; void Inith() { cout<<"请输入提出磁盘I/O申请数:"; cin>>N; cout<<"请依次输入要访问的磁道号"; for(int i=0;i<N;i++) cin>>TrackOrder[i]; for(int j=0;j<N;j++) MoveDistance[j]=0; cout<<"请输入开始磁道号:"; cin>>BeginNum; for(int k=0;k<N;k++) Finished[k]=false; for(int l=0;l<N;l++) SortOrder[l]=TrackOrder[l]; } void Sort() { int temp; for(int i=N-1;i>=0;i--) for(int j=0;j<i;j++) { if(SortOrder[j]>SortOrder[j+1]) { temp=SortOrder[j]; SortOrder[j]=SortOrder[j+1]; SortOrder[j+1]=temp; } }} void FCFS() { int temp; temp=BeginNum; for(int i=0;i<N;i++) { MoveDistance[i]=abs(TrackOrder[i]-temp); temp=TrackOrder[i]; FindOrder[i]=TrackOrder[i]; }} void SSTF() { int temp,n; int A=M; temp=BeginNum; for(int i=0;i<N;i++) { for(int j=0;j<N;j++) { if(abs(TrackOrder[j]-temp)<A&&Finished[j]==false) { A=abs(TrackOrder[j]-temp); n=j; } else continue; } Finished[n]=true; MoveDistance[i]=A; temp=TrackOrder[n]; A=M; FindOrder[i]=TrackOrder[n]; }} void Count() { int Total=0; for(int i=0;i<N;i++) { Total+=MoveDistance[i]; } AverageDistance=((double)Total)/((double)N);} void Show() { cout<<setw(20)<<"被访问的下一个磁道号"<<setw(20)<<"移动距离(磁道数)"<<endl; for(int i=0;i<N;i++) { cout<<setw(15)<<FindOrder[i]<<setw(15)<<MoveDistance[i]<<endl; } cout<<setw(20)<<"平均寻道长度:"<<AverageDistance<<endl; cout<<endl;} int main() { int y=1; int s; Inith(); while(y) { cout<<"请选择寻道方式:--FCFS;2--SSTF:"; cin>>s; switch(s) { case 1:FCFS();Count();Show();break; case 2:SSTF();Count();Show();break; } cout<<"是否继续选择寻道算法?1--是;--否;"; int p; cin>>p; y=p; } exit; return 0;}
import java.util.Scanner;
public class DiskScheduling {
public static final int MaxNumber = 100;
public static int[] TrackOrder = new int[MaxNumber];
public static int[] MoveDistance = new int[MaxNumber];
public static int[] FindOrder = new int[MaxNumber];
public static double AverageDistance;
public static boolean direction;
public static int BeginNum;
public static int M = 500;
public static int N;
public static int[] SortOrder = new int[MaxNumber];
public static boolean[] Finished = new boolean[MaxNumber];
public static void Inith() {
Scanner sc = new Scanner(System.in);
System.out.print("请输入提出磁盘I/O申请数:");
N = sc.nextInt();
System.out.print("请依次输入要访问的磁道号:");
for(int i=0;i<N;i++) {
TrackOrder[i] = sc.nextInt();
}
for(int j=0;j<N;j++) {
MoveDistance[j]=0;
}
System.out.print("请输入开始磁道号:");
BeginNum = sc.nextInt();
for(int k=0;k<N;k++) {
Finished[k]=false;
}
for(int l=0;l<N;l++) {
SortOrder[l]=TrackOrder[l];
}
}
public static void Sort() {
int temp;
for(int i=N-1;i>=0;i--) {
for(int j=0;j<i;j++) {
if(SortOrder[j]>SortOrder[j+1]) {
temp=SortOrder[j];
SortOrder[j]=SortOrder[j+1];
SortOrder[j+1]=temp;
}
}
}
}
public static void FCFS() {
int temp;
temp=BeginNum;
for(int i=0;i<N;i++) {
MoveDistance[i]=Math.abs(TrackOrder[i]-temp);
temp=TrackOrder[i];
FindOrder[i]=TrackOrder[i];
}
}
public static void SSTF() {
int temp,n;
int A=M;
temp=BeginNum;
for(int i=0;i<N;i++) {
for(int j=0;j<N;j++) {
if(Math.abs(TrackOrder[j]-temp)<A&&Finished[j]==false) {
A=Math.abs(TrackOrder[j]-temp);
n=j;
}
else continue;
}
Finished[n]=true;
MoveDistance[i]=A;
temp=TrackOrder[n];
A=M;
FindOrder[i]=TrackOrder[n];
}
}
public static void Count() {
int Total=0;
for(int i=0;i<N;i++) {
Total+=MoveDistance[i];
}
AverageDistance=((double)Total)/((double)N);
}
public static void Show() {
System.out.printf("%20s%20s\n","被访问的下一个磁道号","移动距离(磁道数)");
for(int i=0;i<N;i++) {
System.out.printf("%15d%15d\n",FindOrder[i],MoveDistance[i]);
}
System.out.printf("%20s%.2f\n","平均寻道长度:",AverageDistance);
System.out.println();
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int y=1;
int s;
Inith();
while(y==1) {
System.out.print("请选择寻道方式:1--FCFS;2--SSTF:");
s = sc.nextInt();
switch(s) {
case 1:
FCFS();
Count();
Show();
break;
case 2:
SSTF();
Count();
Show();
break;
default:
System.out.println("输入有误!");
break;
}
System.out.print("是否继续选择寻道算法?1--是;2--否:");
int p = sc.nextInt();
y=p;
}
sc.close();
System.exit(0);
}
}
FCFS调度算法代码实现
好的,FCFS调度算法是先来先服务调度算法,其实现代码如下:
```c++
#include <iostream>
using namespace std;
struct Process {
int pid; // 进程号
int burst; // 执行时间
int arrival; // 到达时间
};
void FCFS(Process processes[], int n) {
int waitingTime[n], turnAroundTime[n], totalWaitingTime = 0, totalTurnAroundTime = 0;
waitingTime[0] = 0;
turnAroundTime[0] = processes[0].burst;
for (int i = 1; i < n; i++) {
waitingTime[i] = turnAroundTime[i - 1];
turnAroundTime[i] = waitingTime[i] + processes[i].burst;
}
for (int i = 0; i < n; i++) {
totalWaitingTime += waitingTime[i];
totalTurnAroundTime += turnAroundTime[i];
}
double avgWaitingTime = (double)totalWaitingTime / n;
double avgTurnAroundTime = (double)totalTurnAroundTime / n;
cout << "FCFS Scheduling Algorithm\n";
cout << "Process\tBurst Time\tArrival Time\tWaiting Time\tTurn-Around Time\n";
for (int i = 0; i < n; i++) {
cout << "P" << processes[i].pid << "\t ";
cout << processes[i].burst << "\t\t ";
cout << processes[i].arrival << "\t\t ";
cout << waitingTime[i] << "\t\t ";
cout << turnAroundTime[i] << endl;
}
cout << "Average Waiting Time: " << avgWaitingTime << endl;
cout << "Average Turn-Around Time: " << avgTurnAroundTime << endl;
}
int main() {
Process processes[] = {{1, 10, 0}, {2, 5, 0}, {3, 8, 0}};
int n = sizeof(processes) / sizeof(Process);
FCFS(processes, n);
return 0;
}
```
以上是FCFS调度算法的实现代码,可以计算出每个进程的等待时间和周转时间,最后输出平均等待时间和平均周转时间。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)