[Tech] Nuova domanda di C

Franco Bagnoli bagnoli@dma.unifi.it
Mer 9 Giu 2004 10:09:03 CEST


On Wed, 9 Jun 2004, Valerio Montagnani wrote:

> On Wed, 9 Jun 2004 09:27:15 +0200 (CEST)
> "Marco Ermini" <markoer@markoer.org> wrote:
> 
> Ciao Marco.  Ancora non mi riesce bene di capire i puntatori. Non riesco
> a levarmi dalla testa la programmazione con Matlab e mischio tutto.
> Risultato: un bel casino!!!!!!!

se penso che da quest'anno ai miei ingegneri non insegnano pių il C al 
primo anno e l'hanno sostituito con matlab!!! 

>
> 1. Ho bisogno di allocare una matrice in maniera dinamica, perchč a
> priori non posso sapere quante righe possa avere. Il numero delle
> colonne č fisso: 200.
 
> float **features;
> features=(float **)malloc(size*sizeof(float*)*200*sizeof(float*));

scusate se intervengo, ma mi sembra di capire che tu vuoi una matrice di 
size righe per 200 colonne di puntatori. quindi hai bisogno di 
size*200*sizeof(float*) locazioni. Mi sembra che tu abbia un sizeof di 
troppo. 

> 2. Una volta allocata, bisogna metterci dentro i valori.
> Io ho sempre fatto con dei cicli for, ma ora sono nel pallone.

credo che ti convenga definire una macro, tipo 

#define FEATURES(row,col) features[(row)*200+(col)]

cosė puoi lavorare pių facilmente

for (i=0; i<size, i++) {
   for (j=0; j<200; j++) {
     FEATURES(i,j) = ...
   }
}

un po' alla matlab, insomma ;) 

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