2013-04-06 2 views
4
void load(int *n, double *x, double **arr, bool randomize) 
{ 
    *arr = (double*)malloc((*n + 1) * sizeof(double)); 
    srand(time(NULL)); 
    for(int i = 0; i <= *n; i++) 
    { 
     if(! randomize) 
     { 
      scanf("%lf", *arr + i); 
     } 
     else 
     { 
      *(arr + i) = rand(); 
     } 
    } 
} 

randomize 매개 변수를 기준으로 임의의 또는 사용자 정의 이중 숫자로 배열을 채 웁니다. 이 코드는 컴파일되지 않지만 else 섹션에 "invalid conversion from int to double"이 표시됩니다.double을 double로 변환 할 수 없습니다.

rand()을 5.0과 같은 임의의 부동 소수점 값으로 바꾸면 "이중에서 이중으로 변환 할 수 없음"이 대신 표시됩니다.

(double) rand() 또는 (double) 5 유사한 오류가 발생합니다.

*n이 물론 이전에이 기능에서 읽었으므로 여기서는 잘랐습니다.

무엇이 잘못 될 수 있습니까?

답변

2

인용 한 오류 메시지가 불완전합니다. double 다음에 별표가 누락되었습니다. *(arr + i) 유형이 double이 아닌 이 며 int 또는 doubledouble*으로 변환 할 수 없습니다.

은 아마도 당신은

 *(*arr + i) = rand(); 

또는

의미
 (*arr)[i] = rand(); 
+0

어, C에서 포인터와 참조를 배우는 것이 매우 쿵푸 * 요리하는 어려운 ;-) 감사합니다! – user2251921

+2

@ user2251921 : 안녕하십니까. BTW, C의 참조는 쉽습니다 - 어떤 것도 없습니다! ;-) – NPE

0

*(arr + i) = rand(); ->(*arr)[i] = rand();

관련 문제