Calculating normals

I’m doing a normals calculation for my object loaded from 3d studio(milkshape actually).My problem is that my normals aren’t correct(checked)
Code:
void CalculateNormals(unsigned short PolysArray,unsigned int PolysCount,float VertexArray,unsigned int VertexCount,float NormalsArray)
{
unsigned int i,j;
float lenght;
float temp_normal[3]={0,0,0};
float temp_polyg_normal; ov
float temp_vector1[3]={0,0,0},temp_vector2[3]={0,0,0};
temp_polyg_normal=new float[PolysCount
3];
for(i=0;i<PolysCount
3;i++)
(temp_polyg_normal+i)=0;
for(i=0;i<PolysCount;i++)
{
temp_vector1[0]=(
(VertexArray+((PolysArray+3i+1))))-((VertexArray+((PolysArray+3i))));
temp_vector1[1]=(
(VertexArray+((PolysArray+3i+1))+1))-((VertexArray+((PolysArray+3i))+1)); temp_vector1[2]=((VertexArray+((PolysArray+3i+1))+2))-((VertexArray+((PolysArray+3i))+2));
temp_vector2[0]=(
(VertexArray+((PolysArray+3i+2))))-((VertexArray+((PolysArray+3i+1)))); temp_vector2[1]=((VertexArray+((PolysArray+3i+2))+1))-((VertexArray+((PolysArray+3i+1))+1));
temp_vector2[2]=(
(VertexArray+((PolysArray+3i+2))+2))-((VertexArray+((PolysArray+3i+1))+2)); //vypocet 2 vektora polygonu i(os z)
(temp_polyg_normal+3i)=temp_vector1[1]temp_vector2[2]-temp_vector2[1]temp_vector1[2];
(temp_polyg_normal+3i+1)=temp_vector1[2]temp_vector2[0]-temp_vector2[2]temp_vector1[0]; y)
(temp_polyg_normal+3i+2)=temp_vector1[0]temp_vector2[1]-temp_vector2[0]temp_vector1[1]; z)
}
for(i=0;i<VertexCount;i++)
{ for(j=0;j<PolysCount;j++)
{
if((i==
(PolysArray+3
j)) | | (i==
(PolysArray+3
j+1)) | | (i==
(PolysArray+3
j+2)))
{
temp_normal[0]+=
(temp_polyg_normal+3j); temp_normal[1]+=(temp_polyg_normal+3j+1);
temp_normal[2]+=
(temp_polyg_normal+3*j+2);
}
}
lenght=(float)sqrt((float)pow(temp_normal[0],2)+(float)pow(temp_normal[1],2)+(float)pow(temp_normal[2],2));
if(lenght==0) lenght=1;
(NormalsArray+3i)=temp_normal[0]/lenght;
(NormalsArray+3i+1)=temp_normal[1]/lenght;
(NormalsArray+3i+2)=temp_normal[2]/lenght;
}
}

What is wrong ?