Scusatemi per il doppio post e per la risposta un pò in ritardo..(bhè si anche l'orario non è molto normale )
In pratica il codice è molto contorto potrebbe essere riscritto in modo molto più chiaro e semplice. Comunque io non volendo intromettermi nel tuo esercizio, magari a te risulta molto chiaro e semplice, all'occhio di altri però non lo è e ti ho aiutato modificando il tuo codice. In pratica tu non lo utilizzavi proprio l'array posmin nonostante tu lo avessi dichiarato, e non memorizzavi mai la posizione del minimo durante la ricerca. Ti scrivo il codice e tra gli asterischi le aggiunte fatte, spero sia chiaro altrimenti scrivi pure:
#include <stdio.h>
#include <stdlib.h>
int main()
{int v[100],i,n,max,min,contp=0,cont=0,cont1=0,somma=0,posmin[100];
float media;
do{
printf("\nInserisci la quantita' di valori da inserire:\n");
scanf("%d",&n);
}while(n<=0||n>100);
for(i=0;i<n;i++)
{
printf("\nInserire il %d' valore: \n",i+1);
scanf("%d",&v[i]);
}
for(i=0;i<n;i++)
{
***posmin[i] = posmin[i-1];***
if(i==0)
{
max=v[i];
min=v[i];
***posmin[i] = 0;***
}
if(i!=0&&v[i]>max)
{
max=v[i];
}
else if(i!=0&&v[i]<***min) //NON MAX COME TU AVEVI MESSO, FACEVI UN DOPPIO CONTROLLO PER IL MAX***
{
min=v[i];
***posmin[i]=i;***
}
if(v[i]%7==0)
{contp++;}
if(v[i]>340)
{
cont++;
somma=somma+v[i];
}
}
printf("\nIl valore massimo e' %d e quello minimo e' %d\n",max,min);
printf("\nLa percentuale dei multipli di 7 e' %d%%\n",contp*100/n );
if(cont==0)
{
printf("\nLa media dei valori maggiori di 340 e' impossibile\n");
}
else
{media=somma/cont;
printf("\nLa media dei valori maggiori di 340 e' %f\n",media);
}
if(v[i]>media&&v[i]%11==0)
{
cont1++;}
if(cont==0)
{
printf("\nNon esistono valori che siano sia maggiori della media e sia multipli di 11 poiche' la media e' impossibile\n");
}
else
{
printf("\nI valori maggiori della media e multipli di 11 sono %d\n",cont1);
}
for(i=0;i<n;i++)
{
printf("\nIl valore minimo si trova la %d' volta nella posizione %d \n",i+1,posmin[i]);
}
system("PAUSE");
return(0);
}