2014-10-17 4 views
-2

내가 쓰고있는 프로그램은 C 언어로되어 있습니다. 사용자가 거리를 입력하고, 그 거리에 도달하기 위해 발사체를 쏠 필요가있는 각도를 설정된 속도로 계산합니다. 사람이 매우 도움이 될 것입니다뿐만 아니라 INT 주요로 시작하는 라인을 설명 할 수있는 경우왜 이것이 작동하지 않습니까? C 언어의 프로그램

#include <stdio.h> 
#include <math.h> 
#define MuzzleVelocity 1000 
#define PI (3.141592653589793) 
int main (int argc, const char * argv[]) { 
    float G, meters, tf, angle, range; 
    G = 9.8; /* M/sec^2 */ 
    printf("Enter the range of Enemy Sub in Meters>"); 
    scanf("%f", &meters); 
    printf("\nTo hit the sub at %f meters", meters); 
    angle = (180/PI)* .5* asin(range/((pow(MuzzleVelocity, 2))/G)); 
    printf ("\n Use the angle %f degrees", angle); 
    return 0; 
} 

, 나는 주로 이전 문제에서 시작을 편집하고, 내가 입력에 필요하다고 생각 변수를 대체. 올바른 출력은 다음과 같아야합니다

Enter the range of Enemy sub in Meters> XXX.XX 
To hit the sub at XXX.XX meters 
Use the angle XX.XX 
+0

모든 'printf'형식 제어 문자열의 끝에 (시작이 아님) '\ n'을 넣으십시오. 모든 경고와 디버그 정보로 컴파일하십시오 ('gcc -Wall -g'). 디버거 ('gdb')를 사용하십시오. [scanf (3)]의 테스트 결과 (http://man7.org/linux/man-pages/man3/scanf.3.html). 사용중인 모든 기능에 대한 문서를 읽으십시오. –

+0

aruisdante는 정답을 갖고있는 것처럼 보입니다. 정수와 부동 소수점 상수의 차이점을 살펴 보시기 바랍니다. 이 경우 유형 홍보로 인해 이탈합니다. '(1/3) * '이라면 당신의 기대가 저주 될지도 모릅니다. – Tommy

+0

명령 줄 인수를 사용하지 않으므로'int main (void)'를 쓸 수 있습니다. 만약 그렇게했다면,'int main (int argc, char * argv [])'; 'const'는 의미가 있지만 비표준입니다. –

답변

4

문제는 meters에 사용자 입력을 할당하는 것 같다 (실제로 수단을 '작동하지 않는'무엇을 우리에게 말하지 않을지라도) : 다음

printf("Enter the range of Enemy Sub in Meters>"); 
scanf("%f", &meters); 

그러나 당신의 방정식에서, 당신은 어떤 값으로 설정되어 있지 않은 range의 값을 사용하고, 따라서에서 완전히 임의의 값이됩니다

angle = (180/PI)* .5* asin(range/((pow(MuzzleVelocity, 2))/G)); 

하는 012 교체를은 meters이고, 반대의 경우는 scanf입니다.

+0

감사합니다. 보조 노트로, int, main 섹션에서 위쪽, 미터, 각도 및 범위를 추가 한 것으로 추측됩니다. 괜찮 았지만 주요 기능에 사용되는 모든 변수를 간단하게 설명하는 것이 그 목적입니다. – user1877731

+0

@ user1877731 문제가 해결되면 답변을 수락하십시오 (질문 옆의 큰 체크 표시). * int main section에서 *로 정확히 무엇을 의미합니까? 'int main (int argc, const char * argv [])'는 실행 프로세스 (일반적으로 명령 행)를 통해 전달 된 매개 변수를 받아 들일 수있는''main''의 C 표준 정의입니다. – aruisdante

0

먼저 pow 함수는 호출 할 인스턴스를 알지 못합니다. MuzzleVelocity는 double, float 또는 long double이어야합니다. pow float ((MuzzleVelocity), 2)를 넣을 수 있습니다.

두 번째로 범위에 값을주지 않고 각도를 계산하는 데 사용합니다. 나는 당신이 실수를했고 계량기가 아닌 입력기로서 계량기를 얻고 싶다고 생각합니다. 내가 맞다면 scanf ("% f", & 미터)를 바꿔야합니다. ~ scanf ("% f", & 범위);

희망 사항 해당

관련 문제