2017-03-14 4 views
-3

최소한으로 코드를 줄였으며 동일한 오류가 재생되어 컴파일됩니다. 나는 그것이 경고를 끈다는 것을 알고있다, 당신은 그 (것)들을 말할 필요가없는 다. 나는 코딩에 익숙하지 않아 도움을 주셔서 감사합니다. 문제는 벡터 Xpos와 Ypos가 main()의 for 루프가 완료 될 때마다 동일한 값을 반환한다는 것입니다. rnadom 출력을 얻고 있지만 모든 벡터 값이 반복됩니다. 그들은 달라야합니다. 무엇이 잘못되었는지 찾도록 도와 줄 수 있습니까? 정말 고맙습니다. 코드 :무작위로 for 루프에서 동일한 값을 반환합니다.

#include "stdafx.h" 
#include <ctime> 
#include <cmath> 
#include <random> 
#include <iostream> 

using namespace std; 


//error is here? 

int phaseTwoSimulate(double &Xpos, double &Ypos, int diameter, double stepSize) { 


    while (pow(Xpos - 201, 2) + pow(Ypos - 201, 2) < pow(diameter, 2)) { 
// while inside cicle 

     int direction = rand() % 4; 
     switch (direction) { 
     case 0://north 
      Ypos = Ypos - stepSize; 
      break; 
     case 1://east 
      Xpos = Xpos + stepSize; 
      break; 
     case 2://south 
      Ypos = Ypos + stepSize; 
      break; 
     case 3://west 
      Xpos = Xpos - stepSize; 
      break; 
     } 
    } 
    return 0; 
} 

int main() 
{ 
    double Xpos = 201; 
    double Ypos = 201; 
    srand(time(NULL)); 
    for (int x = 0; x < 50; x++) { 
     phaseTwoSimulate(Xpos,Ypos,50,1); 
     cout << Xpos << "," << Ypos << endl; 
     double Xpos = 201; 
     double Ypos = 201; 
    } 
    cin.ignore(); 
    cin.get(); 
    return 0; 
} 
+1

는 [A를 게시 해주세요하기 MCVE]. –

+0

그게 내가 한거야! 어떻게하는지에 대해 이해하지 못하고 있습니까? –

+0

이것은 [mcve]가 아닙니다. 문제를 재현하려면 최소한으로 줄이십시오. 그리고 아니오, 요청하지 않는 한 여기에 전체 프로그램의 코드를 게시 할 필요가 없습니다. 이 문제를 재현하려면 최소 –

답변

1

귀하의 문제는이 코드의 중간에 두 개의 라인이다 :이 두 새로운 변수 XposYpos을 선언하고 201로 설정되어 일을 무엇

cout << Xpos << "," << Ypos << endl; 
    double Xpos = 201; 
    double Ypos = 201; 
} 

. 이 변수는 사용되지 않습니다. 루프가 다시 돌아 오면 phaseTwoSimulate에 대한 다음 호출은 XposYpos의 이전 변수 (및 이전 값)를 사용합니다. 즉, 해당 점이 이미 원 밖에 있으며 함수의 루프가 즉시 중지됩니다.

는이 문제를 해결하려면 간단한 변화를 :

cout << Xpos << "," << Ypos << endl; 
    Xpos = 201; 
    Ypos = 201; 
} 

또는 더 나은 아직, 가까이가 사용되는 곳으로 변수를 이동하고 코드를 변경은

int main() 
{ 
    vector <int> vectorX; 
    vector <int> vectorY; 
    srand(time(NULL)); 
    for (int x = 0; x < 50; x++) { 
     double Xpos = 201; 
     double Ypos = 201; 
     phaseTwoSimulate(Xpos, Ypos, 50, 1); 
     cout << Xpos << "," << Ypos << endl; 
    } 
    cin.ignore(); 
    cin.get(); 
    return 0; 
} 
+0

은 내가 감사에게, 나는 그런 멍청한 놈, 많이 본 것이 멍청한 짓이었다! –

관련 문제