为什么我的程序不能显示啊输出....555555

JULY2006 2008-01-06 04:31:17
刚学的C++
为什么我的程序不能显示啊输出....555555
哪位大哥帮我看下...
#include <iostream>
using namespace std;
struct job
{
char name;
float arrivetime;//到达时间
float runtime;//运行时间
float starttime;//开始时间
float finishtime;//完成时间
float totaltime;//周转时间
float weighttime;//带权时间
};

void input(job *k)
{
int i;
for(i=0;i<6;i++)
{
float a,b;char c;
cout<<"作业名:";cin>>c;
k[i].name=c;
cout<<"到达时间:";cin>>a;
k[i].arrivetime=a;
cout<<"运行时间:";cin>>b;
k[i].runtime=b;
}
}

void output(job *k,float average_totaltime,float average_weighttime)
{
cout<<"顺序:"<<endl;
int i;
for(i=0;i<6;i++)
{
cout<<k[i].name<<"->";
}
cout<<"平均周转时间:"<<average_totaltime<<endl;
cout<<"平均带权周转时间:"<<average_weighttime<<endl;
}

void calculation(job *k,float &average_totaltime,float &average_weighttime)
{
int i;float sum_totaltime=0,sum_weighttime=0;
for(i=0;i<6;i++)
{
if(i==0)
k[i].starttime=k[i].finishtime;
else
{k[i].starttime=k[i-1].finishtime;}
k[i].finishtime=k[i].starttime+k[i].runtime;
}
for(i=0;i<6;i++)
{
k[i].totaltime=k[i].finishtime-k[i].arrivetime;
k[i].weighttime=k[i].totaltime/k[i].runtime;
sum_totaltime=sum_totaltime+k[i].totaltime;
sum_weighttime=sum_totaltime+k[i].weighttime;
}
average_totaltime=sum_totaltime/6;
average_weighttime=sum_weighttime/6;
}

void FCFS(job *k)
{
int i,j;job t;float a,b;
for(j=6;j>0;j++)
{for(i=0;i<j;i++)
{
if(k[i].arrivetime<k[i+1].arrivetime)
{
t=k[i];
k[i]=k[i+1];
k[i+1]=t;
}
}}
calculation(k,a,b);
output(k,a,b);
}

void SJF(job *k)
{
int i,j,d,e,next;job t;float a,b,min;
for(j=6;j>0;j++)
{
for(i=0;i<j;i++)
{
if(k[i].arrivetime<k[i+1].arrivetime)
{
t=k[i];
k[i]=k[i+1];
k[i+1]=t;
}
}
}
for(i=0;i<6;i++)
{
if(i==0)
k[i].starttime=k[i].finishtime;
else
{k[i].starttime=k[i-1].finishtime;}
k[i].finishtime=k[i].starttime+k[i].runtime;
j=0;
for(e=i+1;e<6;e++)
{
if(k[e].arrivetime<=k[i].finishtime)j++;
}//确定有几个作业可挑选
min=k[i+1].runtime;
next=i+1;
for(d=i+1;d<i+j;d++)
{
if(k[d+1].runtime<min)
{
min=k[d+1].runtime;
next=d+1;
}
}

t=k[i+1];
k[i+1]=k[next];
k[next]=t;
}
calculation(k,a,b);
output(k,a,b);
}

void HIGHEST(job *k)
{
int i,j,next,e,d;job t;float a,b,max;
for(j=6;j>0;j++)
{for(i=0;i<j;i++)
{
if(k[i].arrivetime<k[i+1].arrivetime)
{
t=k[i];
k[i]=k[i+1];
k[i+1]=t;
}
}}
for(i=0;i<6;i++)
{
if(i==0)
k[i].starttime=k[i].finishtime;
else
{k[i].starttime=k[i-1].finishtime;}
k[i].finishtime=k[i].starttime+k[i].runtime;
j=0;
for(e=i+1;e<6;e++)
{
if(k[e].arrivetime<=k[i].finishtime)j++;
}//确定有几个作业可挑选
max=(k[i+1].starttime-k[i+1].arrivetime)/k[i+1].runtime;
next=i+1;
for(d=i+1;d<i+j;d++)
{
if(max<=(k[i].finishtime-k[d+1].arrivetime)/k[d+1].runtime)
{
max=(k[i].finishtime-k[d+1].arrivetime)/k[d+1].runtime;
next=d+1;
}

}
t=k[i+1];
k[i+1]=k[next];
k[next]=t;
}
calculation(k,a,b);
output(k,a,b);
}

void main()
{
job g[6];
input(g);//输入
job *g_1=g,*g_2=g;
FCFS(g);
SJF(g_1);
HIGHEST(g_2);
}
...全文
150 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
rularys 2008-01-07
  • 打赏
  • 举报
回复

"for(j=6;j> 0;j++)"
->
"for(j=6;j> 0;j--)"
KingOfMiaoMiao 2008-01-06
  • 打赏
  • 举报
回复
恰恰相反,应被推荐的是使用#include <iostream>
那个是编译错误,很好查的
名字空间
kcn83 2008-01-06
  • 打赏
  • 举报
回复
#include <iostream> 这里 应该是<iostream.h>
有用到流输出的 类cin 如 cout < < 把 < <之间的空格删除掉变成这样 <<
还有一个就是 这句using namespace std; 我也不是很清楚,我刚学。
KingOfMiaoMiao 2008-01-06
  • 打赏
  • 举报
回复
哦,还以为是冒泡呢,我就直接改了,呵呵
JULY2006 2008-01-06
  • 打赏
  • 举报
回复
我改了下
#include <iostream>
using namespace std;
struct job
{
char name;
float arrivetime;//到达时间
float runtime;//运行时间
float starttime;//开始时间
float finishtime;//完成时间
float totaltime;//周转时间
float weighttime;//带权时间
};

void input(job *k)
{
int i;
for(i=0;i<6;i++)
{
float a,b;char c;
cout<<"作业名:";cin>>c;
k[i].name=c;
cout<<"到达时间:";cin>>a;
k[i].arrivetime=a;
cout<<"运行时间:";cin>>b;
k[i].runtime=b;
}
}

void output(job *k,float average_totaltime,float average_weighttime)
{
cout<<"顺序:"<<endl;
int i;
for(i=0;i<6;i++)
{
cout<<k[i].name<<"->";
}
cout<<"平均周转时间:"<<average_totaltime<<endl;
cout<<"平均带权周转时间:"<<average_weighttime<<endl;
}

void calculation(job *k,float &average_totaltime,float &average_weighttime)
{
int i;float sum_totaltime=0,sum_weighttime=0;
for(i=0;i<6;i++)
{
if(i==0)
k[i].starttime=k[i].finishtime;
else
{k[i].starttime=k[i-1].finishtime;}
k[i].finishtime=k[i].starttime+k[i].runtime;
}
for(i=0;i<6;i++)
{
k[i].totaltime=k[i].finishtime-k[i].arrivetime;
k[i].weighttime=k[i].totaltime/k[i].runtime;
sum_totaltime=sum_totaltime+k[i].totaltime;
sum_weighttime=sum_totaltime+k[i].weighttime;
}
average_totaltime=sum_totaltime/6;
average_weighttime=sum_weighttime/6;
}

void FCFS(job *k)
{
float a,b;
calculation(k,a,b);
output(k,a,b);
}

void SJF(job *k)
{
int i,j,d,e,next;job t;float a,b,min;
for(i=0;i<6;i++)
{
if(i==0)
k[i].starttime=k[i].finishtime;
else
{k[i].starttime=k[i-1].finishtime;}
k[i].finishtime=k[i].starttime+k[i].runtime;
j=0;
for(e=i+1;e<6;e++)
{
if(k[e].arrivetime<=k[i].finishtime)j++;
}//确定有几个作业可挑选
min=k[i+1].runtime;
next=i+1;
for(d=i+1;d<i+j;d++)
{
if(k[d+1].runtime<min)
{
min=k[d+1].runtime;
next=d+1;
}
}

t=k[i+1];
k[i+1]=k[next];
k[next]=t;
}
calculation(k,a,b);
output(k,a,b);
}

void HIGHEST(job *k)
{
int i,j,next,e,d;job t;float a,b,max;
for(i=0;i<6;i++)
{
if(i==0)
k[i].starttime=k[i].finishtime;
else
{k[i].starttime=k[i-1].finishtime;}
k[i].finishtime=k[i].starttime+k[i].runtime;
j=0;
for(e=i+1;e<6;e++)
{
if(k[e].arrivetime<=k[i].finishtime)j++;
}//确定有几个作业可挑选
max=(k[i+1].starttime-k[i+1].arrivetime)/k[i+1].runtime;
next=i+1;
for(d=i+1;d<i+j;d++)
{
if(max<=(k[i].finishtime-k[d+1].arrivetime)/k[d+1].runtime)
{
max=(k[i].finishtime-k[d+1].arrivetime)/k[d+1].runtime;
next=d+1;
}

}
t=k[i+1];
k[i+1]=k[next];
k[next]=t;
}
calculation(k,a,b);
output(k,a,b);
}

int main()
{
job g[6],t;int i,j;
input(g);/* debug......
g[1].name='a';g[1].arrivetime=0;g[1].runtime=6;
g[2].name='b';g[2].arrivetime=2;g[2].runtime=50;
g[3].name='c';g[3].arrivetime=5;g[3].runtime=20;
g[4].name='d';g[4].arrivetime=5;g[4].runtime=10;
g[5].name='e';g[5].arrivetime=12;g[5].runtime=40;
g[0].name='f';g[0].arrivetime=15;g[0].runtime=8;
end ........ */
for(j=0;j<6;j++)
for(i=0;i<=j;i++)
{
if(g[i].arrivetime<g[i+1].arrivetime)
{
t=g[i];
g[i]=g[i+1];
g[i+1]=t;
}
}
job *g_1=g,*g_2=g;
FCFS(g);
SJF(g_1);
HIGHEST(g_2);
return 0;
}
JULY2006 2008-01-06
  • 打赏
  • 举报
回复
是j--
JULY2006 2008-01-06
  • 打赏
  • 举报
回复
应该是j--
JULY2006 2008-01-06
  • 打赏
  • 举报
回复
恩 循环那好像错了
KingOfMiaoMiao 2008-01-06
  • 打赏
  • 举报
回复
你要是输入的时候,将main换成如下即可:
int
main()
{
job g[6];
input(g);
/* debug......
g[1].name='a';g[1].arrivetime=2007;g[1].runtime=2008;
g[2].name='b';g[2].arrivetime=2008;g[2].runtime=2009;
g[3].name='c';g[3].arrivetime=2009;g[3].runtime=2010;
g[4].name='d';g[4].arrivetime=2010;g[4].runtime=2011;
g[5].name='e';g[5].arrivetime=2011;g[5].runtime=2012;
g[0].name='f';g[0].arrivetime=2012;g[0].runtime=2013;
end ........ */

job * g_1(g), *g_2(g);
FCFS(g);//////////////////////////////////////////////////////
SJF(g_1);/////////////////////////////////////////////////////
HIGHEST(g_2);/////////////////////////////////////////////////

return 0;
}


另外,我还觉得你那结构体的name不如用string类型的好哦
gridcell 2008-01-06
  • 打赏
  • 举报
回复
首先,你程序里的注释比较少.像FCFS,SJF,HIGHEST这几个函数,不太好猜它们是什么作用.
另外,程序里有这么一句话:for(j=6;j>0;j++)
这个循环里没有什么特别的处理地方,好像是个死循环啊……
KingOfMiaoMiao 2008-01-06
  • 打赏
  • 举报
回复
#include    <iostream>
using namespace std;

struct job {
char name;
float arrivetime;
//到达时间
float runtime;
//运行时间
float starttime;
//开始时间
float finishtime;
//完成时间
float totaltime;
//周转时间
float weighttime;
//带权时间
};

void
input(job * k)
{
int i;
for (i = 0; i < 6; i++) {
cout <<"作业名:";
cin >>k[i].name;////////////////////////////////////////
cout <<"到达时间:";
cin >>k[i].arrivetime;
cout <<"运行时间:";
cin >>k[i].runtime;
}
}

void
output(job * k, float average_totaltime, float average_weighttime)
{
cout <<"顺序:" <<endl;
int i;
for (i = 0; i < 6; i++) {
cout <<k[i].name <<"-> ";
}
cout <<"平均周转时间:" <<average_totaltime <<endl;
cout <<"平均带权周转时间:" <<average_weighttime <<endl;
}

void
calculation(job * k, float &average_totaltime, float &average_weighttime)
{
int i;
float sum_totaltime = 0, sum_weighttime = 0;
for (i = 0; i < 6; i++) {
if (i == 0)
k[i].starttime = k[i].finishtime;
else {
k[i].starttime = k[i - 1].finishtime;
}
k[i].finishtime = k[i].starttime + k[i].runtime;
}
for (i = 0; i < 6; i++) {
k[i].totaltime = k[i].finishtime - k[i].arrivetime;
k[i].weighttime = k[i].totaltime / k[i].runtime;
sum_totaltime = sum_totaltime + k[i].totaltime;
sum_weighttime = sum_totaltime + k[i].weighttime;
}
average_totaltime = sum_totaltime / 6;
average_weighttime = sum_weighttime / 6;
}

void
FCFS(job * k)
{
int i , j;
job t;
float a , b;
for (j = 0; j < 6; j++) {
//????????????????????????????
for(i=0;i<j ; i++) {
if (k[i].arrivetime < k[j].arrivetime) {
t = k[i];
k[i] = k[j];
k[j] = t;
}
}
}
calculation(k, a, b);
output(k, a, b);
}

void
SJF(job * k)
{
int i, j, d, e, next;
job t;
float a , b, min;
for (j = 0; j < 6; j++) {//////////////////////////////////////////
for (i = 0; i < j; i++) {
if (k[i].arrivetime < k[j].arrivetime) {
t = k[i];
k[i] = k[j];
k[j] = t;
}
}
}
for (i = 0; i < 6; i++) {
if (i == 0)
k[i].starttime = k[i].finishtime;
else {
k[i].starttime = k[i - 1].finishtime;
}
k[i].finishtime = k[i].starttime + k[i].runtime;
j = 0;
for (e = i + 1; e < 6; e++) {
if (k[e].arrivetime <= k[i].finishtime)
j++;
} //确定有几个作业可挑选
min = k[i + 1].runtime;
next = i + 1;
for (d = i + 1; d < i + j; d++) {
if (k[d + 1].runtime < min) {
min = k[d + 1].runtime;
next = d + 1;
}
}
t = k[i + 1];
k[i + 1] = k[next];
k[next] = t;
}
calculation(k, a, b);
output(k, a, b);
}

void
HIGHEST(job * k)
{
int i, j, next, e, d;
job t;
float a , b, max;
for (j = 0; j < 6; j++) {
for (i = 0; i < j; i++) {
if (k[i].arrivetime < k[j].arrivetime) {
t = k[i];
k[i] = k[j];
k[j] = t;
}
}
}
for (i = 0; i < 6; i++) {
if (i == 0)
k[i].starttime = k[i].finishtime;
else {
k[i].starttime = k[i - 1].finishtime;
}
k[i].finishtime = k[i].starttime + k[i].runtime;
j = 0;
for (e = i + 1; e < 6; e++) {
if (k[e].arrivetime <= k[i].finishtime)
j++;
} //确定有几个作业可挑选
max = (k[i + 1].starttime - k[i + 1].arrivetime) / k[i + 1].runtime;
next = i + 1;
for (d = i + 1; d < i + j; d++) {
if (max <= (k[i].finishtime - k[d + 1].arrivetime) / k[d + 1].runtime) {
max = (k[i].finishtime - k[d + 1].arrivetime) / k[d + 1].runtime;
next = d + 1;
}
}
t = k[i + 1];
k[i + 1] = k[next];
k[next] = t;
}
calculation(k, a, b);
output(k, a, b);
}

int
main()
{
job g[6];
//input(g);
//debug......
g[1].name='a';g[1].arrivetime=2007;g[1].runtime=2008;
g[2].name='b';g[2].arrivetime=2008;g[2].runtime=2009;
g[3].name='c';g[3].arrivetime=2009;g[3].runtime=2010;
g[4].name='d';g[4].arrivetime=2010;g[4].runtime=2011;
g[5].name='e';g[5].arrivetime=2011;g[5].runtime=2012;
g[0].name='f';g[0].arrivetime=2012;g[0].runtime=2013;
//end ........

job * g_1(g), *g_2(g);
FCFS(g);//////////////////////////////////////////////////////
SJF(g_1);/////////////////////////////////////////////////////
HIGHEST(g_2);/////////////////////////////////////////////////

return 0;
}

我直接加了测试数据调试的,你可以自己在试试看

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧