Problema programma in C

di il
3 risposte

Problema programma in C

Ciao a tutti!!!! ho un problema con questo programma!
dovrebbe ordinare gli elementi di un array (e questo funziona) e di ritornare la media dei valori pari dell’array ordinato che siano minori di una certa soglia K (e questo non funziona!)
facendo un controllo risulta che non vengono memorizzati i valori pari in un secondo array
ora posto quello che ho fatto io:
#include <stdio.h>
#include <stdlib.h>
int ord_array(int array[],int n);
int mediapari(int array[], int n, int k);
main ()
{
    int array[50];
    int i;
    int n;
    int k;
    printf ("Di quanti valori e' composto l'array\n");
    scanf("%d", &n);
    for (i=0; i<n; i++)
    {
        printf ("inserisci il valore %d dell'array \n",i);
        scanf("%d",&array[i]);
    }
    
    
   ord_array(array,n);
   
   printf("I valori ordinati dell'array sono:\n");
    i=0;  
    do{
           
        printf ("%d, \n", array[i]);
        i=i+1;
     } while (i<n);
        printf("\n");
   
   printf("Inserisci fino a che valore K vuoi sommare i numeri pari\n");
   scanf ("%d", &k);   
   mediapari(array,n,k);
   printf ("La media dei valori pari fino a K e': %d", mediapari (array,n,k));
   
    system("PAUSE");
    return 0;
}
//funzione ordinamento array
int ord_array(int array[],int n){
    int i,j;
    int pos_min;
    int contenitore;
    for (i=0; i<n-1; i++)
    {
        pos_min = i;
        for (j=i+1; j<n; j++)
        {
            
            if (array[j]<array[pos_min])
            {
            pos_min=j;
            }
        
        }
        
         contenitore=array[i];
        array[i]=array[pos_min];
        array[pos_min]=contenitore;
   } 
   return (array);
}
           
//funzione media num pari

int mediapari(int array[], int n, int k){
    int i,c,n2,somma;
    int arraypari [50];
    c=0;
    for (i=0; i<n; i++){
        
        if (array [i] %2==0){
                  
                  array[i]=arraypari[c];
                  c=c+1;
                  }
        }
        n2=c;
        somma=0;
        for (c=0; c<=n2; c++){
        if (arraypari[c]<=k){
        somma=arraypari[c]+somma;
        }
        }
        somma=somma/n2;
    return (somma);
}

3 Risposte

  • Re: Problema programma in C

    RIfletti su questa linea

    array=arraypari[c];
  • Re: Problema programma in C

    Con quell'istruzione volevo fare in modo che dopo il controllo i numeri pari venissero salvati all'interno di arraypari, ho usato l'indice C al posto di i per riempire tutti i posti necessari nell'array a partire da 0
  • Re: Problema programma in C

    E sei convinto che quella linea serva a quello che hai detto? Qual è la sorgente e quale la destinazione?
Devi accedere o registrarti per scrivere nel forum
3 risposte