Programma in C: Dubbi su una funzione, potete aiutarmi a risolverli?

di il
3 risposte

Programma in C: Dubbi su una funzione, potete aiutarmi a risolverli?

Buonasera,
Volevo chiedere un aiuto riguardo la creazione di una funzione all'interno del programma che segue.
Prima di tutto il programma :

1- chiede all'utente il valore della deviazione standard s che deve essere > 0 e < 1; se il
valore non rispetta i limiti ci deve essere una stampa di avvertimento e il valore deve essere
chiesto di nuovo finché non sia valido;
2- genera 100 valori di g distribuiti in modo gaussiano.
Per fare ciò bisogna:
a) generare 100 volte due variabili casuali ?1 e ?2 comprese tra 0 e 1, estremi
esclusi,usando random() o lrand48();
b) per ogni coppia ?1 e ?2 calcolare la variabile ?1 = v -2 ln(?1)sin(2 p ?2)
la variabile ?1 è distribuita in modo gaussiano con media 0 e varianza 1;
[la funzione per calcolare il ln si chiama log]
c) per ogni valore così calcolato di ?1 eseguire la trasformazione
gk = ?1 s + 9.806 dove ora i gk sono 100 valori gaussiani con media µ = 9.806
e deviazione standard s.
Le operazioni appena descritte devono essere svolte in una funzione di tipo void
che riceve in input un array destinato a contenere i valori gk e la deviazione standard s.
3- scrive in un file formattato di nome g.dat i valori gk generati al punto 2.
4- chiede all'utente due valori s1 e s2 compresi tra 0 e 1, estremi esclusi, sempre
controllandone la validità come al punto 1.


E tutto ciò è stato fatto senza problemi ma mi sono bloccata al punto 5 che chiede:

5. chiama una funzione di tipo double, che riceve in input l'array dei valori gk, s1 e s2,
calcola la percentuale dei gk compresi tra 9.806 + s1 e 9.806 + s2 e restituisce questa
percentuale al programma chiamante. Il programma alla fine stampa la percentuale di
misure comprese tra s1 e s2.


Come dovrei farlo? Creo la mia funzione e poi ?
Avevo pensato ad un ciclo for in cui metto a confronto i valori gk contenuti nell'array e 9.806 + s1 e 9.806 + s2 ma poi non so come continuare

3 Risposte

Devi accedere o registrarti per scrivere nel forum
3 risposte