Programma sull'elaborazione dati:media con il precedente e successivo

di il
29 risposte

29 Risposte - Pagina 2

  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    oregon ha scritto:


    Ecco intanto va tra parentesi la somma, ma nel tuo codice non le hai messe ... quindi devi scrivere

    media = (precedente+attuale+successivo)/3.0;
    Ok ma il precedente con i vettori lo devo fare v-1
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    All'inizio sarà
    
    precedente=attuale=v[i];
    successivo=v[i+1];
    
    durante il ciclo
    
    precedente=v[i-1];
    attuale=v[i];
    successivo=v[i+1];
    
    e alla fine sarà
    
    precedente=v[i-1];
    attuale=successivo=v[i];
    
    Devi impostare bene il ciclo e riflettere su questa storia.
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    oregon ha scritto:


    All'inizio sarà
    
    precedente=attuale=v[i];
    successivo=v[i+1];
    
    durante il ciclo
    
    precedente=v[i-1];
    attuale=v[i];
    successivo=v[i+1];
    
    e alla fine sarà
    
    precedente=v[i-1];
    attuale=successivo=v[i];
    
    Devi impostare bene il ciclo e riflettere su questa storia.
    Ciao oregon, scusa se ti scrivo riguardo a questo problema dopo tanti giorni, ho ottimizzato il codice ma non mi esegue la funzione media,
    mi potresti aiutare a capire il perché?
    
    #include<iostream>
    
    #define DIM 5
    
    using namespace std;
    
    void inserisci(float v[]);
    
    void media(float v[]);
    
    
    int main() {
    
    	float v[DIM];
    	
    	inserisci(v);
    
    	media(v);
    
    	system("Pause");
    
    }
    
    void inserisci(float v[]) {
    
    	for (int i = 0; i < DIM; i++) {
    
    		cout << "Inserisci i dati [" << i << "]";
    
    			cin >> v[i];
    	}
    
    }
    void media(float v[]) {
    
    	for (int i = 0; i < DIM; i++) {
    
    		if (i == 0)
    
    			v[i] = (2 * v[i] + v[i + 1]) / 3;
    
    		else
    
    			if (i == DIM - 1)
    
    				v[i] = (2 * v[i] + v[i - 1]) / 3;
    
    			else
    
    			{
    
    				v[i]=(v[i-1]+ v[i] + v[i - 1]) / 3;
    			
    			}
    	}
    	
    }
    [\code]
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    Lasciamo perdere per il momento se sia giusta o sbagliata, ma da cosa hai dedotto che la funzione media() non viene eseguita?
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    Nippolo ha scritto:


    Lasciamo perdere per il momento se sia giusta o sbagliata, ma da cosa hai dedotto che la funzione media() non viene eseguita?
    Ho provato a mandarla in esecuzione
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    Mi fa piacere, il codice va sempre testato!

    In ogni caso la domanda resta: da cosa hai dedotto che la funzione media() non viene eseguita? Cosa ti aspetti accada lanciando quella funzione?
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    Nippolo ha scritto:


    Mi fa piacere, il codice va sempre testato!

    In ogni caso la domanda resta: da cosa hai dedotto che la funzione media() non viene eseguita? Cosa ti aspetti accada lanciando quella funzione?
    Per esempio inserisco 5 numeri:2,3,4 e 5,deve farmi la media fra il vettore attuale, precedente e successivo, tranne in due casi dove se il vettore è il primo, si moltiplicherà per due quel vettore, sommarlo con il successivo e dividerlo per tre, invece per l'ultimo vettore devo moltiplicarlo per due, sommarlo con il precedente e dividerlo per tre.Ecco perché ho messo gli if necessari.Il programma non da errori sintattici o semantici, manca qualcosa non capisco cosa
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    Avendo letto qualche post precedente, sono al corrente di quello che stai cercando di fare, ma la mia domanda è un'altra e non ha avuto ancora risposta... cosa ti aspetti che succeda lanciando quella funzione? Ti aspetti forse che al termine dell'esecuzione qualcuno bussi alla porta e ti dica quali sono i nuovi valori mediati?!
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    Nippolo ha scritto:


    Avendo letto qualche post precedente, sono al corrente di quello che stai cercando di fare, ma la mia domanda è un'altra e non ha avuto ancora risposta... cosa ti aspetti che succeda lanciando quella funzione? Ti aspetti forse che al termine dell'esecuzione qualcuno bussi alla porta e ti dica quali sono i nuovi valori mediati?!
    No,ma io nel main ho inizializzato la funzione media,in teoria dovrebbe eseguirla
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    Nippolo ha scritto:


    Avendo letto qualche post precedente, sono al corrente di quello che stai cercando di fare, ma la mia domanda è un'altra e non ha avuto ancora risposta... cosa ti aspetti che succeda lanciando quella funzione? Ti aspetti forse che al termine dell'esecuzione qualcuno bussi alla porta e ti dica quali sono i nuovi valori mediati?!
    No,ma io nel main ho messo il nome della funzione media,in teoria dovrebbe eseguirla,io i nuovi valori che dovrebbero spuntare li so,ma è il compilatore che deve darmeli in base alla funzione che ho scritto
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    Gastaldo ha scritto:


    No,ma io nel main ho messo il nome della funzione media,in teoria dovrebbe eseguirla,io i nuovi valori che dovrebbero spuntare li so,ma è il compilatore che deve darmeli in base alla funzione che ho scritto
    Darteli in che modo?
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    Nippolo ha scritto:


    Gastaldo ha scritto:


    No,ma io nel main ho messo il nome della funzione media,in teoria dovrebbe eseguirla,io i nuovi valori che dovrebbero spuntare li so,ma è il compilatore che deve darmeli in base alla funzione che ho scritto
    Darteli in che modo?
    Darmeli come ho scritto nella funzione,forse ci vorrebbe una funziona stampa?
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    Si,con la funzione stampa in teoria mi ha dato la media,ho effettuato un controllo per vedere se sono corretti,però i valori della media sono sbagliati,mi potresti aiutare a capire il perché?
    Allegati:
    File del programma.exe
    File del programma.exe
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    Facendo in quel modo le medie successive alla prima non verranno calcolate utilizzando i dati originali, ma utilizzando valori già mediati.
    Se non vuoi usare un secondo array, la soluzione più semplice è quella di conservare in una variabile il dato originale precedente.

    Inoltre nella seguente riga di codice
    v[i]=(v[i-1]+ v[i] + v[i - 1]) / 3;
    c'è un errore!

    Infine se ci pensi ti renderai conto che tutti quegli if/else possono essere evitati.
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    Nippolo ha scritto:


    Facendo in quel modo le medie successive alla prima non verranno calcolate utilizzando i dati originali, ma utilizzando valori già mediati.
    Se non vuoi usare un secondo array, la soluzione più semplice è quella di conservare in una variabile il dato originale precedente.

    Inoltre nella seguente riga di codice
    v[i]=(v[i-1]+ v[i] + v[i - 1]) / 3;
    c'è un errore!

    Infine se ci pensi ti renderai conto che tutti quegli if/else possono essere evitati.
    Grazie per avermi aiutato a capire gli errori
Devi accedere o registrarti per scrivere nel forum
29 risposte