Puntatore di array

12 Anni 1 Mese fa #1 da Roberto_c
Puntatore di array è stato creato da Roberto_c
Buongiorno a tutti, ho un problema di programmazione sull'uso dei puntatori che mi sta assilando,non sono molto pratico, così provo a chiedere a voi.

La funzione è questa;

int Media(int Val_A, long *Somma_Medie, unsigned char *Counter, int *Media_Buff[])
{
*Somma_Medie += Val_A - *Media_Buff[*Counter];
*Media_Buff[*Counter] = Val_A;
++*Counter;
if (*Counter > N_Medie - 1)
*Counter = 0;

return (*Somma_Medie / N_Medie);

}


E la richiamo così:

AnalOUT[0] = Media(Analog[0], &Somma_Medie1, &Counter1, &Media_Buff1[0]);
AnalOUT[1] = Media(Analog[1], &Somma_Medie2, &Counter2, &Media_Buff2[0]);
AnalOUT[2] = Media(Analog[2], &Somma_Medie3, &Counter3, &Media_Buff3[0]);

La funzione si occupa di calcolare la media mobile degli ingressi analogici, il problema è che nell'array " Media_Buffer1", o 2 o 3 non vengono caricati i valori delle letture, sicuramente sbaglio qualcosa con i puntatori o gli indici.
Aiuto, please.
Ciao.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Roberto_c
  • New Member
  • New Member
Di più
12 Anni 1 Mese fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Puntatore di array
Ciao Roberto,

da una prima lettura ti posso dire:

AnalOUT[0] = Media(Analog[0], &Somma_Medie1, &Counter1, &Media_Buff1[0]);

se vuoi passare l'indirizzo dell'array Media_Buff1 puoi anche scrivere:

AnalOUT[0] = Media(Analog[0], &Somma_Medie1, &Counter1, Media_Buff1);

per il valore di ritorno hai un int ma ritorni il risultato di una divisione:

return (*Somma_Medie / N_Medie);

anche se tra interi fai il casting manualmente.

Nella funzione incrementi Counter ma non hai il ciclo interno.
Perché incrementarla nella funzione?
Perché passare il puntatore all'array se poi fai uso di un solo valore?
Perché non passare subito il valore?

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
12 Anni 1 Mese fa #3 da Roberto_c
Risposta da Roberto_c al topic Re: Puntatore di array
Ciao Mauro, direi che mi trovi d'accordo con le tue osservazioni, in effetti il contatore lo posso incrementare fuori dalla funzione, però a livello didattico, vorrei capire perchè questa ringa di codice non funziona

*Media_Buff[*Counter] = Val_A;

cioè non riesco a memorizzare i valori nell'array.
dove sbaglio???

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Roberto_c
  • New Member
  • New Member
Di più
12 Anni 1 Mese fa #4 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Puntatore di array

Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
Moderatori: Mauro LaurentiStefA

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login