2013-03-31 2 views
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; 
+0

작고 간단하게 시작하고, 복잡성을 조금씩 추가하고, 모든 단계에서 테스트하고, 작동하지 않는 코드에 절대 추가하지 마십시오. * 데이터 파일을 읽은 후이를 밖으로 내뱉는 함수로 시작해야합니다 한 번에 필드를 만들고 거기에서 빌드하십시오. – Beta

+0

아마 주요한 문제는 아니지만 max-statements 중 하나는 타이어의 변위를 자동차의 변위로 설정합니다. max_displacement_tire = displacement_of_car; –

답변

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()); 

입니다. VERY 다른! 당신이 그것을 도달하지 않도록

{ 

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

} 

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

당신이 볼 수 있듯이, 단지 마지막 cout을 문 앞에 무한 루프 이 :에 do없이 코드는 동일합니다.

+0

감사합니다. 나는 항상 그들을 기억할 것입니다. Maditya, 간단한 문제를 간과했다는 사실이 약간 당황 스럽지만 나는 당신이 한 것을했습니다. 그래도 여전히 빈 출력을 제공합니다. 하지만 몇 가지 인하 << "테스트"<< endl; do/while을 가로 지르는 진술과 그 문제는 루프가 제 기능을 회상하지 못하는 것 같습니다. 특별한 이유가 무엇입니까? 루프에서 함수 호출을 어디에 두어도 상관없이 항상 멈춰 버립니다. – user2228470

+0

실제로 그 함수에 대한 코드를 보지 않고도 그 중 하나에 무한 루프가있을 수 있습니다. 이러한 기능을위한 코드를 게시 할 수 있습니까? 또한 리콜 기능 ** 사이에 couts **을 넣으십시오. 그래서 우리는 어떤 기능이 멈추고 있는지 알 수 있습니다. – maditya

+0

당신은 말 그대로 천재입니다. 시간 변수를 조작하기위한 for 문이 있습니다. (실제로는 road_surface 변수에만 영향을 미치고 타이어 속도에만 영향을줍니다. 그래서 처음에는 old_new_tire_velocity 함수를 사용 했었습니다) 다른 함수로 이동했습니다. 는 난 그냥이 imgur 링크를 여기에 넣어 경우 코드의 대부분은 읽기 어려울 것이다 그림. [링크] (http://i.imgur.com/ybzqZ3a.jpg) 나는 ///의 라인을 드려 죄송합니다, 그냥 내가 좋아하는 코드 블록을 만들 경우 쉽게 읽을 보인다. – user2228470

관련 문제