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

di Anonimizzato25653 il
29 risposte
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

  • 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?
  • 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
  • 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...
  • 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.
  • 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.
  • 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.
  • 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
  • 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
  • Già questo è sbagliato. Rifletti, fai una prova, calcola la media a mano ... (scusa ma che classe frequenti?)
  • 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.
  • 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.
  • 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.
  • 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