在devc++和另一平台运行结果。前者不符合预期,fun3函数中第二个for循环未执行。
↓devc++结果
↓其他平台结果(符合预期)
#include <iostream>
#include <string>
using namespace std;
struct content
{
float s;
float j;
float k;
float v;
float z;
float d;
};
int max(int x,int y)
{
return x>y?x:y;
}
void prt(struct content a[],int n)
{
int i;
a[0].k=a[0].s;
a[0].v=a[0].k+a[0].j;
a[0].z=a[0].v-a[0].s;
a[0].d=a[0].z/a[0].j;
float sum=a[0].z,add=a[0].d;
for(i=1;i<n;i++)
{
if(a[i].s<=a[i-1].v) a[i].k=a[i-1].v;
else a[i].k=a[i].s;
a[i].v=a[i].k+a[i].j;
a[i].z=a[i].v-a[i].s;
a[i].d=a[i].z/a[i].j;
sum+=a[i].z;
add+=a[i].d;
}
printf("--------------------------------------------------");
printf("\n平均周转时间:%.4f",sum/n);
printf("\n平均带权周转时间:%.4f\n",add/n);
printf("提交\t执行\t开始\t完成\t周转\t带权周转\n");
for(i=0;i<n;i++)
{
printf("%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",a[i].s,a[i].j,a[i].k,a[i].v,a[i].z,a[i].d);
}
printf("--------------------------------------------------");
printf("\n\n请输入接下来的操作:\n");
}
void fun1(struct content a[],int n)
{
int i,j;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j].s>a[j+1].s)
{
float temp=a[j].s;
a[j].s=a[j+1].s;
a[j+1].s=temp;
temp=a[j].j;
a[j].j=a[j+1].j;
a[j+1].j=temp;
}
}
}
prt(a,n);
}
void fun2(struct content a[],int n)
{
int i,j;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j].j>a[j+1].j)
{
float temp=a[j].s;
a[j].s=a[j+1].s;
a[j+1].s=temp;
temp=a[j].j;
a[j].j=a[j+1].j;
a[j+1].j=temp;
}
}
}
prt(a,n);
}
void fun3(struct content a[],int n)
{
int i,j;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j].s>a[j+1].s)
{
float temp=a[j].s;
a[j].s=a[j+1].s;
a[j+1].s=temp;
temp=a[j].j;
a[j].j=a[j+1].j;
a[j+1].j=temp;
}
}
}
a[0].v=a[0].s+a[0].j;
for(i=1;i<n-1;i++)
{
for(j=1;j<n-i;j++)
{
if(((a[j].j-a[j].s+a[0].v)/a[j].j)<((a[j+1].j-a[j+1].s+a[0].v)/a[j+1].j))
{
float temp=a[j].s;
a[j].s=a[j+1].s;
a[j+1].s=temp;
temp=a[j].j;
a[j].j=a[j+1].j;
a[j+1].j=temp;
}
}
}
prt(a,n);
}
int markzhu()
{
int pd;
printf("1.开始输入数据\n2.退出程序\n");
while(1)
{
scanf("%d",&pd);
if(pd<1||pd>2) printf("\n输入错误,请重新输入:");
else break;
}
return pd;
}
int marks()
{
int pd;
printf("请选择算法(输入序号):\n1.先来先服务算法\n2.短作业优先\n3.优先比算法\n4.返回\n");
while(1)
{
scanf("%d",&pd);
if(pd<1||pd>4) printf("\n输入错误,请重新输入:");
else break;
}
return pd;
}
int main()
{
while(1)
{
int pd=markzhu();
if(pd==1)
{
while(1)
{
struct content a[20];
int pd=marks(),i=0;
if(pd==4) break;
printf("输入0,0结束\n");
do
{
printf("请输入第%d组数据(提交时刻,执行时间):",(i+1));
scanf("%f,%f",&a[i].s,&a[i].j);
i++;
}while(a[i-1].s!=0&&a[i-1].j!=0);
if(pd==1)
{
fun1(a,i-1);
break;
}
if(pd==2)
{
fun2(a,i-1);
break;
}
if(pd==3)
{
fun3(a,i-1);
break;
}
}
}
if(pd==2) break;
}
}
fun3函数代码图片