2016-08-16 5 views
0

나는 (내가 생각하기에는) 비록 float * 변수로 magnitude 배열을 저장하고있다. 왜 그것이 배열이 아닌 float 변수라고 말합니까?float * float로 변환 할 수 없지만 변수를 배열로 저장 했습니까?

특정 오류, " '(&을, INT, 플로트 * 부동) 부동 소수점 표준 편차' 역 = 표준 편차 (길이, 크기 [길이]에 '2'인수 '플로트 *'에 '플로트'을 변환 할 수 없습니다 말한다 평균); "

#include <iostream> 
#include <cmath> 


using namespace std; 


float stdev(int,float*,float&); 


int main(void) { 

int length=3; 
float* magnitude=new float[length]; 
magnitude[0]=1; 
magnitude[1]=2; 
magnitude[2]=3; 

float sta,avg; 
sta=stdev(length,magnitude[length],avg); 

cout << "Standard Deviation is" << sta << endl; 
return 0; 
} 




float stdev(int N,float* a,float avg) { 

float stdv; 
float sum=0; 
for (int k=0;k<N;k++) { 
    sum=sum+a[k]; 

}  
    avg=sum/N; 

float s = 0; 

    for (int k=0;k<N;k++) 
    s=s+(a[k]-avg)*(a[k]-avg); 

stdv=sqrt(s/N); 

return stdv; 

} 
+1

'magnitude [length]'대신 'stdev'를 호출 할 때'magnitude' 만 사용하십시오. 'magnitude [length]'는'float'으로 평가되는 반면에'magnitude'는'float *'입니다. 이것은 당신이 필요로하는 것입니다. –

+0

스팸 태그하지 마십시오. – Olaf

+0

크기 [길이]는 float *가 아닌 float 유형입니다. magnitude [length] 대신에 magnitude와 함께 함수를 호출하십시오. 또한 magnitude [length]는 실제로는 c/C++의 배열이 인덱스 0에서 시작하여 길이 -1까지이므로 사용자가 만든 배열의 범위 밖에 있습니다. – javey

답변

-1

stdev를 stdev (길이, 크기, 평균)로 부릅니다.

크기 [길이]는 float * 유형이 아닙니다. magnitude [length] 대신에 magnitude와 함께 함수를 호출하십시오. 또한 magnitude [length]는 실제로 c/C++의 배열이 인덱스 0에서 시작하여 길이 -1까지이므로 배열의 범위 밖에 있습니다.

단순히 매개 변수로 배열의 이름을 전달하십시오.

+0

" 당신의 대답에 대한 저의 의견을보십시오. " - 그게 어떻게 작동하는지 아니야. – Olaf

+0

답변을 주었고 그에 대한 의견을 덧붙였습니다. 내 의견을 복사하여 붙여 넣으면 행복하게 만들 수 있습니다. – javey

+0

"나를 행복하게 만드는 것"이 ​​아니지만, 부끄러운 코멘트 대신 사이트 규칙을 따라야합니다. 의견 (질문에 대한)은 귀하의 답을 완성하는 것이 아닙니다. 그러나 왜 당신이 코멘트없이 다운 폰트를 선호한다면, 그냥 다음 번엔 DV로하고 저에게 코멘트를 남겨주세요. – Olaf

관련 문제