PDA

Visualizza la versione completa : Non riesco a capire l'uso dell'asterisco: ma perché?


marchionili
19-12-2011, 23:42
Sto leggendo un programma in c++ ma non riesco a capire l'uso e il significato dell'asterisco. Sul manuale si dicono molte cose ma io non riesco a comprenderle. Qui sotto vi posto il codice incriminato:


struct geometria_sezione
{
float area;
float scx;
float scy;
float ix;
float iy;
float ixy;
float alfa;
float ia;
float ib;
};

struct poligono_sezione
{
float x[NMAXVRT];
float y[NMAXVRT];
int numv;
float omog;
int traz;
char classe[8];
float fd;
int automfd;
int dominio;
int fase;
float epsc0;
float epscu;
int automeps;
int selez[NMAXVRT];
int bloc[NMAXVRT];
};

struct geometria_sezione calcola_caratt_geometriche (struct poligono_sezione *);

struct geometria_sezione calcola_caratt_geometriche (struct poligono_sezione *polic)
{
int register k,kp1,np;
float a,d,hy,hx;
struct geometria_sezione geo;


geo.area=0.0; geo.scx=0.0; geo.scy=0.0;
geo.ix=0.0; geo.iy=0.0; geo.ixy=0.0;

for (np=0;np<=NMAXPOLI-1;np++)
{
for (k=0;k<=polic[np].numv-1;k++)
{
if (k==polic[np].numv-1) kp1=0; else kp1=k+1;

a=polic[np].x[kp1]-polic[np].x[k];
d=polic[np].y[kp1]-polic[np].y[k];
hy=polic[np].y[k]-yg;
hx=polic[np].x[k]-xg;

geo.area+=polic[np].omog*a*(hy+d/2);
geo.scx+=polic[np].omog*a/2*(hy*hy+d*d/3+d*hy);
geo.scy-=polic[np].omog*d/2*(hx*hx+a*a/3+a*hx);
geo.ix+=polic[np].omog*a/3*(pow(hy,3)+hy*d*d+3*hy*hy*d/2+pow(d,3)/4);
geo.iy-=polic[np].omog*d/3*(pow(hx,3)+hx*a*a+3*hx*hx*a/2+pow(a,3)/4);
geo.ixy+=polic[np].omog*a*(hx/2*(hy*hy+d*d/3+d*hy)+a/2*(hy*hy/2+d*d/4+2*d*hy/3));
}
}

for (k=0;k<=arm.numarm-1;k++)
{
if (arm.af[k]!=0.0 && arm.cong[k]==0)
{
geo.area+=arm.omogarm*arm.af[k];
geo.scx+=arm.omogarm*arm.af[k]*(arm.y[k]-yg);
geo.scy+=arm.omogarm*arm.af[k]*(arm.x[k]-xg);
geo.ix+=arm.omogarm*arm.af[k]*pow(arm.y[k]-yg,2);
geo.iy+=arm.omogarm*arm.af[k]*pow(arm.x[k]-xg,2);
geo.ixy+=arm.omogarm*arm.af[k]*(arm.x[k]-xg)*(arm.y[k]-yg);
}
}

if (geo.ix-geo.iy!=0) geo.alfa=atan(-2*geo.ixy/(geo.ix-geo.iy))/2;
else { if (geo.ixy>0.0) geo.alfa=-0.7854; else geo.alfa=0.7854; }
if (geo.ix<geo.iy) geo.alfa+=1.570796327;

geo.ia=(geo.ix+geo.iy)/2+sqrt(pow(geo.ix-geo.iy,2)+4*pow(geo.ixy,2))/2;
geo.ib=(geo.ix+geo.iy)/2-sqrt(pow(geo.ix-geo.iy,2)+4*pow(geo.ixy,2))/2;

return (geo);
}

Non ho bisogno che entriate nel merito del codice ma solo che mi spiegate perché dopo poligono sezione c'é l'asterisco e perché dopo l'asterisco una variabile in più (polic) non dichiarata in precedenza:


struct geometria_sezione calcola_caratt_geometriche (struct poligono_sezione *);

Mi potreste fare un esempio simile a questo ma con un algoritmo più semplice che mi permette di capire una volta per tutte l'uso di questo asterisco... :( Vorrei anche capire quando posso mettere questo simbono e quando invece devo metterlo... L'unica cortesia che vi chiedo é di usare una terminologia semplice perché altrimenti sono di nuovo punto a capo... :dhò:

MItaly
20-12-2011, 00:43
Non c'è scampo, ti devi studiare un libro di C: l'asterisco è strettamente connesso con i puntatori (in una dichiarazione specifica che si sta dichiarando un puntatore, in un'espressione che lo si sta dereferenziando), e non è un argomento che si spieghi in poche parole. (o meglio, spiegare cos'è un puntatore è facile, spiegare il loro uso corretto molto meno)

oregon
20-12-2011, 10:11
Originariamente inviato da marchionili
Sto leggendo un programma in c++ ma non riesco a capire l'uso e il significato dell'asterisco. Sul manuale si dicono molte cose ma io non riesco a comprenderle.

Non è che in un forum risolvi quello che non puoi con il manuale ...


Non ho bisogno che entriate nel merito del codice ma solo che mi spiegate perché dopo poligono sezione c'é l'asterisco

Devi rileggere (e direi studiare ...) il capitolo dei puntatori. L'asterisco in

struct poligono_sezione *

indica un "puntatore ad una struttura poligono_sezione".


e perché dopo l'asterisco una variabile in più (polic) non dichiarata in precedenza

E a questo punto mi ricollego alla risposta di MItaly ... devi studiare tutto il libro di C perché ti sei sicuramente perso qualche capitolo di base (funzioni e argomenti delle funzioni, polic è un argomento di funzione, non una variabile).


Mi potreste fare un esempio simile a questo ma con un algoritmo più semplice che mi permette di capire una volta per tutte l'uso di questo asterisco... :( Vorrei anche capire quando posso mettere questo simbono e quando invece devo metterlo... L'unica cortesia che vi chiedo é di usare una terminologia semplice perché altrimenti sono di nuovo punto a capo...

Il forum non è un "professore personalizzato".

Queste sono cognizioni di base che si apprendono (non in 5 minuti o con una risposta di un forum) con mesi di studio (teorico e pratico).

Se hai la passione per la programmazione (e il tuo problema non si limita a "capire gli asterischi") ti consiglio di fermarti e studiare.

alka
20-12-2011, 11:10
Originariamente inviato da marchionili
Non riesco a capire l'uso dell'asterisco: ma perché?

A quanto pare, hai difficoltà a comprendere anche il Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973887) (vedi qui (http://forum.html.it/forum/showthread.php?s=&threadid=1484587), qui (http://forum.html.it/forum/showthread.php?s=&threadid=1484592), qui (http://forum.html.it/forum/showthread.php?s=&threadid=1484857) e qui (http://forum.html.it/forum/showthread.php?s=&postid=13484088#post13484088)).

Ti invito a evitare questo genere di abusi e a cominciare a utilizzare il forum in modo più corretto seguendo le indicazioni che ti vengono fornite.

Loading