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!