Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: eterno21 en 7 Agosto 2013, 13:11 PM

Título: ejercicio de vector c++
Publicado por: eterno21 en 7 Agosto 2013, 13:11 PM
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);
     }
Título: Re: ejercicio de vector c++
Publicado por: amchacon en 7 Agosto 2013, 13:34 PM
Sí es correcta, pero tienes que imprimirlo en pantalla o devolver su valor?
Título: Re: ejercicio de vector c++
Publicado por: eterno21 en 7 Agosto 2013, 13:44 PM
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."
Título: Re: ejercicio de vector c++
Publicado por: amchacon en 7 Agosto 2013, 13:50 PM
Bueno hay un error:

Código (cpp) [Seleccionar]
pos=1;

Aquí sería 0.
Título: Re: ejercicio de vector c++
Publicado por: 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º,
Título: Re: ejercicio de vector c++
Publicado por: amchacon en 7 Agosto 2013, 14:17 PM
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);
Título: Re: ejercicio de vector c++
Publicado por: eterno21 en 7 Agosto 2013, 14:31 PM
Tambien es verdad, tienes razon, lo pondre asi, gracias y un saludo.
Título: Re: ejercicio de vector c++
Publicado por: rir3760 en 7 Agosto 2013, 17:49 PM
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
Título: Re: ejercicio de vector c++
Publicado por: eterno21 en 7 Agosto 2013, 17:55 PM
Hola, es verdad lo de la condicion, lo voy a cambiar, gracias