Ese programa tiene demasiados errores, si no tienes un libro de calidad revisa los temas fijos de este foro. También puedes utilizar el motor de búsqueda.
En C++ el numero de elementos de un array lo debes indicar mediante una constante, no puedes utilizar una variable:
int v[nv];
Y aun cuando fuera valido los indices del array van desde 0 hasta nv-1, esto no es un indice valido:
v[nv+1]=0;
Y tampoco tiene caso ya que la siguiente operación es pedir todos los números.
En el primer bucle de la función principal utilizas el nombre del array "v" cuando deberías utilizar "v[ i ]".
En el siguiente bucle tratas de obtener los "nv" números menores cuando solo debes procesar "nv-1" números. Tanto en ese bucle como en el siguiente utilizas "v" cuando debería ser "v[ i ]".
La función que encuentra el valor menor se debe implementar con solo dos parámetros: la dirección base y el numero de elementos. Por ejemplo:
int fn_menor(int *elem, int num_elem)
{
int rv;
rv = elem[0];
for (int i = 1; i != num_elem; ++i)
if (rv > elem[ i ])
rv = elem[ i ];
return rv;
}
En
buen plan: seria mejor que reescribieras desde cero el programa.
Un saludo