Entiendo que lo que quieres hacer es encontrar el valor del elemento más grande del primer array y la posición del elemento más grande del segundo array, no?
Tienes algunos problemas que son los siguientes:
- Empiezas a rellenar el array en la posición 1 y acabas en la 5 (incluida). Los arrays tienen longitud 5 y como en C/C++, el primer índice es el 0, deberías recorrer desde 0 hasta 4 (incluido). {0,1,2,3,4} -> 5 posiciones. La posición 5 queda fuera del array.
- En la función EncuentraMayor() no buscas los índices en los que se encuentre el elemento más grande sino cuántas veces aparece el elemento más grande. Esto es porque incrementas la variable cont cada vez que lo encuentras.
Además como consejo te recomiendo utilizar constantes para los tamaños y cuando trabajes con arrays como parámetros, pasa como parámetro también la longitud de este, así haces las funciones más genéricas y las puedes reutilizar más veces:
#include <stdio.h>
const int MAX_SIZE = 5;
int main(){
int v1[MAX_SIZE], v2[MAX_SIZE];
// Guardar los valores en los arrays. Recuerda: desde el 0 hasta el MAX_SIZE-1.
for(int i = 0; i < MAX_SIZE; ++i){
printf("Introduce el valor %d: ", i
+1); }
//...
int valorMaximo = buscarMayor(v1, MAX_SIZE);
mostrarIndices(v2, valorMaximo);
}
Como ves, la función buscarMayor() es igual solo que recibes la longitud como argumento. Su definición deberá ser:
int buscarMayor(int v[], int size);
En el caso de la segunda función, como puede ser que más de un elemento tenga el valor buscado, no podemos devolver el índice como un <int>. Se puede hacer devolviendo un array o modificando un array pasado como argumento pero como supongo que estás empezando, también puedes mostrarlo directamente en la función.
void mostrarIndices(int v[], int valorBuscado);
En esta función lo que tienes que hacer es cada vez que un elemento del array sea igual a <valorBuscado> muestras un mensaje con el índice que tiene tu iterador del bucle en ese momento.
Inténtalo y si tienes algún problema coméntalo.