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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Determinar el Mayor de cinco numeros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Determinar el Mayor de cinco numeros  (Leído 4,103 veces)
Omaredy09

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Determinar el Mayor de cinco numeros
« en: 3 Agosto 2018, 04:31 am »

Mi profesor nos dejo hacer una funcion en c++ que determine el mayor de cinco numeros. De antemano les comento que él no quiere que usemos arrays, él quiere que intentemos hacer un mecanismo con bucles e intentar no usar demasiados condicionales. Ciertamente lo veo algo complicado, no se como hacerlo sin usar varios condicionales. Les agradeceria que me aconsejaran o me dieran ideas para resolver el problema. Gracias de antemano :D por su tiempo.
http://www.subirimagenes.com/privadas-imagenproblema-2438045.html
Ese es link de la imagen, por si quieren verla




« Última modificación: 3 Agosto 2018, 04:34 am por Omaredy09 » En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Determinar el Mayor de cinco numeros
« Respuesta #1 en: 4 Agosto 2018, 01:28 am »

Ya que no puedes usar un array para resolver este problema, una posible solución es crear una función auxiliar con dos parámetros y usarla en tu función.
Quedaría algo de este estilo:

Código
  1. int Mayor (int a, int b){
  2.    int mayor = a;
  3.    if (b > mayor)
  4.        mayor = b;
  5.    return mayor;
  6. }
  7.  
  8. int Mayor (int n1, int n2, int n3, int n4, int n5){
  9.    int mayor = Mayor (Mayor (n1, n2), Mayor (n3, n4));
  10.    mayor = Mayor (mayor, n5);
  11.    return mayor;
  12. }
  13.  

Ambas funciones pueden tener el mismo nombre porque el número de parámetros es distinto.
Si tienes alguna duda al respecto puedes buscar información sobre la sobrecarga de funciones.

Al llamar a la función Mayor desde la propia función se resuelven primero las funciones interiores y finalmente la exterior.
Como faltaría por comprobar un número lo he comprobado en otra línea aunque se podría hacer todo a la vez.
Queda un poco ilegible el código pero puedes probar a hacerlo.


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Determinar el Mayor de cinco numeros
« Respuesta #2 en: 4 Agosto 2018, 02:58 am »

Quédate con tu profesor:
Código
  1. int mayor(int n1, int n2, int n3, int n4, int n5) {
  2.    int mayor = n1;
  3.    for(int *p=&n2; p<=&n5; ++p)
  4.        if(*p > mayor)
  5.            mayor = *p;
  6.    return mayor;
  7. }
« Última modificación: 4 Agosto 2018, 03:07 am por MAFUS » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Determinar el Mayor de cinco numeros
« Respuesta #3 en: 4 Agosto 2018, 03:06 am »

Quédate con tu profesor:
Código
  1. int mayor(int n1, int n2, int n3, int n4, int n5) {
  2.    int mayor = n1;
  3.    for(int *p=&n2; p<=&n5; ++p)
  4.        mayor = *p;
  5.    return mayor;
  6. }

cuidado con ese codigo, nada te asegura que se cargue en memoria de n1 a n5 en orden, revisa los posts sobre los indeterminados de la forma de carga

Código
  1. int a = 1;
  2. printf("%i, %i, %i, %i, %i", ++a, a++, a++, ++a, a);
« Última modificación: 4 Agosto 2018, 03:10 am por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Determinar el Mayor de cinco numeros
« Respuesta #4 en: 4 Agosto 2018, 03:10 am »

Cierto, no se asegura que se carguen en ese orden, pero sí que serán contiguos en memoria. Por lo cual es igual el orden en que se carguen porque a la hora de crear el marco de la función siempre ocuparán los mismos espacios en el marco.

Por cierto, he modificado un poco el código: no tenía en cuenta si el elemento actual era mayor a 'mayor'.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Determinar el Mayor de cinco numeros
« Respuesta #5 en: 4 Agosto 2018, 03:13 am »

Cierto, no se asegura que se carguen en ese orden, pero sí que serán contiguos en memoria. Por lo cual es igual el orden en que se carguen porque a la hora de crear el marco de la función siempre ocuparán los mismos espacios en el marco.


es decir, n2 puede cargarse de ultimo, por lo que generará un acceso invalido de memoria y no me refiero en tiempo de ejecución, me refiero en la forma que los elementos se cargan a la pila para procesar
« Última modificación: 4 Agosto 2018, 03:15 am por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Determinar el Mayor de cinco numeros
« Respuesta #6 en: 4 Agosto 2018, 03:52 am »

La convención cdecl, que es la estándar en C y C++, dice que los argumentos se pasarán de derecha a izquierda, que con esto no hay que confundir con que los argumentos de una llamada se pueden evaluar en el orden que el compilador prefiera.

Si se dejara que cada vez que se hace una llamada el orden del paso de los argumentos pudiera cambiar esta información se debería guardar en algún sitio para saber la función llamada dónde buscar esos argumentos, o se debería usar algo parecido a reflections en otros lenguajes, cosa que en C no existe. Los nombres de las variables desaparecen. En el stackframe solo queda el xBP y el offset, y esto debe estar escrito a fuego en el código máquina, por tanto el orden tiene que estar perfectamente definido, sea cual sea la convención de llamada que se use. Que por cierto, el código que he pasado no funcionará con cualquier convención que use registros.
« Última modificación: 4 Agosto 2018, 15:59 pm por MAFUS » En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Determinar el Mayor de cinco numeros
« Respuesta #7 en: 5 Agosto 2018, 05:05 am »

Basado en el requerimiento original, y pensando de lo que nos dice que el profesor querria restringir el uso de arreglos, tal vez se trate de un curso introductorio y ni siquiera las funciones han sido vistas aun. En ese caso, la solucion propuesta no serviria tampoco.

Como no hay muchas pistas, adivino que solo se puede usar while y los datos se leen uno tras otro, quedando algo asi como:

Código
  1.   leer numero
  2.   maximo = numero
  3.  
  4.   repetir 4 veces {
  5.       leer numero
  6.       si el numero > maximo -> maximo = numero
  7.   }
  8.  
  9.   imprimir maximo
  10.  

No hay uso de arreglos, no hay paso de parametros ni funciones, solo lectura de un entero en 5 ocasiones, actualizando el maximo cuando corresponde.

En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
mayor de tres numeros en c++...
Programación C/C++
rub'n 9 14,396 Último mensaje 27 Mayo 2010, 04:03 am
por rub'n
Ordenar 5 números de menor a mayor e imprimir los números impares
Programación C/C++
ERIK546 6 25,754 Último mensaje 23 Junio 2012, 00:36 am
por ERIK546
DETERMINAR MAYOR O MENOR EN ARREGLO
Programación C/C++
wazausky 2 2,636 Último mensaje 12 Noviembre 2012, 14:53 pm
por leosansan
Cinco acusados en el mayor caso de fraude informático de EEUU
Noticias
wolfbcn 0 1,550 Último mensaje 26 Julio 2013, 14:33 pm
por wolfbcn
Li-Fi podría ofrecer mayor velocidad que el Wi-Fi en sólo cinco años
Noticias
wolfbcn 0 1,149 Último mensaje 25 Noviembre 2014, 02:04 am
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines