为什么我的程序不能显示啊输出....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);
}
...全文
162 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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;
}

我直接加了测试数据调试的,你可以自己在试试看
资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 在计算机视觉领域,实时目标跟踪是许多应用的核心任务,例如监控系统、自动驾驶汽车和无人机导航等。本文将重点介绍一种在2017年备受关注的高效目标跟踪算法——BACF(Boosted Adaptive Clustering Filter)。该算法因其卓越的实时性和高精度而脱颖而出,其核心代码是用MATLAB编写的。 BACF算法全称为Boosted Adaptive Clustering Filter,是基于卡尔曼滤波器改进的一种算法。传统卡尔曼滤波在处理复杂背景和目标形变时存在局限性,而BACF通过引入自适应聚类和Boosting策略,显著提升了对目标特征的捕获和跟踪能力。 自适应聚类是BACF算法的关键技术之一。它通过动态更新特征空间中的聚类中心,更准确地捕捉目标的外观变化,从而在光照变化、遮挡和目标形变等复杂情况下保持跟踪的稳定性。此外,BACF还采用了Boosting策略。Boosting是一种集成学习方法,通过组合多个弱分类器形成强分类器。在BACF中,Boosting用于优化目标检测性能,动态调整特征权重,强化对目标识别贡献大的特征,从而提高跟踪精度。BACF算法在设计时充分考虑了计算效率,能够在保持高精度的同时实现快速实时的目标跟踪,这对于需要快速响应的应用场景(如视频监控和自动驾驶)至关重要。 MATLAB作为一种强大的数学计算和数据分析工具,非常适合用于算法的原型开发和测试。BACF算法的MATLAB实现提供了清晰的代码结构,方便研究人员理解其工作原理并进行优化和扩展。通常,BACF的MATLAB源码包含以下部分:主函数(实现整个跟踪算法的核心代码)、特征提取模块(从视频帧中提取目标特征的子程序)、聚类算法(实现自适应聚类过程)、Boosting算法(包含特征权重更新的代
内容概要:本书《Deep Reinforcement Learning with Guaranteed Performance》探讨了基于李雅普诺夫方法的深度强化学习及其在非线性系统最优控制中的应用。书中提出了一种近似最优自适应控制方法,结合泰勒展开、神经网络、估计器设计及滑模控制思想,解决了不同场景下的跟踪控制问题。该方法不仅保证了性能指标的渐近收敛,还确保了跟踪误差的渐近收敛至零。此外,书中还涉及了执行器饱和、冗余解析等问题,并提出了新的冗余解析方法,验证了所提方法的有效性和优越性。 适合人群:研究生及以上学历的研究人员,特别是从事自适应/最优控制、机器人学和动态神经网络领域的学术界和工业界研究人员。 使用场景及目标:①研究非线性系统的最优控制问题,特别是在存在输入约束和系统动力学的情况下;②解决带有参数不确定性的线性和非线性系统的跟踪控制问题;③探索基于李雅普诺夫方法的深度强化学习在非线性系统控制中的应用;④设计和验证针对冗余机械臂的新型冗余解析方法。 其他说明:本书分为七章,每章内容相对独立,便于读者理解。书中不仅提供了理论分析,还通过实际应用(如欠驱动船舶、冗余机械臂)验证了所提方法的有效性。此外,作者鼓励读者通过仿真和实验进一步验证书中提出的理论和技术。

33,321

社区成员

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

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