Io ho ho popolato un array in una funzione void che chiamo nel main,nella funzione void tramite un ciclo do-while popolo un array unidimensionale con il risultato di certe espressioni , dopo di questa devo costruire un altra funzione, non void, che prende come input l'array contenente quei risultati.Come posso fare, non posso restituire niente dalla prima funzione quindi non saprei come passare l'array, ho provato a fare qualcosa con i puntatori ma niente.Qualche idea???
codice:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#define G 9.806
#define LEN 100
void Error(void);
void grav(double ,double arr[LEN]);
double perc(double arr[LEN], double, double);
int main(){
double si,si1,si2,arr[LEN],per;
srand48(time(0));
printf("\n Simuliamo l'accellerazione di gravità!!!! \n");
do{
printf("\n Inserisci il valore della deviazione standard, 0<si<1;\n");
scanf("%lf", &si);
if(si<=0 || si>=1){
Error();
printf("\n Inserisci il valore della deviazione standard, 0<si<1;\n");
scanf("%lf", &si);}
} while(si<=0 || si>=1);
grav(si,arr);
do{
printf("\n Inserisci il valore della deviazione standard1, 0<si<1;\n");
scanf("%lf", &si1);
if(si1<=0 || si1>=1){
Error();
printf("\n Inserisci il valore della deviazione standard1, 0<si<1;\n");
scanf("%lf", &si1);}
} while(si1<=0 || si1>=1);
do{
printf("\n Inserisci il valore della deviazione standard2, 0<si<1;\n");
scanf("%lf", &si2); if(si2<=0 || si2>=1){
Error();
printf("\n Inserisci il valore della deviazione standard2, 0<si<1;\n");
scanf("%lf", &si2);}
} while(si2<=0 || si2>=1);
per=perc(arr,si1,si2);
printf("\n La percentuale che gk sia compreso tra s1 e s2 e' del:%lf %\n", per/100); }
void Error(void){ printf("\nERRORE!!!! il valore deve essere compreso tra 0 e 1!!!\n"); }
void grav(double si, double arr[LEN]){
FILE *gd;
double p1,p2,y,gk;
int it=1,i=1;
gd=fopen("g.dat","w");
arr[0]=si;
do{
p1=(double)lrand48()/RAND_MAX;
p2=(double)lrand48()/RAND_MAX;
y=sqrt(fabs(-2*log(p1)*sin(2*M_PI*p2)));
gk=(y*si)+G;
arr[i]=gk;
it++;
i++;
fprintf(gd, "\nIl valore di gk è:%lf",gk);
} while(it!=101);
fclose(gd);
}
!!!!!!!!!!!!!!!!!!!!!!!
Questa è la funzione importante, devo passare l'array
che nella precedente funzione contiene i valori di gk (arr[i]),
e poi calcolare la percentuale, l'algoritmo l'ho impostato ma non so
come passare l'array, qualcuno mi puo spiegare come si fa???!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
double perc(double arr[LEN],double si1, double si2){
double per=0,p,q,val;
int i=1;
do{
arr[i]=val;
if(si1<si2){si1=p;si2=q;}
if(si1>si2){si2=p;si1=q;}
if(val<(G+q)&& val>(G+p)){per++;}
i++;
} while(i!=100);
return per;
}