Hola, he hecho un ejercicio de c++ en el que se me pide una funcion que encuentre en un vector de numeros el valor maximo e indique su valor y posicion y me gustaria saber si esta bien hecha. Esta es:
#include<stdio.h>
#include<stdlib.h>
void Valor_maximo(int V[], int n){
int max, i, pos;
max=V[0];
pos=1;
for(i=1;i<=n;i++){
if (max<V){
max=V;
pos=i;
}
}
printf("El valor maximo se encuentra en la posicion %d y su valor es %d",pos,max);
}
Sí es correcta, pero tienes que imprimirlo en pantalla o devolver su valor?
Hola, gracias, no, solamente me pide la creacion de la funcion, este es el enunciado exacto:"Escribir una función que busque en un vector de números el máximo valor, e indique su valor y posición. Se supone que el vector está desordenado."
Bueno hay un error:
pos=1;
Aquí sería 0.
Hola, cuando estamos trabajando con un vector V para la 1º posicion uso V[0] como tiene que ser, lo que pasa es que como ahi se trataba de dar la posicion al usuario, pues no se, pense que era mas adecuado llamarla la 1 o la 1º,
Cita de: eterno21 en 7 Agosto 2013, 13:57 PM
Hola, cuando estamos trabajando con un vector V para la 1º posicion uso V[0] como tiene que ser, lo que pasa es que como ahi se trataba de dar la posicion al usuario, pues no se, pense que era mas adecuado llamarla la 1 o la 1º,
Pero entonces tendrías que poner el +1 en todas las iteraciones.
Lo mejor esque lo cambies en el printf:
printf("El valor maximo se encuentra en la posicion %d y su valor es %d",pos+1,max);
Tambien es verdad, tienes razon, lo pondre asi, gracias y un saludo.
Ya que en C y C++ los indices validos de los arrays son 0 .. N-1 otra corrección que se debe hacer a la función es cambiar la condición del bucle:
for (i = 1; i < n; i++)
if (max < V[i]){
max = V[i];
pos = i;
}
También se puede eliminar la variable "max", en su lugar para obtener el máximo basta con utilizar "V[pos]" pero si ello esta permitido depende del enunciado.
Un saludo
Hola, es verdad lo de la condicion, lo voy a cambiar, gracias