2015-02-03 3 views
0

Проблема в том, что код находится в цикле while под beetleSimulation, он продолжается вечно, а не выходит, когда x/yCount выходит за пределы. x и y идти дальше, чем 20, может ли кто-нибудь помочь мне, почему?Застрял в бесконечном цикле (C)

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
#define PI 3.14159265 
void beetleSimulation(int, int); 


int main (int argc, char *argv[]) 
{ 
    if (argc != 3) // argc should be 2 for correct execution 
    { 
     // If the number of arguments is not 2 
     printf("Program only has %d arguments ", argc); 
     return 0; 
    } 
    else 
    { 
     //run the beetle simulation 
     beetleSimulation(atoi(argv[1]), atoi(argv[2])); 
     return 0; 
     } 
    } 


void beetleSimulation(int size, int iterations){ 
    int i; 
    double xCount = 0; 
    double yCount = 0; 
    int timeCount = 0; 
    int overallCount = 0; 
    int degree; 
    double radian; 
    for(i=0; i < 10; i++){ 
     while(xCount < 20 || xCount > -20 || yCount <20 || yCount >-20){ 
      timeCount += 1; 
      degree = rand() % 360; 
      radian = degree/(180 * PI); 

      xCount += sin(radian); 
      yCount += cos(radian); 
      printf("X and Y are %f and %f\n", xCount, yCount); 
     } 

     //when beetle has died, add time it took to overall count, then go through for loop again 
     overallCount += timeCount; 
    } 
    //calculate average time 
    double averageTime = overallCount/iterations; 
    printf("Average Time is %f",averageTime); 
} 
+2

Знаете ли вы, что math.h определяет PI для вас? Он называется M_PI. См. Http://stackoverflow.com/questions/1727881/how-to-use-the-pi-constant-in-c –

ответ

2

В настоящее время ваше условие цикла всегда будет истинным, помните, что с оператором или, если какое-либо из условий истинно, все выражение будет оцениваться как истина.

Вместо этого вы захотите использовать в своем цикле условие while. С ними цикл будет продолжаться, только если все условия верны.

while(xCount > -20 && xCount < 20 && yCount > -20 && yCount < 20) 
Смежные вопросы