2011-01-15 5 views
6

다음은 코드입니다.영역이 다시 0으로 돌아 오는 이유는 무엇입니까?

int a; 
int pi = 3.14; 
int area; 
int main() 
{ 
    cout << "Input the radius of the circle "; 
    cin >> a; 

    a *= a *= pi >> area; 

    cout << "The area is " << area; 


} 
+0

입력 값이 무엇입니까? –

+14

3은 pi에 대해 상당히 부정확 한 추정치입니다. –

+5

이 코드는 너무 이상하지 않아서 더 이상 재미 없어졌습니다. 우선,'cin >> ...'(그리고'cout << ...')은 매우 특별한 경우이고'<<' (and '>>')은 다른 모든 문맥에서 매우 다른 것을 의미한다. 파이 << 지역? 당신은 운 좋게도 0을 얻습니다. 아무 것도 얻을 수 있습니다. – delnan

답변

2

원의 면적은 pi * r * r이므로 사용자가 원할 것입니다.

을하는 데 도움이 그들 모두가 수레 될 필요가

a = a * a * pi

희망.

7

이상한 코드를 해독하기에 충분한 인내가 없습니다. 그냥 area = a * a * pi 어때요?

+1

친절하신 분 낯선 사람 –

1

모든 변수에 대해 int 또는 정수를 사용하고 있기 때문입니다. double 또는 심지어 float을 사용하려고합니다. (doubles가 더 정확합니다).

+0

왜 내가 downvoted 되었습니까? – Maxpm

+0

코드에 대한 모든 문제 (예 :'''연산자를 사용하여 '영역'에 대한 시도가 시도 됨)를 다루지 않아서 당신이 downvoted라고 생각합니다. – dreamlax

1

모든 변수는 정수로 선언되어 할당 된 소수 부분 만 삭제합니다. 부동 소수점 값을 사용하려면 double을 대신 사용하십시오.

또한 방정식은 거의 이해할 수 없습니다. 당신이 무엇을하려고하는지 확신하지 못합니다.

13

숫자와 함께 사용되는 >> 연산자는 오른쪽 시프트이며 할당이 아닙니다. 당신은

area = a * a * pi; 

업데이트 당신은 또한 당신이 무엇을 기대하지 않습니다 부동 소수점 유형 또는 답변을 사용할 필요가

같은 것을 원한다.

float a; 
float pi = 3.14f; 
float area; 
+3

약간의 공간을 낭비하도록 만듭니다. 부동 소수점 기본값으로 double을 사용합니다. –

+0

@ 마틴 : 조숙 한 금욕이지 않습니까? ;) –

+2

아니야. 반올림 오류를 디버그하는 데 필요한 시간이 오래 걸립니다. – CodesInChaos

2

코드는 내가 원하는 것으로 생각하지 않습니다. >>이있는 변수에는 할당하지 않습니다. 이는 스트림 추출 (비트 시프트)에만 해당됩니다.

또한 a *= a *= pi은 아마도 당신이 생각하는대로하지 않을 것입니다.

또한 int이 아닌 부동 소수점 값을 원합니다. "int"파이는 단지 3입니다.

또한 스트림 추출시 오류 검사가 필요합니다!

시도 :

int main() 
{ 
    const float pi = 3.14; 
    float a; 

    cout << "Input the radius of the circle "; 
    if (!(cin >> a)) { 
     cout << "Invalid radius!"; 
     return 1; 
    } 

    float area = (a * a * pi); 

    cout << "The area is " << area; 
} 
6

귀하의 코드가 이해가되지 않습니다.

pi (및 기타 모든 변수)은 int가 아닌 double 또는 float이어야합니다. int는 정수만 포함 할 수 있습니다. 그리고 pi은 분명히 통합되지 않습니다.

a *= a *= pi >> area;

>>area = a * a * pi;이 bitshift하지
*=은 다중 할당 할뿐 아니라 증식되어 오른쪽으로 할당입니다해야합니다. 즉 left=left*right

+0

+1 내가 쓴 것을 글쓰기 위해서.하지만 훨씬 일관된 방식으로. :) –

2
int pi = 3.14; 

잘못된 데이터 유형입니다. double 값을 int에 할당 하시겠습니까? 그건 틀렸어요.

쓰기이 :

double pi = 3.14; 

와 마찬가지로이뿐만 아니라 double에 다른 데이터 유형을 변경합니다.