Programmazione

di il
4 risposte

Programmazione

Questo è il titolo dell'esercizio
Un segnale elettrico campionato ad una data frequenza può essere rappresentato come un vettore di numeri in virgola mobile, in cui
l’elemento i-esimo contiene la misura del segnale al tempo t(i).
Scrivere in linguaggio C un procedura che presi come parametri l’array A di lunghezza N rappresentate il segnale compianto e un
numero intero P, calcoli il valore medio del segnale ogni P istanti di tempo (t(P), t(2*P) … t(N/P*P)) e scriva i risultanti valori in un
nuovo array passato alla funzione tramite puntatore. Se N non è divisibile per P, considerare che le ulteriori misurazioni dopo l’istante
t(N) siano uguali a zero.
Ad esempio se P = 4 e l’array A = 5.5 2.5 4 6 7 5 12 10 2 4
l’array B sarà B = 4.5 8.5 1.5

Questo è il programma che poi il prof ha messo come soluzione quando lo copio poi per provarlo mi da errore sul primo for, perchè?

#include <stdio.h>
#include <stdlib.h>
//Dichiarazione funzione 2 punti
void compress(float a[], int n, float b[], int p) {
float partial = 0;
int c = 0;
//Ciclo principale 2 punti
for (int i = 0 ; i < n; i++) {
partial += a;
int resto = (i+1) % p;
if (resto == 0) {
//Calcolo media parziale valori 2 punti
float media = partial/p;
//Assegnamento del valore nel secondo array 2 punti
b[c] = media;
c++;
// Azzeramento somma parziale 1 punto
partial = 0;
}
}
//Considerare gli eventuali restanti valori 3 punti
if (partial != 0) {
b[c] = partial/p;
c++;
}
}
void write(float a[], int l) {
for (int i = 0; i < l ; i++) {
printf("%.1f \n",a);
}
}
int main() {
float a[10] = {5.5,2.5,4,6,7,5,12,10,2,4};
float b[3];
write(a,10);
int peace = 4;
printf("Compressing, peace = %d\n",peace);
compress(a,10,b,peace);
write(b,3);
}

4 Risposte

  • Re: Programmazione

    A me funziona ... se non dici altro dell'errore non si può rispondere.

    E in ogni caso utilizza i tag CODE per il codice.
  • Re: Programmazione

    Mi da quest'errore
    [Error] 'for' loop initial declarations are only allowed in C99 or C11 mode
    ma tu se lo copi così com'è ti funziona?
  • Re: Programmazione

    Certo che funziona ma probabilmente il tuo compilatore C non supporta linee come questa

    for (int i = 0 ; i < n; i++) {

    che puoi cambiare in

    int i;
    for (i = 0 ; i < n; i++) {
  • Re: Programmazione

    Perfetto funziona! grazie mille
Devi accedere o registrarti per scrivere nel forum
4 risposte