#include <stdio.h>
#include <stdlib.h>
double calculate(int ar[], int npts, int *gtr);
int main()
{
int ar[4] = {1,2,3,0};
double result;
result = calculate(ar,4, &ar);
printf("%lf ",result );
return 0;
}
double calculate(int ar[], int npts, int *gtr)
{
double total =0;
int i = 0;
double average;
for(i=0; i<npts; i++)
{
total = total + ar[i];
}
average = total / npts;
return average;
for(i=0; i<npts; i++)
{
if(average < ar[i])
{
*gtr++;
}
}
return *gtr;
}
quando chiamo funzione calcola voglio restituire sia il valore medio che * gtr ma restituire solo il valore medio del rendimento. * gtr è per il conteggio di quanti numeri maggiori della media in arrary.
risposte:
1 per risposta № 1da quello che ho capito, vuoi restituire la media e in qualche modo ottenere il valore di gtr.you puoi restituire il valore medio e salvare il valore gtr in un'altra variabile usando un puntatore.
int main()
{
int ar[4] = {1,2,3,0};
double result;
int gtr = 0;
result = calculate(ar,4,>r);
printf("%lfn",result );
printf("gtr : %dn",gtr);
return 0;
}
double calculate(int ar[], int npts, int *gtr)
{
double total = 0 , average;
int i = 0;
for(i=0; i<npts; i++)
{
total = total + ar[i];
}
average = total / npts;
for( i = 0 ; i < npts ; i++ )
{
if(average < ar[i])
{
*gtr += 1;
}
}
return average;
}
1 per risposta № 2
Hai reso la funzione quasi corretta, è la chiamata che deve essere fatta in modo diverso.
Per prima cosa, non tornare *gtr
dalla funzione; ritorno average
. Fallo alla fine, però, non nel mezzo.
Quindi, cambia la chiamata a
int gtr;
result = calculate(ar,4, >r);
printf("%lf %dn",result, gtr);
Assicurati di aver impostato *gtr
a zero prima del secondo ciclo, altrimenti rimarrebbe non inizializzato.
0 per risposta № 3
Per restituire entrambi i valori puoi farlo:
double calculate(int ar[], int npts, int *gtr)
{
double total =0;
int i = 0;
double average;
for(i=0; i<npts; i++)
{
total = total + ar[i];
}
average = total / npts;
return average;
for(i=0; i<npts; i++)
{
if(average < ar[i])
{
*gtr++;
}
}
return avergage;
}
quindi, restituendo avergage hai la prima variabile e usando il valore puntator di gtr puoi avere quel valore.