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

di il
29 risposte

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

Buongiorno a tutti, scusate se vi disturbo, volevo chiedervi il vostro aiuto su un programma C che dice: uno strumento di misura fornisce un dato ogni minuto nell'arco di un'ora. Per ovviare a possibili errori si vogliono elaborare i valori rilevati sostituendoli con una media a tre punti: ogni elemento viene sostituito dalla media di se stesso, dall'elemento che lo precede e di quello che lo segue; per i due elementi estremi viene considerato due volte il valore dell'elemento stesso e il successivo o il precedente nel caso si tratti rispettivamente del primo o dell'ultimo elemento. Realizzare un programma che implementi l'elaborazione descritta acquisendo i dati da tastiera. Io di questo programma ho capito che i numeri da inserire sono 60,perchè è un dato ogni minuto per un'ora, devo fare la media fra l'elemento, il suo precedente e successivo e dividerlo per tre ed è questo il risultato che mi dovrà venire chiaramente dovrò mettere una condizione per stabilire se il primo o l'ultimo elemento per effettuare due volte il procedimento della media. Ho provato a fare da solo il programma prima di chiedervi aiuto, ma non è mi è riuscito il procedimento della media.
#include<iostream>

#define DIM 60

using namespace std;

void inserisci(int v[]);

float media(int v[]);

void stampa_media(int v[]);

int main() {

	int v[DIM];
	
	inserisci(v);

	media(v);

	cout << "Media" << media;

	system("Pause");

}

void inserisci(int v[]) {

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

		cout << "Inserisci i dati [" << i << "]";

			cin >> v[i];
	}

}

float media(int v[]) {

	float media;

	int precedente, successivo,int i;

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

		precedente = v[i] - 1;

		successivo = v[i] + 1;

		media = v[i] + successivo + precedente / 3;

		v[i] = media;

	}
	return media;
}

Grazie a tutti quelli che proveranno ad aiutarmi.

29 Risposte

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

    La funzione media non deve restituire alcun valore perché non c'è una sola media da calcolare.
    Poi il precedente o il successivo si individuano con l'indice cioè

    v[i-1] oppure v[i+1]

    e non come hai scritto tu. La funzione va riscritta magari studiando meglio prima come funzionano i vettori.

    E l'ultimo cout che senso ha?
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    oregon ha scritto:


    La funziobe media non deve restituire alcun valore perché non c'è una sola media da calcolare. E l'ultimo cout che senso ha?
    L’ultimo cout è l’inizializzazione della media,volevo chiederti se la formula scritta nella funzione media è corretta dal punto di vista logico e come farla applicare a tutti i valori
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    Leggi il mio commento precedente completo. La funzione è completamente sbagliata, anche il semplice calcolo (si divide per 3 la somma non solo l'ultimo valore). E la cout non ha senso. Che significa inizializzazipne della media? Hai parecchie carenze di base...
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    oregon ha scritto:


    Leggi il mio commento precedente completo. La funzione è completamente sbagliata, anche il semplice calcolo (si divide per 3 la somma non solo l'ultimo valore). E la cout non ha senso. Che significa inizializzazipne della media? Hai parecchie carenze di base...
    Forse si ma io mi sto impegnando per recuperare,ho capito i vettori,ho recuperato le funzioni e il resto,quindi io in questo caso non so come fare la funzione media,perché la devo applicare a tutti i valori,il cout è un altro modo di inizializzare oltre a media(v);se non inizializzi,la funzione non viene eseguita.Detto questo volevo chiederti se per favore mi potresti spiegare la funzione media applicata a questo caso specifico.
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    Non ho detto che non ti impegni (come potrei saperlo) ma evidenzio quello che vedo. Ovvero tu hai parecchie carenze che ti impediscono di scrivere codice relativamente semplice come questo. Non so che scuola frequenti ma ti servirebbe un aiuto in presenza.

    Detto questo, cerca di scrivere codice semplice, anche se non efficiente, prova intanto a scrivere pezzo per pezzo in modo che sia semplice.

    La media, tanto per cominciare, falla tra tre variabili,

    precedente, attuale, successivo

    Come la calcoli ? Solo la linea del calcolo.
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    oregon ha scritto:


    Non ho detto che non ti impegni (come potrei saperlo) ma evidenzio quello che vedo. Ovvero tu hai parecchie carenze che ti impediscono di scrivere codice relativamente semplice come questo. Non so che scuola frequenti ma ti servirebbe un aiuto in presenza.

    Detto questo, cerca di scrivere codice semplice, anche se non efficiente, prova intanto a scrivere pezzo per pezzo in modo che sia semplice.

    La media, tanto per cominciare, falla tra tre variabili,

    precedente, attuale, successivo

    Come la calcoli ? Solo la linea del calcolo.
    Attuale DIM,precedente DIM-1,successivo DIM+1,però se mi hai detto che la media che ho fatto io è sbagliato non saprei proprio,le mie difficoltà sono sulla media con i vettori che deve essere applicata non una sola ma per tutti,io non saprei come fare.
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    No ... ma che dici? DIM è il massimo (ovvero 60), non c'entra nulla ... cerca di ragionare.

    Ti ho solo chiesto, se hai 3 variabili, a, b, c come calcoli la media m ?
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    A+b+c/3 nel senso somma+=n/contatore
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    oregon ha scritto:


    No ... ma che dici? DIM è il massimo (ovvero 60), non c'entra nulla ... cerca di ragionare.

    Ti ho solo chiesto, se hai 3 variabili, a, b, c come calcoli la media m ?

    A+b+c/3 nel senso somma+=n/contatore
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    Già questo è sbagliato. Rifletti, fai una prova, calcola la media a mano ... (scusa ma che classe frequenti?)
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    oregon ha scritto:


    Già questo è sbagliato. Rifletti, fai una prova, calcola la media a mano ... (scusa ma che classe frequenti?)
    La media si fa facendo la somma e dividendola per il numero degli elementi,in C senza i vettori so effettuare la media per un solo elemento,ma qua sono più elementi devo creare una funzione in grado di applicare la media per tutti gli elementi.
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    Io ti ho parlato di 3 variabili semplici non di vettori. E ti ho detto che l'hai scritto sbagliato in C.

    Se scrivi

    a+b+c/3

    dividi solamente c per 3 e poi sommi b e a. Non è quello che vuoi.
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

    oregon ha scritto:


    Io ti ho parlato di 3 variabili semplici non di vettori. E ti ho detto che l'hai scritto sbagliato in C.

    Se scrivi

    a+b+c/3

    dividi solamente c per 3 e poi sommi b e a. Non è quello che vuoi.
    No... ho detto faccio prima la somma è divido per tre,l’ho metto tra parentesi(a+b+c)/3,ma non so come applicarlo per tutti i vettori.
  • Re: Programma sull'elaborazione dati:media con il precedente e successivo

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

    media = (precedente+attuale+successivo)/3.0;
Devi accedere o registrarti per scrivere nel forum
29 risposte