Esercizio Array.

di il
1 risposte

Esercizio Array.

Ciao a tutti vorrei porvi un quesito su un esercizio. L'esercizio in questione mi chiede di scrivere, dato un array di interi, una procedura che restituisca il numero degli elementi che seguono il valore minimo. Se il valore minimo compare più volte si deve considerare la prima occorrenza.
Tralasciando il fatto che nemmeno ci sono arrivata a scrivere cosa fare se il valore minimo compare più volte, questo è quello che sono riuscita a scrivere :

 #include <stdio.h>

void print_array(int a[], int dim);
int _array(int a[], int dim);

int main () {
int a[4]={98,4,12,6};
int minimo;
int conta;

print_array(a,4);
printf("\n");

_array(a,4);
printf("%d\n", _array(a,4));

system ("PAUSE");
return 0;
}

void print_array(int a[], int dim) {
int i;
for (i=0; i<dim; i++) {
printf("%d\n", a[i]);
}
}

int _array(int a[], int dim) {
int i, j;
int conta=0;
int minimo=a[0];

for(i=0; i<dim; i++) {
if(a[i]<minimo)
a[i]=minimo;
for(j=i; j<dim; j++) {
conta=conta+1;
} 
}
return (conta);
}

di sicuro sto utilizzando due cicli for sbagliati, ma il mio ragionamento è questo: una volta trovato il minimo a partire da quello inizia a contare fino alla fine dell'array. Come risultato però mi esce 10... grazie mille!

1 Risposte

  • Re: Esercizio Array.

    È sbagliato il ciclo for....
    
    
    #include <stdio.h>
    
    void print_array(int a[], int dim,int st);
    int _array(int* outstmin,int a[], int dim);
    
    int main ()
    {
        int a[4]={98,4,12,6};
        int startminimo;
        int conta;
    
        print_array(a,4,0);
        puts("");
    
        conta = _array(&startminimo,a,4);
    
        printf("min val = ");
        print_array(a,4,startminimo);
        printf("totale:%d\n",conta);
    
    
        return 0;
    }
    
    void print_array(int a[], int dim,int st)
    {
        int i;
        for ( i = st; i < dim; i++)
            printf("a[%d] = %d\n",i, a[i]);
    }
    
    int _array(int* outstmin,int a[], int dim)
    {
        int i;
        int conta=0;
        int minimo = a[0];
        *outstmin = 0;
    
        for( i = 0; i < dim; i++)
        {
            if( a[i] < minimo )
            {
                minimo = a[i];
                conta = 0;
                *outstmin = i;
            }
            else
            {
                ++conta;
            }
        }
        return conta;
    }
    
    DISINSTALLA DEV-C++ e installa CODE::BLOCKS!!!!! o vs express.
Devi accedere o registrarti per scrivere nel forum
1 risposte