0

这是我第一次问问题,如果我遇到任何问题,请原谅我。我一直在研究汽车悬挂系统的项目。我需要为汽车和轮胎的位移以及汽车和轮胎的速度制作 4 个函数。我觉得我的代码结构很好,但它根本没有输出最终产品。主要目的是找到每个函数的最大值。我尝试了很多尝试修复它,但我似乎无法提出解决方案。重点是。我构建了一个具有四个函数的程序,数据文件将这些函数与信息一起提供,直到它结束。当我尝试运行它时,只输出标题。我不知道这是怎么回事。

数据文件有四组,从汽车 A 到汽车 D 组织起来像这样,轮胎的弹簧常数,缓冲器的阻尼常数,车轮的质量,汽车的质量,开始/结束时间,增量值

功能本身有点……难以下咽。所以我想分享一些我认为有问题的代码部分。

任何帮助/提示/评论将不胜感激。

csdatafiles>> total_readings;      

csdatafiles >> car_name >> spring_constant_tire >> spring_constant_spring 
>> damp_constant >> mass_of_tire >> mass_of_car 
>> start_time_value >> end_time_value >> increment_time_value;



//Initialize max min
max_displacement_car=displacement_of_car;
max_displacement_tire=displacement_of_tire;
max_velocity_car=velocity_of_car;
max_velocity_tire=velocity_of_tire;


//Output Header
 cout << "\nCar Name    Max Tire Displace   Max Tire Vel   Max Car Displace   Max Car Vel \n" << endl;


{




//recall functions
velocity_of_tire= old_new_tire_velocity (variables needed);
velocity_of_car=old_new_car_velocity (variables needed);
displacement_of_car= old_new_car_displacement (variables needed);


//check for max
if (displacement_of_car>max_displacement_car)
    max_displacement_car=displacement_of_car;

if (displacement_of_tire>max_displacement_tire)
    max_displacement_tire=displacement_of_car;

if (velocity_of_car>max_velocity_car)
    max_velocity_car=velocity_of_car;

if (velocity_of_tire>max_velocity_tire)
    max_velocity_tire=velocity_of_tire;

total_readings++;

//read rest of data
csdatafiles >> spring_constant_tire >> spring_constant_spring 
>> damp_constant >> mass_of_tire >> mass_of_car 
>> start_time_value >> end_time_value >> increment_time_value;

} while (!csdatafiles.eof());
//Output
cout << car_name << max_displacement_tire << max_velocity_tire << max_displacement_car << max_velocity_car;
4

1 回答 1

1

刚刚离开你发布的代码,看起来你试图放一个do-while但忘记了do......

代替

do {

//recall functions
//...
//check for max
//...
//read rest of data
//....

} while (!csdatafiles.eof());

你有

{

//recall functions
//...
//check for max
//...
//read rest of data
//....

} while (!csdatafiles.eof());

这是非常不同的!没有do,您的代码相当于:

{

//recall functions
//...
//check for max
//...
//read rest of data
//....

}

while (!csdatafiles.eof()) {
  ;
}

如您所见,在最后一个 cout 语句之前有一个无限循环,因此您永远无法到达它。

于 2013-03-31T09:09:59.680 回答