麻烦高手帮忙!!!

yblue 2006-12-29 01:27:41
一下是我的代码,总是运行到最后的时候提示有问题要关闭?这是一个关于作业调度的程序。请高手指点!!!

#include<iostream>
#include"stdio.h"
#define getjcb(type)(type *)malloc(sizeof(type))
#define NULL 0


using namespace std;

int m=0, n=0;

struct JCB {
char name[10]; //作业名
float arriveTime; //作业到达时间
float startTime; //开始运行时间
float neceTime; //需要的时间
float finishTime; //完成时间
char state; //作业状态(运行(r)或等待(w))
JCB *next;
} *p, *arrStart,*q, *arrStart1;


void Sort()
{
p->next = arrStart->next;
arrStart->next = p;
}

void ReSort()
{
arrStart1 = getjcb(JCB);
arrStart1->next = NULL;
for(q=arrStart->next; q!=NULL; q=q->next)
{
p = getjcb(JCB);
for(int i=0; i<10; ++i)
{
p->name[i] = q->name[i];
}
p->arriveTime = q->arriveTime;
p->state = q->state;
p->neceTime = q->neceTime;
p->next = arrStart1->next;
arrStart1->next = p;
}
}

void Run()
{
cout<<"初始状态:"<<endl;
p = arrStart1->next;
while(p != NULL)
{
cout<<"作业"<<"\t"<<"到达时间"<<"\t"<<"所需时间"<<endl;
cout<<p->name<<"\t"<<p->arriveTime<<"\t\t"<<p->neceTime<<endl;
p = p->next;
}
cout<<endl<<"开始运行:"<<endl<<endl;
p = arrStart1->next;
p->state = 'r';
while(p != NULL)
{
int t = p->neceTime;
while(t >0)
{
t--;
cout<<"作业"<<"\t"<<"到达时间"<<"\t"<<"所需时间"<<"\t"<<"还需时间"<<endl;
cout<<p->name<<"\t"<<p->arriveTime<<"\t\t"<<p->neceTime<<"\t\t"<<t<<endl;
}
cout<<"作业"<<p->name<<"完成"<<endl;
cout<<endl;
q = p;
p = p->next;
p->state = 'r';
arrStart1->next = p;
free(q);
}
}

void main()
{
int k = 1;
arrStart = getjcb(JCB);
arrStart->next = NULL;
cout<<"请输入作业的数目: ";
cin>>n;
cout<<endl;
for(int j=0; j<n; ++j, ++k)
{
cout<<"作业"<<k<<"的名称: ";
p = getjcb(JCB);
cin>>p->name;
cout<<"所需时间: ";
cin>>p->neceTime;
p->arriveTime = k;
p->state = 'w';
Sort();
cout<<endl;
}
ReSort();
Run();
}
...全文
91 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yblue 2006-12-30
  • 打赏
  • 举报
回复
谢谢大家,我试试看先!
一分之千 2006-12-29
  • 打赏
  • 举报
回复
出错的原因就是因为到了链表的最后了你还在对其操作~
p = p->next;或者在这个地方改一下看你的需要~
一分之千 2006-12-29
  • 打赏
  • 举报
回复
这里该一下就可以了
=============
void Run()
{
.....
while(p->next != NULL)
......
}
0黄瓜0 2006-12-29
  • 打赏
  • 举报
回复
struct JCB
{
//.....
} *p, *arrStart,*q, *arrStart1;
//尽量少用全局变量,调试起来很麻烦,你自已稍微不注意就会出错.
程序主要实现了以下功能: 1、屏幕取色 2、屏幕截图 ================================== 本程序的优点: 屏幕取色 我们的屏幕取色和其他的取色软件不一样的是,提供一个局部放大镜,让你可以把细节看得清清楚楚,不在迷迷茫茫。和一些提供局部放大镜的取色软件所不同的是,我们的局部放大镜是跟随鼠标走的。取到哪里,放大到哪里,让你不在摇头晃脑。 屏幕截图 屏幕截图工具现在貌似是输入法和IM必带的一款小工具了。QQ有,搜狗输入法有,QQ拼音输入法有。但是,很多的白领都是不上QQ的,因此QQ上并不能覆盖所有用户,而拼音输入法上虽然有,但是,还是有很多设计师是不用拼音输入法的。因此,这些并不能够覆盖所有的用户。作为专业的设计人员,安装一款较大的屏幕截图工具显然有些累赘。而使用这些不相关的截图工具也有些哑然失笑的感觉。因此,地方屏幕取色截图工具自带了这样的一个工具。让你轻轻松松工作。 在屏幕截图工具这块的设计上,我们参考了众多的屏幕截图工具,我们认为搜狗输入法自带的截图工具比较理想,因此在这方面我们参考了搜狗输入法的设计。 预定颜色 预定标准WEB色图表。因此,你可以简单的通过软件来实现WEB图表中的取色工作。轻松简单。 调色功能 显然,标准WEB色图表不能满足众多设计师的要求。而画图自带的调色功能比较鸡肋。而photoshop自带的调色功能才是众多设计师喜欢的。因此,地方软件工作室开发的地方啦取色软件,参考PS的调色功能,进行开发。 存储颜色 支持存储最近取的18个颜色。另外可以保存你想保存的颜色,支持36个。为什么不是更多?事实上,我们在开发一个项目的时候,用到的颜色是不多的。如果过于繁杂,不好,简单的界面,简单的存储,让你的工作变得轻松。我们的设计宗旨是,让软件更加快速的为您服务,而不是炫耀我们的软件技术。 除了优秀的功能,我们的软件还更加人性化考虑,在软件的细节上为各位提供了一个完美展示的平台。这些优秀的功能有: 软件皮肤化 事实上,作为一款屏幕取色软件,目前我们并没有发现其他的类似软件有这个功能的,但是,我们加上了这个功能,为什么呢?因为我们考虑,各位设计师都是设计业的行家里手,各位的个性自然是与众不同的。我们的软件可以简单的设计皮肤,就为各位设计师朋友提供了一个展示自我的平台。你完全利用我们的软件打造一款属于自己的屏幕取色软件。 因此,完全展示个性,完全体现设计师的卓越品味,我们加上了这个思维,软件皮肤化。我们欢迎大家提供自己设计的皮肤给我们,让更多的人使用! 软件文字外置化 同皮肤一样,软件上面的文字如果是固定的,那么就太低估各位的智商了,我们要的是完美,我们要的是个性。打造一款属于自己的屏幕取色器是必须的。因此,我们加上了软件文字外置化,通过修改一个简单的文本文件,就可以修改软件上的所有文字。结合软件皮肤功能,你完全能够制作一款绝对属于您自己的取色器! 此外,另外的一个考量是,通过文字外置化,我们可以简单的把软件做成繁体中文,日文版,甚至更多的语言。不过本人的语言能力有限,大家能者多劳,帮忙翻译翻译吧!地方软件工作室全体成员感谢至极! 软件操作快捷键化 作为一个设计高手,是不能容忍使用一款软件还需要去用鼠标点来点去的。因此,如果一款软件不支持快捷键简直是失败。而大多数屏幕取色软件貌似都不支持快捷键,疯啊!我们的软件可以在后台运行,你打开之后最小化就可以,在需要的时候,按一下快捷键就可以调用处功能,完全不必理会软件的存在。全心全意的去设计您的伟大作品,何必理会我们开发的软件呢? 让您更加轻松的工作,是我们的宗旨! 快捷键自定义化 没错,我们支持快捷键,但是,如果快捷键不能自定义,那是失败中的失败!作为不同的设计师,其习惯是不一样的,如果大家都用一样的快捷键,那么实在是有辱个性,我们必须自己去打造一款适合自我的屏幕取色器,因此,快捷键当然要自定义,你完全的去发挥个性打造吧!我们支持!! 点击颜色即可复制代码 让软件,简单,再简单,再再简单一些吧!!!地方软件工作室在设计软件的时候无时无刻不在考虑一个问题,如何让软件更加简单一些?如何更加简单一些?再简单一些。呵呵,我们做到了。点击颜色即可复制颜色代码,点击代码即可复制对应的颜色代码。忘掉选择复制这样麻烦的操作吧!我们的软件提供给您的就是最简单的操作方式,最个性的自我展示!
Thinkpad Marker Slic2.1 附件包含了必备的slic2.1和工具!希望这个对大家有帮忙。 1、如何Marker? 注意:刷过破解版bios的朋友,务必先刷成官方bios!已经是官方bios的略过此步。在这里还是假设你不是太菜鸟,知道怎么刷bios。 1)首先确定自己Thinkpad机型对应的slic2.1型号(后缀为.bin的文件格式)。打开Lenovo网站搜寻对应型号的bios下载页,比如看到T400 2676的bios的信息如下: 支持操作系统: Windows 7 版本: 3.09-1.03/3.10-1.03 发布时间: 2009-10-17 文件名称为:7uuj35us.exe T400 2676的Bios文件名称以7u打头,所以T400 2676对应的Slic2.1为文件名里含有7u的文件,比如TP-7U.bin。 2)使用SLIC_Dump_ToolKit查看自己的BIOS是否有原生的slic并选择正确的slic文件:有原生Slic2.0的用户,注意选择182 bytes的Slic2.1表(本人港行T400 2767R84用的就是182 bytes的slic2.1表)。无Slic的用户,注意选择374 bytes的Slic2.1表。 如果不确定有没有原生slic,无所谓,182 bytes的和374 bytes都试试吧,成功了的就是对的(如果选错了型号是不能marker的,没有风险)。 3)使用UltraISO将dos.img镜像写入U盘,即制作好了启动盘。此时U盘中有三个文件: DRVSPACE.BIN IO.SYS MSDOS.SYS 4)把Marker.exe复制到已经制作好的USB启动盘中。 5)把前面确认的对应自己Thinkpad型号的slic2.1文件,比如本人的港行T400 2767R84的slic2.1文件为7u.bin,将这个文件复制到已经制作好的可启动U盘中。这时你的U盘里面应该有下面这五个文件,一切准备就绪: DRVSPACE.BIN IO.SYS MSDOS.SYS Marker.exe 7U.bin 6)重启电脑按F12选择用U盘启动进入DOS,执行如下命令(注意空格和将命令行中的文件改成和你的slic2.1文件名称一样,在这里是本人的Slic2.1文件为7u.bin): marker.exe /w:7u.bin /z 执行速度快如闪电! 如果成功则显示“Programming Done!!!”“**** Success: Process completed (00) ****”等信息,恭喜你! 如果失败则会提示slic型号不对等信息,这时需要重复步骤2)-5)确认更新正确的slic2.1文件,再继续努力。 2、成功marker slic2.1后重启进入Windows 7,可以使用SLIC_Dump_ToolKit查看Slic2.1信息。 如果你安装的就是对应的Lenovo OEM版,则重启后自动激活。 如果没有自动激活(比如你安装的是MSDN版),则导入证书和系列号即可激活。操作如下(现在网上有高手制作了证书和系列号自动导入程序,下载来用就可以了,不用像下面这么麻烦,所以建议你别看了): 1)点击桌面左下角Windows图标启动开始菜单,在“搜索程序和文件”的空行里面敲入cmd,在出现的程序栏上上面的cmd.exe点击鼠标右键选择“管理员身份运行”启动命令行模式。 2)在出现的命令行内输入slmgr.vbs -ilc 证书路径\证书文件名,例如slmgr.vbs -ilc D:\OEM\lenovo.xrm-ms,稍等片刻系统就会有提示导入成功。这里假设Lenovo的证书路径和名称如上。 3)输入slmgr.vbs -ipk 22TKD-F8XX6-YG69F-9M66D-PMJBM 来导入系列号(这里是Lenovo泄漏的旗舰版OEM系列号),成功后输入slmgr.vbs -ato。 4)检查是否己正确激活。 3、尽情享受正版的快乐吧。 4、注意事项 Marker现在已知可以使用在X200s/t,T400/500,R400上,其他机型未知。不可用在其他品牌机型上!

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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