[Tech] Ancora non va :(

Franco Bagnoli bagnoli@dma.unifi.it
Mer 9 Giu 2004 15:06:45 CEST


On Wed, 9 Jun 2004, Valerio Montagnani wrote:

> On Wed, 09 Jun 2004 12:49:02 +0200
> Simone Piccardi <piccardi@firenze.linux.it> wrote:
> 
> A dimostrazione di ciņ che dico vi mando questo codice. I risultati sono
> analoghi, come potete vedere compilandolo.

ma compila? io direi di no, solo a guardarlo. 

mi sta sfuggendo che cosa vuoi fare (ho gettato i vecchi messaggi senza 
leggerli). Una matrice a 3 indici? l'ultimo indice č variabile? altrimenti 
puoi mettere tutto in un unico vettore. 

Comunque: 



> float *alloca_mem_3(int sizeX, int sizeY)
> {
>   float **;
>   int j;
>   m=(float **)malloc(sizeX*sizeof(float*));
>   for (j=0; j<sizeX; j++) {
>     m[j]=(float *)malloc(sizeY+sizeof(float));
>   }
>   return *m;
> }

questo alloca alloca un vettore di vettori di float. quindi dovrebbe 
essere

float ** matrice;
int i,j;

float ** alloca_mem_3(int sizeX, int sizeY)
{
   float **m;
   int j;    /* occhio che questa dichiarazione maschera il j globale */
   m=(float **)malloc(sizeX*sizeof(float*));
   for (j=0; j<sizeX; j++) {
     m[j]=(float *)malloc(sizeY+sizeof(float));
   }
   return m;
}

main( int argc, char argv[]) { 
   matrice=alloca_mem_3(3,3);
  // Stampa dei risultati usando la mia funzione
   for(i=0;i<3;i++){
     for(j=0;j<3;j++){
       matrice[i][j]=i*j;
       printf("matrice[%d][%d]=%f\n",i,j,matrice[i][j]);
     }
   }
 }

------------------------------------------

Se invece volevi allocare un solo vettore e vederlo come 
una matrice 
 
float * matrice;
int i,j;

float * alloca_mem_3(int sizeX, int sizeY)
{
   float *m;
   int j;    /* occhio che questa dichiarazione maschera il j globale */
   m=(float *)malloc(sizeX*sizey*sizeof(float));
   return m;
}

main( int argc, char argv[]) {
   matrice=alloca_mem_3(3,3);
  // Stampa dei risultati usando la mia funzione
   for(i=0;i<3;i++){
     for(j=0;j<3;j++){
       matrice[i*3+j]=i*j;
       printf("matrice[%d][%d]=%f\n",i,j,matrice[i*3+j]);
     }
   }
 }

-- 
Franco Bagnoli (franchino) <bagnoli@dma.unifi.it> 
virtual location: Dipartimento di Energetica "S. Stecco"
ultra-virtual affiliation: Centro Dinamiche Complesse (CSDC-Firenze)
real location: Dip. Matematica Applicata "G. Sansone", Universita' Firenze,
Via S. Marta, 3 I-50139 Firenze, Italy. Tel. +39 0554796422, fax: +39 055471787






Maggiori informazioni sulla lista flug-tech