Enviado em 30/06/2020 - 17:07h
Boa noite à todos. Estou começando a programação ando enfrentando um problema em um programa que estou desenvolvendo para minha IC.
Vocês poderiam me ajudar?
Eu queria saber manusear os ponteiros corretamente pois meu objetivo é criar uma amostra 3d de moléculas( cada molécula tem a componente x, y e z) no entanto, quando inicializo pelo terminal eu preciso indicar o tamanho da molécula e não consigo fazer dessa forma( utilizando argc argv).
typedef struct
{
double x,y,z;
}vetor;
vetor ***p;
void rede(int nx, int ny, int nz, int c)
{
int i,j,k=0;
double norma=0;
if(c==1)
{
double r=1.0*(1000-rand()%2000)/1000;
for(i=0; i<nx; i++)
{
for(j=0; j<ny; j++)
{
for(k=0; k<nz; k++)
{
p[i][j][k].x=1.0*r;
p[i][j][k].y=1.0*r;
p[i][j][k].z=1.0*r;
norma=sqrt(pow(p[i][j][k].x,2)+pow(p[i][j][k].y,2)+pow(p[i][j][k].z,2));
p[i][j][k].x=p[i][j][k].x/norma;
p[i][j][k].y=p[i][j][k].y/norma;
p[i][j][k].z=p[i][j][k].z/norma;
printf("%d %d %d %lf %lf %lf %lf \n",i,j,k,p[i][j][k].x,p[i][j][k].y,p[i][j][k].z,sqrt(pow(p[i][j][k].x,2)+pow(p[i][j][k].y,2)+pow(p[i][j][k].z,2)));
}
}
}
}
else if(c==0)
{
for(i=0; i<nx; i++)
{
for(j=0; j<ny; j++)
{
for(k=0; k<nz; k++)
{
p[i][j][k].x=1.0*(1000-rand()%2000)/1000;
p[i][j][k].y=1.0*(1000-rand()%2000)/1000;
p[i][j][k].z=1.0*(1000-rand()%2000)/1000;
norma=sqrt(pow(p[i][j][k].x,2)+pow(p[i][j][k].y,2)+pow(p[i][j][k].z,2));
p[i][j][k].x=p[i][j][k].x/norma;
p[i][j][k].y=p[i][j][k].y/norma;
p[i][j][k].z=p[i][j][k].z/norma;
printf("%d %d %d %lf %lf %lf %lf \n",i,j,k,p[i][j][k].x,p[i][j][k].y,p[i][j][k].z,sqrt(pow(p[i][j][k].x,2)+pow(p[i][j][k].y,2)+pow(p[i][j][k].z,2)));
}
}
}
}
else
{
printf("Nenhuma das opcoes \n");
exit(0);
}
int main(int argc, char *argv[])
{
srand(time(NULL));
int c=atof(argv[1]);
int nx=atof(argv[2]);
int ny=nx;
int nz=atof(argv[3]);
//param();
rede(nx,ny,nz,c);
return 0;
}
Vocês poderiam me ajudar?
