C++在线等

来源:百度知道 编辑:UC知道 时间:2024/05/16 01:16:35
这个函数void calculate(Node* first)接收一个双向链表的指针,该双向链表的节点为
class Node
{
public:
double energyInPit;
double timeInAll;
Node *next,*prev;
Node(double e1,double t3):energyInPit(e1),timeInAll(t3),next(0),prev(0){}
};

这个链表已经按timeInAll的大小从小到大排好序,我希望把timeInAll在n*100~(n+1)*100范围内的节点的energyInPit和timeInAll的值加在一起,赋给partEnergy和t,然后把(partEnergy+10)*(1.6E-19)和t输出到文件result.txt,不知道为什么总不能得到正确结果。
void calculate(Node* first)
{
double partEnergy = 0.0;
double t = 0.0;
int order = 0;
FILE *fResult;
fResult = fopen("result.txt","w");
for(Node *temp = first;temp;temp = temp -> next)
{
double c = 0.64575;
double s = 0.454;
s = getRandom(c,s);//用于产生导带上能量
double energyInUp = s*5;

if(temp -> timeInAll < 1000.0*order)
{
t += t

一:我希望把timeInAll在n*100~(n+1)*100范围内的节点的energyInPit和timeInAll的值加在一起,赋给partEnergy和t,然后把(partEnergy+10)*(1.6E-19)和t输出到文件result.txt,
///////////////////////////////////
首先从这条要求上,我觉得最好用到两层循环外层控制n,内层实现累加100次,在你的程序里,我没有发现,与你所要求的相关语句.
二:order初始化为0是不对
///////////////////////////////////
你这里的order 我看作是n;初始化为0,寻找1-100个结点,我认为是必须的,没有不对之处
三:我是想让energyInUp分段加起来,而timeInAll按顺序从前到后加起来
//////////////////////////////
不知道energyInUp到底,想跟什么加起来,分段加起来怎么个分段?
四:if(temp -> timeInAll < 1000.0*order)
///////////////////////////////
1000order的出现,与你100n 的要求我实在不是很明了
五: fprintf(fResult,"%d,%d\n“energyInPit,timeInAll);
cout<<"计算后的值:"<<energyInPit<<" "<<timeInAll<<endl; 为什么文件中的结果和输出窗口中的结果不一样?文件中结果明显不正确
//////////////////////////////////
输出控制的格式不一样,结果当然不一样,改:fprintf(fResult,"%lf,%lf\n“energyInPit,timeInAll);

综上,你的程序设计,不能实现你所要的要求,但由于我所