ejercicio de vector c++

Iniciado por eterno21, 7 Agosto 2013, 13:11 PM

0 Miembros y 1 Visitante están viendo este tema.

eterno21

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);
     }

amchacon

Sí es correcta, pero tienes que imprimirlo en pantalla o devolver su valor?
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

eterno21

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."

amchacon

Bueno hay un error:

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

Aquí sería 0.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

eterno21

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º,

amchacon

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);
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

eterno21

Tambien es verdad, tienes razon, lo pondre asi, gracias y un saludo.

rir3760

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

eterno21

Hola, es verdad lo de la condicion, lo voy a cambiar, gracias