Foro de elhacker.net

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
  1. 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
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:

Código
  1. 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:
Código
  1. for (i = 1; i < n; i++)
  2.   if (max < V[i]){
  3.      max = V[i];
  4.      pos = i;
  5.   }

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