Un problema con un piccolo esercizio

di il
3 risposte

Un problema con un piccolo esercizio

Ciao a tutti, devo fare un programma che manipoli un vettore facendolo passare per due funzioni la prima "float mediaVett (int v[],int m)" deve dare la media dei valori inseriti, la seconda
"int superanoLimite (int v[],int n, float limite)" il numero di valori che superano un valore limite dato, ho scritto questo ma mi da due warning, uno per funzione dove dice
"warning: passing argument 1 of 'superanoLimite' makes pointer from integer without a cast"
il casting penso di averlo fatto correttamente... se è quello il problema...
#include<stdio.h>

float mediaVett (int v[],int m);
int superanoLimite (int v[],int n, float limite);

int main ()
{
    int vett[20],n,i,lim;
    float media,vlim;
    n=20;
    vlim=20;
    printf("inserire i valori del vettore\n");
    i=0;
    for (i=0;i<n;i++)
    {
        scanf("%d",&vett[i]);
    }

    media = mediaVett(vett[20],n);
    lim = superanoLimite(vett[20],n,vlim);

    printf("la media dei valori del vettore e': %f\n",media);

    printf("%d valori superano il valore limite %f",lim,vlim);


return 0;
}

float mediaVett (int v[],int m)

{
    int i;

    float result;

    result=0;

    for(i=0;i<m;i++)

    {
        result = result+ (v[i]);
    }

    result = result/m;

    return result;

}

int superanoLimite (int v[],int n, float limite)

{
    int i,cont;
    i=0;
    cont=0;

    for(i=0;i<n;i++)

        {
            if((float)v[i]>limite)
            {
                cont=cont+1;
            }

        }

    return cont;
}
Grazie mille, ZanoBot.

3 Risposte

  • Re: Un problema con un piccolo esercizio

    Allora visto l'orario prendi il tutto con le pinze, ma credo che ora funzioni a dovere..
    Ho tolto un po di cose inutili e sistemato le parti dove avevi problemi( l'errore grave lo facevi passando il tuo vettore vett come parametro alle 2 funzioni.. devi solo metterci il nome come ho fatto io, perché se scrivi vett[N] consideri l'N-esimo elemento del vettore):
    
    #include<stdio.h>
    #define N 5
    float mediaVett (int v[],int m);
    int superanoLimite (int v[],int n, float limite);
    
    int main ()
    {
    int vett[N];
    int i,lim;
    float media;
    printf("inserire i valori del vettore\n");
    for (i=0;i<N;i++)
            scanf("%d",&vett[i]);
    media = mediaVett(vett,N);
    lim = superanoLimite(vett,N,media);
    printf("La media dei valori del vettore e': %f\n",media);
    printf("%d valori superano il valore limite %f",lim,media);
    return 0;
    }
    
    float mediaVett (int v[],int m)
    {
    int i;
    float result;
    result=0;
    for(i=0;i<m;i++)
        result+=v[i];
    result /= m;
    return result;
    }
    
    int superanoLimite (int v[],int n, float limite)
    
    {
    int i,cont;
    cont=0;
    for(i=0;i<n;i++)
        if(v[i]>limite)
                cont++;
    return cont;
    }
    
  • Re: Un problema con un piccolo esercizio

    Perfetto!! Grazie!!!
    In pratica io mettendo vett[20] passavo alla funzione solo il 20° valore del vettore?
  • Re: Un problema con un piccolo esercizio

    Esatto, però la funzione richiedeva come parametro un vettore ed infatti il compilatore si lamentava di questo
Devi accedere o registrarti per scrivere nel forum
3 risposte