Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Programa sencillo pero complicado

Estas en el tema de Programa sencillo pero complicado en el foro de C/C++ en Foros del Web. hola, muy buenas tardes. me estoy iniciando en esto de la programación y estoy leyendo desde el principio el libro de como programar en c ...
  #1 (permalink)  
Antiguo 15/02/2014, 09:50
 
Fecha de Ingreso: febrero-2014
Ubicación: Guadalajara
Mensajes: 34
Antigüedad: 10 años, 3 meses
Puntos: 0
Programa sencillo pero complicado

hola, muy buenas tardes. me estoy iniciando en esto de la programación y estoy leyendo desde el principio el libro de como programar en c y c++ de deitel. voy en la primera parte de los ejercicios. hay un ejercicio que se me complicó mucho. se trata sobre encontrar el numero mayor y el menor de cinco número sólo utilizando "if" puros if. y mi codigo es éste .

int main(){
int numero_uno,numero_dos,numero_tres,numero_cuatro,nu mero_cinco;
int numeromayor=0;
int numeromenor;


printf("Intrudusca cinco numeros\n");
scanf("%d%d%d%d%d",&numero_uno,&numero_dos,&numero _tres,&numero_cuatro,&numero_cinco);




if(numero_dos>numero_uno){
numeromayor=numero_dos;
}

if(numero_tres>numero_uno){
numeromayor=numero_tres;

}



if(numero_cuatro>numero_uno){
numeromayor=numero_cuatro;
}


if(numero_cinco>numero_uno){
numeromayor=numero_cinco;
}




printf("el numero grande es:%d\n", numeromayor);


if(numero_uno<numero_dos){
numeromenor=numero_uno;
}


if(numero_uno<numero_tres){
numeromenor=numero_uno;
}


if(numero_uno<numero_cuatro){
numeromenor=numero_uno;
}


if(numero_uno<numero_cinco){
numeromenor=numero_uno;
}

printf("numeero menor es:%d",numeromenor);


getch();


}

a la hora de querer imprimir el menor si me sale solo si va en orden por ejemplo 1,2,3,4,5 . pero si se lo pongo asi: 5,3,1,4,2 me dice que el menor es el ultimo
osea que si le pongo en forma desordenada no me encuentra nada :S

ayuda
  #2 (permalink)  
Antiguo 15/02/2014, 13:00
Avatar de TSG
TSG
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 373
Antigüedad: 10 años, 8 meses
Puntos: 9
Respuesta: Programa sencillo pero complicado

Hola, muy buenas.

Más o menos no entendí bien tu lógica (problema)...
Pero aquí hice algo para ver si te puede servir de algo.

Código C++:
Ver original
  1. #include <iostream>
  2. #include <conio.h>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.     int num1, num2, num3, num4, num5;
  9.     cout << "Introduce 5 numeros: " << endl;
  10.     cin >> num1 >> num2;
  11.    
  12.     if(num2 > num1)
  13.     {
  14.         cout << "El numero 2 es mayor que el numero 1 \n" << endl;
  15.     }
  16.     else
  17.     {
  18.         cout << "El numero 1 es mayor que el numero 2 \n" << endl;
  19.     }
  20.    
  21.     cin >> num3;
  22.    
  23.     if(num3 > num1)
  24.     {
  25.         cout << "El numero 3 es mayor que el numero 1 \n" << endl;
  26.     }
  27.     else
  28.     {
  29.         cout << "El numero 1 es mayor que el numero 3 \n" << endl;
  30.     }
  31.    
  32.     cin >> num4;
  33.    
  34.     if(num4 > num1)
  35.     {
  36.         cout << "El numero 4 es mayor que el numero 1 \n" << endl;
  37.     }
  38.     else
  39.     {
  40.         cout << "El numero 1 es mayor que el numero 4 \n" << endl;
  41.     }
  42.    
  43.     cin >> num5;
  44.    
  45.     if(num5 > num1)
  46.     {
  47.         cout << "El numero 5 es mayor que el numero 1 \n" << endl;
  48.     }
  49.     else
  50.     {
  51.         cout << "El numero 1 es mayor que el numero 5 \n" << endl;
  52.     }
  53.    
  54.     getch();
  55.     return 0;
  56. }

Un cordial saludo.
  #3 (permalink)  
Antiguo 15/02/2014, 13:13
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 4 meses
Puntos: 29
Respuesta: Programa sencillo pero complicado

Código C++:
Ver original
  1. int main(){
  2. int mayor=n1;
  3. if(n2>mayor)mayor=n2;
  4. if(n3>mayor)mayor=n3;
  5. if(n4>mayor)mayor=n4;
  6. if(n5>mayor)mayor=n5;
  7.  
  8. }

Creo que deberia de funcionar no lo he probado pero es algo simple :P
  #4 (permalink)  
Antiguo 15/02/2014, 13:20
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Programa sencillo pero complicado

Hola,

Cita:
Iniciado por superchava666 Ver Mensaje
... hay un ejercicio que se me complicó mucho. se trata sobre encontrar el numero mayor y el menor de cinco número sólo utilizando "if" puros if. y mi codigo es éste . ...
Técnicamente la cantidad de instrucciones 'if' es incorrecta. El algoritmo, usando solamente la instrucción 'if' para comprobar cual es el mayor podría ser algo así:

1. Comparar si N1 es mayor que N2
2. Comparar si N1 es mayor que N3
3. N1 > N4
4. N1 > N5

Si no se cumple ninguna de las anteriores podemos descartar que N1 sea el mayor. Las siguientes instrucciones podrían ser:

5. Comparar si N2 es mayor que N3
6. N2 > N4
7. N2 > N5

Si no se cumple ninguna de las anteriores, podemos descartar que N2 sea el mayor, y por consiguiente las siguientres instrucciones podrían ser:

8. N3 > N4
9. N3 > N5

Si no se cumple, finalizamos así:

10. N4 > N5

Ese es el algoritmo básico para resolver ese problema usando solamente las instruccion 'if', técnicamente es el razonamiento detrás de la lógica a implementar. Si se permite el uso de operadores lógicos como el 'AND', 'OR', etc., la implementación es un poco mas simple, usando la misma lógica anterior.

Cita:
Iniciado por TSG Ver Mensaje
...
Más o menos no entendí bien tu lógica (problema)...
Pero aquí hice algo para ver si te puede servir de algo.
...
Posiblemente no comprendiste bien el problema, es el paso inicial para poder resolver cualquier problema, si no lo entendiste bien, como quieres solucionarlo?

El problema es saber cual es el mayor de 5 números y con tu código no es posible resolver ese problema. Perdón, pero así es.

Cita:
Iniciado por patilanz Ver Mensaje
Creo que deberia de funcionar no lo he probado pero es algo simple :P
Muy buena solución, básicamente es el concepto detrás de BubbleSort, seguramente es la solución mas eficiente.

Saludos,

Última edición por HackmanC; 15/02/2014 a las 13:30 Razón: agregar respuesta patilanz
  #5 (permalink)  
Antiguo 15/02/2014, 13:53
 
Fecha de Ingreso: febrero-2014
Ubicación: Guadalajara
Mensajes: 34
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Programa sencillo pero complicado

Cita:
Iniciado por HackmanC Ver Mensaje
Hola,



Técnicamente la cantidad de instrucciones 'if' es incorrecta. El algoritmo, usando solamente la instrucción 'if' para comprobar cual es el mayor podría ser algo así:

1. Comparar si N1 es mayor que N2
2. Comparar si N1 es mayor que N3
3. N1 > N4
4. N1 > N5

Si no se cumple ninguna de las anteriores podemos descartar que N1 sea el mayor. Las siguientes instrucciones podrían ser:

5. Comparar si N2 es mayor que N3
6. N2 > N4
7. N2 > N5

Si no se cumple ninguna de las anteriores, podemos descartar que N2 sea el mayor, y por consiguiente las siguientres instrucciones podrían ser:

8. N3 > N4
9. N3 > N5

Si no se cumple, finalizamos así:

10. N4 > N5

Ese es el algoritmo básico para resolver ese problema usando solamente las instruccion 'if', técnicamente es el razonamiento detrás de la lógica a implementar. Si se permite el uso de operadores lógicos como el 'AND', 'OR', etc., la implementación es un poco mas simple, usando la misma lógica anterior.



Posiblemente no comprendiste bien el problema, es el paso inicial para poder resolver cualquier problema, si no lo entendiste bien, como quieres solucionarlo?

El problema es saber cual es el mayor de 5 números y con tu código no es posible resolver ese problema. Perdón, pero así es.



Muy buena solución, básicamente es el concepto detrás de BubbleSort, seguramente es la solución mas eficiente.

Saludos,



hola , me gusto tu explicación pero no le entendí muy bien ,¿ me la podrías decir en términos mas para personas nuevas como yo ? gracias
  #6 (permalink)  
Antiguo 15/02/2014, 14:14
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Programa sencillo pero complicado

Hola,

Cita:
Iniciado por superchava666 Ver Mensaje
... me gusto tu explicación pero no le entendí muy bien ,¿ me la podrías decir en términos mas para personas nuevas como yo ? ...
Por supuesto, una de las partes mas importantes de la programación es el razonamiento lógico, sobre eso se basa todo. La lógica detrás de esa solución viene siendo la siguiente:

Imagina que tienes cinco bolitas de bingo, esas bolitas que se usan para los numeros de lotería que revuelven en una tómbola. Cada bolita tiene un número dibujado en su superficie.

Para saber cual es la mayor, existen varios métodos, el que menciona patilanz podría ser:

Sacas la primera bolita y la segunda, comparas si la primera bolita es mayor que la segunda, si es así guardas la bolita que sea mayor, y así continúas sacando bolitas, comparando y guardando en tu mano la que sea mayor. Cuando termines de comparar todas las bolitas, tendrás en la mano la mas alta.

Si a la bolita le llamas n1, n2, etc., y a tu mano le llamas mayor, tendrás el algoritmo para implementar la solución de patilanz.

El algoritmo que yo escribí en el anterior mensaje era mas complicado porque quería resolver lo del mayor y el menor al mismo tiempo, en la misma secuencia.

Pero no requiere más que pienses en cual es la solución lógica, así como el ejemplo de la tómbola, para que puedas con tus propios medios resolver este y otros problemas de lógica en un futuro.

Saludos,

ps:

La solución de patilanz, creo que es la más eficiente en este caso, yo me estaba complicado un poco innecesariamente, la misma lógica que uso patilanz la puedes usar para saber el menor sin tantas complicaciones.

Última edición por HackmanC; 15/02/2014 a las 14:28 Razón: ps

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:28.