[Tech] Domanda di C

Claudio Kutufà claudiok@nexusfi.it
Mar 8 Feb 2005 11:25:17 CET


At 11.18 08/02/2005 +0100, you wrote:
>Ciao a tutti.
>
>Mi trovo in difficoltà con questa cosa:
>
>Ho un vettore di 120.000 valori interi. Vorrei fare una media dei valori
>del vettore a 4000 punti per volta.
>Per fare questo ho scritto la seguente funzione:
>
>int16_t *Media(int16_t *buffer, int finestra, int dimensione)
>{
>   int i,j;
>   long int somma;
>   int16_t *bufOut;

intanto una domanda, gli int sulla tua macchina a quanti bit sono? 16 o 32 
? non vorrei che la variabile i non arrivasse a coprite tutti i 120.000

>   bufOut=NULL;
>   bufOut=i16vector(dimensione/finestra);
>   // la func i16vector alloca dinamicamente un vettore di interi
>   // la cui dimensione è data dall'argomento della funzione stessa
>
>   for (i=0; i<dimensione; i=i+finestra)
>    {
>       somma=0;
>       for (j=i; j<i+finestra; j++)
>         {
>           somma=somma+buffer[j];
>         }
>       bufOut[i/finestra]=(int16_t)round(somma/finestra);
>    }
>   return bufOut;
>   free(bufOut);
>}
>
>La funzione la chiamo con i seguenti parametri:
>
>Buffer=(vettore,4000,120000);

Buffer=Media....       vero?

>dove Buffer è un array di 30 interi allocati dinamicamente.
>      vettore è un array di 120000 interi allocati dinamicamente.
>
>Non avvengono errori di segmentazione ma, se tuttavia stampo i 30 valori
>di Buffer ottengo i primi 15 valori calcolati correttamente, mentre i
>restanti valori uguali a 0.
>
>Mi potreste spiegare perchè?

a dopo
Cla

>Grazie, Valerio
>_______________________________________________
>FLUG - Discussioni tecniche - tech@firenze.linux.it
>URL: http://lists.firenze.linux.it/mailman/listinfo/tech
>Archivio: http://lists.firenze.linux.it/pipermail/tech
>Ricerca nell'archivio: http://www.firenze.linux.it/search



+++++++++++++++++++++++++++++++++++++++++++++++++++++
Ing. Claudio Kutufa'
NEXUS SISTEMI INFORMATIVI S.P.A.
e-mail personale:    claudiok@nexusfi.it
tel. cellulare: 335 5859567

Sede Oper.va :  Via Dante da Castiglione, 33
Tel. :  +39 055 229413   Fax : +39 055 229785
50125 Firenze - Italy
Sede Amm.va :  Via Panciatichi 40/11
Tel. :  +39 055 4222030 Fax  : +39 055 4376670
50100 Firenze - Italy

Nexus home page:     www.nexusfi.it
+++++++++++++++++++++++++++++++++++++++++++++++++++++





Maggiori informazioni sulla lista flug-tech