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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Duda] Otra forma de resolverlo?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Duda] Otra forma de resolverlo?  (Leído 2,869 veces)
criskapunk

Desconectado Desconectado

Mensajes: 277



Ver Perfil
[Duda] Otra forma de resolverlo?
« en: 18 Julio 2011, 01:54 am »

Buenas chicos,

Estoy leyendo el libro de Deitel y hay un ejercicio que dice:

Citar
Escriba un programa que lea cinco enteros y a continuacion determine e imprima cuales son el mayor y el menor entero del grupo. Utilice solo las tecnicas de programacion qe aprendio en este capitulo.

Lo unico que puedo utilizar es:
  • Funciones scanf() y printf().
  • Operadores aritmeticos, de asignacion, de igualdad y relacionales.
  • Estructura if (NO if-else, NO estructuras anidadas).
  • Variables tipo int.

A mi se me ocurrio esta forma para resolverlo:

Código
  1. #include <stdio.h>
  2.  
  3. main()
  4. {
  5. int a, b, c, d, e;
  6. int min, max;
  7.  
  8. printf("Ingrese el primer numero: ");
  9. scanf("%d", &a);
  10. min = a;
  11. max = a;
  12. printf("Ingrese el segundo numero: ");
  13. scanf("%d", &b);
  14. if (b < min)
  15. min = b;
  16. if (b > max)
  17. max = b;
  18. printf("Ingrese el tercer numero: ");
  19. scanf("%d", &c);
  20. if (c < min)
  21. min = c;
  22. if (c > max)
  23. max = c;
  24. printf("Ingrese el cuarto numero: ");
  25. scanf("%d", &d);
  26. if (d < min)
  27. min = d;
  28. if (d > max)
  29. max = d;
  30. printf("Ingrese el quinto numero: ");
  31. scanf("%d", &e);
  32. if (e < min)
  33. min = e;
  34. if (e > max)
  35. max = e;
  36.  
  37. printf("El numero menor es: %d\n", min);
  38. printf("El numero mayor es: %d\n", max);
  39.  
  40. return 0;
  41.  
  42. }
  43.  

Edito:
Aca lo modifique un poco, para poder ingresar todos los numeros al principio, pero al fin y al cabo lo hace de la misma forma :P

Código
  1. #include <stdio.h>
  2.  
  3. main()
  4. {
  5. int a, b, c, d, e;
  6. int min, max;
  7.  
  8. printf("Ingrese 5 numeros: ");
  9. scanf("%d %d %d %d %d", &a, &b, &c, &d, &e);
  10. min = a;
  11. max = a;
  12. if (b < min)
  13. min = b;
  14. if (b > max)
  15. max = b;
  16. if (c < min)
  17. min = c;
  18. if (c > max)
  19. max = c;
  20. if (d < min)
  21. min = d;
  22. if (d > max)
  23. max = d;
  24. if (e < min)
  25. min = e;
  26. if (e > max)
  27. max = e;
  28. printf("El numero menor es: %d\n", min);
  29. printf("El numero mayor es: %d\n", max);
  30.  
  31. return 0;
  32. }

Se les ocurre alguna otra?

Un saludo y gracias :D



« Última modificación: 18 Julio 2011, 02:36 am por R0LFback » En línea

Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: [Duda] Otra forma de resolverlo?
« Respuesta #1 en: 18 Julio 2011, 06:23 am »

Partiendo de ambos códigos, podés optimizarlo un poco de tal manera que necesites solamente 3 variables.
Pensalo así: Te piden saber solamente el máximo y el mínimo. Entonces, vas a tener 2 variables como bien hiciste (max y min). Ahora, necesitás una variable para poder leer los enteros requeridos (una variable "a" por ejemplo).
Leés el primer número. Como es el único entero que tenés, también es el máximo y el mínimo del grupo, entonces lo asignás a las variables max y min.
¿Es necesario crear más variables para seguir leyendo? La respuesta es no! Podés leer desde la misma variable "a". Es decir, "a" tiene el valor del primer entero que leíste, pero si este entero, ya se lo asignaste a max o a min, entonces ya no te sirve para nada, por ende, podés descartarlo, entonces, podés usar la misma variable para leer los demás números y actuar de la misma manera para todos (si es mayor a max lo asignás a la variable max, o si es menor a min, lo asignás a min y así sucesivamente).

Fijate que es muy parecido a lo que hiciste, salvo que usás menos variables.
Espero que se haya entendido.


En línea

<<<-Basura->>>


Desconectado Desconectado

Mensajes: 388



Ver Perfil
Re: [Duda] Otra forma de resolverlo?
« Respuesta #2 en: 18 Julio 2011, 06:30 am »

Ferno, buena explicación, yo también diría que lo puedes hacer con una variable min, max y un array de 5 campos, y hacer un bucle que recorra toda la array y saque el mayor y el menor... creo que seria un opción...
En línea

<<<--Basura-->>>
Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: [Duda] Otra forma de resolverlo?
« Respuesta #3 en: 18 Julio 2011, 06:33 am »

Ferno, buena explicación, yo también diría que lo puedes hacer con una variable min, max y un array de 5 campos, y hacer un bucle que recorra toda la array y saque el mayor y el menor... creo que seria un opción...
También es una opción e iba a decirlo, pero leí de vuelta y en los requisitos que escribió en su post (de usar solo lo que el aprendió en ese capítulo del libro) no dice nada de loops y arrays :P por eso desistí.
En línea

criskapunk

Desconectado Desconectado

Mensajes: 277



Ver Perfil
Re: [Duda] Otra forma de resolverlo?
« Respuesta #4 en: 18 Julio 2011, 13:34 pm »

@Ferno
Tenes razon, no se me habia ocurrido! ;D

@<<<-Underwar->>>
Si, tambien se podria haber echo asi, hay varias maneras para resolverlo pero no todas cumplen con los requisitos que puse en el primer post.

Muchas gracias por sus respuestas :D Un saludo
En línea

Khronos14


Desconectado Desconectado

Mensajes: 443


A lie is a lie


Ver Perfil WWW
Re: [Duda] Otra forma de resolverlo?
« Respuesta #5 en: 18 Julio 2011, 13:40 pm »

A mi se me ocurrió esta forma:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc, char * argv[])
  5. {
  6. int numero = 0;
  7. int i = 0, menor = 0, mayor = 0;
  8.  
  9. for (; i < 5; i++)
  10. {
  11. printf("Introduce un numero: ");
  12. scanf("%d", &numero);
  13.  
  14. if (i == 0)
  15. {
  16. menor = numero;
  17. mayor = numero;
  18. }
  19.  
  20. if (numero < menor)
  21. menor = numero;
  22. if (numero > mayor)
  23. mayor = numero;
  24. }
  25.  
  26. printf("El mayor es: %d\n", mayor);
  27. printf("El menor es: %d\n", menor);
  28.  
  29. system("pause>nul");
  30. return 0;
  31. }
  32.  

Saludos.
En línea

criskapunk

Desconectado Desconectado

Mensajes: 277



Ver Perfil
Re: [Duda] Otra forma de resolverlo?
« Respuesta #6 en: 18 Julio 2011, 13:45 pm »

@Khronos14

Esa forma tambien seria valida, pero no cumple con los requisitos que puse en el primer post :P

Citar
  • Funciones scanf() y printf().
  • Operadores aritmeticos, de asignacion, de igualdad y relacionales.
  • Estructura if (NO if-else, NO estructuras anidadas).
  • Variables tipo int.

Un saludo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Capturar Cam de otra forma.
Programación Visual Basic
WarGhost 9 5,176 Último mensaje 1 Agosto 2006, 22:33 pm
por alfredogarc
tecla + en sendkeys o otra forma? « 1 2 »
Programación Visual Basic
traviatØ 16 5,311 Último mensaje 29 Enero 2009, 17:23 pm
por traviatØ
Cia Commander o otra forma « 1 2 »
Windows
Phantasy 17 11,537 Último mensaje 2 Julio 2010, 23:38 pm
por DarkBB
Crackme ¿Eres capaz de resolverlo? « 1 2 »
Ingeniería Inversa
Mad Antrax 14 8,461 Último mensaje 17 Enero 2013, 21:57 pm
por apuromafo CLS
Problema de Mecanica, ¿Puedes resolverlo?
Foro Libre
traviatØ 0 1,460 Último mensaje 7 Febrero 2014, 15:59 pm
por traviatØ
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines