Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Non riesco a capire l'uso dell'asterisco: ma perché?

    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:

    codice:
    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:

    codice:
    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...

  2. #2
    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)
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481

    Re: Non riesco a capire l'uso dell'asterisco: ma perché?

    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.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Moderazione

    Originariamente inviato da marchionili
    Non riesco a capire l'uso dell'asterisco: ma perché?
    A quanto pare, hai difficoltà a comprendere anche il Regolamento (vedi qui, qui, qui e qui).

    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.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.