2016-10-09 5 views
-1

I처럼, 선생님으로부터 작업을 가지고 X^2 + y^3 = 홀수 Y 가득C++ X 그다지 루프 increament

x는 짝수

#include <stdio.h> 
#include <string> 
#include <iostream> 

using namespace std; 
int x,y,z; 

int main(){ 
    for (x=1;x<=20;x++){ 
     if ((x%2==1)&&(y%2==0)){ 
     for (y=1;y<=20;y++){ 
      if ((x%2==1)&&(y%2==0)){ 
       z = (x*x) + (y*y*y); 
       cout << "x^2 + y^3 =" <<z <<"\n"; 
      } 
     } 
     } 
    } 
} 

가득 Z 위와 같은 코드를 만들려고 노력하지만 단 하나의 루프는 Y입니다. x는 여전히 1로 유지됩니다.

x도 반복되도록하고 싶습니다. 어떻게해야합니까?

내 출력 기대는 같은 것이다 :

1^2 + 2^3 = 9 
3^2 + 4^3 = 71 
5^2 + 6^3 = 241 
7^2 + 8^3 = 561 
9^2 + 10^3 = 1081 
11^2 + 12^3 = 1849 
13^2 + 14^3 = 2913 
15^2 + 16^3 = 4321 
17^2 + 18^3 = 6121 
19^2 + 20^3 = 8361 

PS. 내 나쁜 영어에 유감 임 : D

+1

거친 들여 쓰기 외에 * 디버거 *를 사용하여 해결해야합니다. 디버거를 사용하면 변수 및 해당 값을 모니터링하면서 코드를 한 줄씩 단계별로 실행할 수 있습니다. –

+0

@JoachimPileborg :'y'는 정적 저장 기간을 가지고 있으므로 0으로 초기화됩니다. –

+0

@BenjaminLindley 네, 그냥 보았습니다. –

답변

1

이것은 당신이 무엇을 :

int main(){ 
    for (x=1;x<=20;x++){ 
     if ((x%2==1)&&(y%2==0)){ 
     for (y=1;y<=20;y++){ 
      if ((x%2==1)&&(y%2==0)){ 
       z = (x*x) + (y*y*y); 
       cout << "x^2 + y^3 =" <<z <<"\n"; 
      } 
     } 
     } 
    } 
} 

문제는 첫째 if ((x%2==1)&&(y%2==0)){ 검사입니다.

내부 루프가 완료되면 y의 값은 21이됩니다. 따라서 x의 값이 0 이어도 위 조건은 false으로 평가됩니다. 결과적으로 내부 for 루프는 한 번만 실행됩니다. 첫 번째 if 문을 제거해야합니다. 당신이 훨씬 더 간단 코드가 필요 같은

int main(){ 
    for (x=1;x<=20;x++){ 
     for (y=1;y<=20;y++){ 
     if ((x%2==1)&&(y%2==0)){ 
      z = (x*x) + (y*y*y); 
      cout << "x^2 + y^3 =" <<z <<"\n"; 
     } 
     } 
    } 
} 

업데이트, 영업 이익의 코멘트에 대한 응답으로

보인다.

int main(){ 

    // Start with x = 1 and increment x by 2. It will be always be odd 
    for (x = 1; x <= 20; x += 2){ 

     // No need to create another loop. y is simply x+1 
     // Since x is odd, y will be even. 
     y = x+1; 

     // Compute the result and print it. 
     z = (x*x) + (y*y*y); 
     cout << "x^2 + y^3 =" << z <<"\n"; 
    } 
} 
+0

방금 ​​ur 솔루션을 시도했지만 결과가 너무 많습니다. 내가 원하는 것은 : 1^2 + 3^3 = 9 3^2 + 4^3 = 71 등 –

+0

x 채우기는 홀수로 채워지고 y는 20 반복까지 채워집니다. 최종 산출물과 마찬가지로 19^2 + 20^= 8361 –

+0

@ FahmyArsyaad,'1^2 + 4^3 = 65'은 어떨까요? 그걸보고 싶지 않니? –

0

내부 y 루프 이후 y = 21이기 때문에 x 루프가 실행되지 않습니다. 희망이 도움이됩니다.