elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Mayor valor de un vector en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Mayor valor de un vector en C  (Leído 5,545 veces)
estudiante_1

Desconectado Desconectado

Mensajes: 47


Ver Perfil
Mayor valor de un vector en C
« en: 25 Julio 2015, 17:34 pm »

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.
No me sale, esto es lo que hecho, ayuda por favor. Gracias :huh:





Código:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>









int main(void){
int v[10];
int i;
int mayor=0;
srand(time(NULL));
for(i=0;i<10;i++){
v[i]=(1+rand()%10);

printf("%d\n",v[i]);
}
for(i=0;i<10;i++){
    if(v[i]>mayor){

        mayor=v[i];
        printf("%d es el mayor. Su posicion es %d\n",mayor,i);
    }
    }










system("pause");
return(0);
}


« Última modificación: 25 Julio 2015, 17:49 pm por estudiante_1 » En línea

Orubatosu


Desconectado Desconectado

Mensajes: 2.515


Ver Perfil WWW
Re: Mayor valor de un vector
« Respuesta #1 en: 25 Julio 2015, 17:43 pm »

Especifica el lenguaje si puedes, porque C++ tiene la clase <vector>

No he mirado mucho el programa, pero tal y como está se imprimirá cada valor que sea mayor que el anterior.

La posición no te la guarda, porque el valor i llegará siempre al final y siempre será 9. Debes de crear otra variable de tipo entero para almacenar la posición del mismo modo que guardas el mayor



En línea

"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998
estudiante_1

Desconectado Desconectado

Mensajes: 47


Ver Perfil
Re: Mayor valor de un vector en C
« Respuesta #2 en: 25 Julio 2015, 17:50 pm »

 Es en C, y cómo hago entonces para saber la posición, no lo entiendo.
En línea

DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: Mayor valor de un vector en C
« Respuesta #3 en: 25 Julio 2015, 18:02 pm »

Tienes este código:

Código
  1. for(i=0;i<10;i++){
  2.    if(v[i]>mayor){
  3.        mayor=v[i];
  4.        printf("%d es el mayor. Su posicion es %d\n",mayor,i);
  5.    }
  6.    }

Coje la linea con el printf y ponla después del ciclo, o sea fuera del ámbito del for, porque como lo tienes estás imprimiendo cada vez que encuentras un elemento mayor que el mayor que ya habías almacenado. Además para guardar la posición, crea otra variable y cuando encuentres un elemento mayor que el mayor que ya tenias guardado, guarda en esa variable su posición.

O sea, sería algo así:

Código
  1. int mayor = v[0];
  2. int posMayor = 0;
  3.  
  4. for(i=1;i<10;i++){
  5.    if(v[i]>mayor){
  6.        mayor=v[i];
  7.        posMayor = i;
  8.    }
  9.    }
  10.        printf("%d es el mayor. Su posicion es %d\n",mayor,posMayor);


Otro consejo, no debes inicializar la variable mayor en 0, porque puedes tener números negativos en un array y este puede no devolverte el mayor como tal del array, lo que debes hacer es inicializar la variable con el valor del primer elemento y por ende la posición de ese elemento (que sería el mayor a priori) es 0:

Código
  1. int mayor = v[i];
  2. int posMayor = 0;

Salu2s

PD: Utiliza las GeSHi si vas a publicar código
« Última modificación: 25 Julio 2015, 18:15 pm por DarK_FirefoX » En línea

estudiante_1

Desconectado Desconectado

Mensajes: 47


Ver Perfil
Re: Mayor valor de un vector en C
« Respuesta #4 en: 25 Julio 2015, 18:05 pm »

Al hacerlo me sigue dando que la posición es 10.
En línea

DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: Mayor valor de un vector en C
« Respuesta #5 en: 25 Julio 2015, 18:12 pm »

Al hacerlo me sigue dando que la posición es 10.

Ya modifiqué mi mensaje con lo de la posición pues lo había olvidado.

 :silbar:

Salu2s
« Última modificación: 25 Julio 2015, 18:14 pm por DarK_FirefoX » En línea

Orubatosu


Desconectado Desconectado

Mensajes: 2.515


Ver Perfil WWW
Re: Mayor valor de un vector en C
« Respuesta #6 en: 25 Julio 2015, 19:43 pm »

No basta que "te salga", debes de entender cual es el error

En primer lugar, necesitabas 2 variables. Una donde almacenar el número mas grande del array, y otro que te indique la posición.

Esos valores deben de mostrarse tras salir del bucle, no dentro del mismo. Si lo haces dentro, aparecerán cada vez que se cumpla la condición que hay dentro del if

Te recomiendo al margen de todo esto, que te acostumbres a la hora de acometer la creación de cualquier código el uso de diagramas de flujo. Antes de picar una sola línea de código plantea sobre papel que vas a hacer y como

¿Porque no funcionaba la primera versión de tu programa?

Veamos este trozo:

Código
  1. for(i=0;i<10;i++){
  2.    if(v[i]>mayor){
  3.  
  4.        mayor=v[i];
  5.        printf("%d es el mayor. Su posicion es %d\n",mayor,i);
  6.    }
  7.    }

Tienes un bucle que usa el valor 1 desde 0 hasta 9. Mientras el valor sea menor, permanecerás dentro.

Luego preguntas si el número que está en la posición "i" es mayor que el almacenado. Ya has visto que lo conveniente es inicializar ese valor con el del primer valor del array en lugar de con cero, por si hay negativos. Poco mas que añadir

Si se cumple esa condición, almacenas en "mayor" el contenido de v[1], pero ¿que ocurre despues?

Pues que lo imprimes, con lo cual imprimirá siempre un valor cada vez que se cumpla la condición.

Es decir: Deberías de hacer como te señalan, usar el bucle para recorrer todos los valores almacenados en v, y en caso de que su valor sea mayor que el anterior cambiar el valor de "mayor" y de "posMayor". Y una vez terminado el bucle, estarás seguro de tener los valores correctos.
En línea

"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998
estudiante_1

Desconectado Desconectado

Mensajes: 47


Ver Perfil
Re: Mayor valor de un vector en C
« Respuesta #7 en: 27 Julio 2015, 11:18 am »

Gracias,ya me salió el problema y lo entendí.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Arreglar vector de menor a mayor?
Java
monsefoster 6 12,190 Último mensaje 12 Noviembre 2009, 05:12 am
por monsefoster
[C++] Acomodar vector de mayor a menor « 1 2 »
Programación C/C++
PiroskY 13 9,831 Último mensaje 3 Octubre 2010, 18:47 pm
por Littlehorse
Error al dar valor mayor de 1 en el programa
Programación C/C++
Antoniio 4 2,489 Último mensaje 15 Septiembre 2015, 05:46 am
por Antoniio
[?] Metodo de Potencias para calculo de valor caractetistico y vector asociado
Scripting
.:: KsV ::. 0 2,166 Último mensaje 26 Enero 2016, 21:40 pm
por .:: KsV ::.
Porque para asignarle valor a un vector mediante for tiene que ser una variable
Programación C/C++
Naimaderis 4 2,856 Último mensaje 14 Diciembre 2016, 18:33 pm
por Naimaderis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines