일단 문제는 45도의 각도로 지면에서 하늘방향으로 공을 쏘아 올렸을때
공의 X, Y위치를 fprint와 fopen을 통해 txt 파일로 값들을 1000번 받는건데요.
코드 작성해서 오류가 없는데, 실행시키면 입력에서 넘어가질 않네요 ㅠㅠ
한번 코드 봐주시겠어요? 하루 꼬박 쏟아 부었는데 안되서 답답하네요 에휴
-----------------------------------------------------
#include <stdio.h>
#include <math.h> // sin과 cos, 속도를 계산하기 위하여 사용
#define Time_Period 10.000 // 프로그램 측정 시간 10초로 설정
#define One_Period 0.01 // 한 Period의 시간을 0.01초로 설정
#define V_Reduction_Ratio 0.70 // 튕긴 후 공의 속도 감소율
int main ()
{
FILE*MEMO; // Simulation의 Data 저장을 위한 외부 파일 설정
fopen_s(&MEMO, "JungHyun_Data.txt", "wt");// 쓰기모드로 txt 파일을 생성하여 Data 저장
double Disp_X = 0.0; // 공의 X 위치를 나타내는 변수
double Disp_Y = 0.0; // 공의 Y 위치를 나타내는 변수
double V_X = 0.0; // 공의 X 속도를 나타내는 변수
double V_Y = 0.0; // 공의 Y 속도를 나타내는 변수
double V_Initial = 0.0 ; // 공의 초기속도 입력을 위한 변수 설정
double B_Height = 0.0 ; // Building Height 입력을 위한 변수 설정
double Time_Segment = 0.0 ; // 0.01 Time Segment 이용을 위한 변수 설정
double Gravity = -9.81; // 공이 초기에 위로 향하므로 중력가속도를 음수로 설정
printf("공의 초기속도를 %3.5f 형태로 입력하세요 (단위 m/s) : ");
scanf_s("%lf\n", &V_Initial);
/*printf("Building Height를 %3.5f 형태로 입력하세요 (단위 m) : ");
scanf("%lf\n", &B_Height);*/
// 초기조건 입력 설정
for(Time_Segment=0.00 ; Time_Segment < Time_Period ; Time_Segment += 0.01)
{
V_X = V_Initial * cos((double)45); // V의 X성분 구하기
Disp_X=V_X * One_Period; // 공의 X좌표 구하기
V_Y = (V_Initial * sin((double)45)) + (Gravity * 0.01); // V의 Y성분 구하기
Disp_Y=(V_Y * One_Period) + ((1/2) * Gravity * One_Period * One_Period); /*+ B_Height*/;
if(V_Y <= 0.000) // 공이 최고 지점에 달하게 되면 중력가속도의 방향이 바뀜을 설정
{
Gravity = (-1.00) * Gravity;
}
else if(Disp_Y <= 0.000)
{
Gravity = (-1.00) * Gravity;// 공이 지면에 튀기게 되면 중력가속도의 방향이 바뀜을 설정
V_Initial = V_Initial * V_Reduction_Ratio; // 지면에 공이 튀길때 마다 속도의 30% 손실
}
fprintf(MEMO, "시간 : %3.5f 거리 : %3.5f 높이 : %3.5f \n", Time_Segment, Disp_X, Disp_Y);
}
fclose(MEMO);
return 0;
}
논리 process의 오류가 있는건지, 함수를 잘못 쓴건지 도저히 모르겠어요...