Autor
|
Tema: [Duda] Otra forma de resolverlo? (Leído 2,869 veces)
|
criskapunk
Desconectado
Mensajes: 277
|
Buenas chicos, Estoy leyendo el libro de Deitel y hay un ejercicio que dice: 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: #include <stdio.h> main() { int a, b, c, d, e; int min, max; printf("Ingrese el primer numero: "); min = a; max = a; printf("Ingrese el segundo numero: "); if (b < min) min = b; if (b > max) max = b; printf("Ingrese el tercer numero: "); if (c < min) min = c; if (c > max) max = c; printf("Ingrese el cuarto numero: "); if (d < min) min = d; if (d > max) max = d; printf("Ingrese el quinto numero: "); if (e < min) min = e; if (e > max) max = e; printf("El numero menor es: %d\n", min ); printf("El numero mayor es: %d\n", max ); return 0; }
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 #include <stdio.h> main() { int a, b, c, d, e; int min, max; printf("Ingrese 5 numeros: "); scanf("%d %d %d %d %d", &a , &b , &c , &d , &e ); min = a; max = a; if (b < min) min = b; if (b > max) max = b; if (c < min) min = c; if (c > max) max = c; if (d < min) min = d; if (d > max) max = d; if (e < min) min = e; if (e > max) max = e; printf("El numero menor es: %d\n", min ); printf("El numero mayor es: %d\n", max ); return 0; }
Se les ocurre alguna otra? Un saludo y gracias
|
|
« Última modificación: 18 Julio 2011, 02:36 am por R0LFback »
|
En línea
|
|
|
|
Ferno
Desconectado
Mensajes: 375
|
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
Mensajes: 388
|
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
Mensajes: 375
|
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 por eso desistí.
|
|
|
En línea
|
|
|
|
criskapunk
Desconectado
Mensajes: 277
|
@FernoTenes razon, no se me habia ocurrido! @<<<-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 Un saludo
|
|
|
En línea
|
|
|
|
Khronos14
Desconectado
Mensajes: 443
A lie is a lie
|
A mi se me ocurrió esta forma: #include <stdio.h> #include <stdlib.h> int main(int argc, char * argv[]) { int numero = 0; int i = 0, menor = 0, mayor = 0; for (; i < 5; i++) { printf("Introduce un numero: "); if (i == 0) { menor = numero; mayor = numero; } if (numero < menor) menor = numero; if (numero > mayor) mayor = numero; } printf("El mayor es: %d\n", mayor ); printf("El menor es: %d\n", menor ); return 0; }
Saludos.
|
|
|
En línea
|
|
|
|
criskapunk
Desconectado
Mensajes: 277
|
@Khronos14 Esa forma tambien seria valida, pero no cumple con los requisitos que puse en el primer post - 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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Capturar Cam de otra forma.
Programación Visual Basic
|
WarGhost
|
9
|
5,176
|
1 Agosto 2006, 22:33 pm
por alfredogarc
|
|
|
tecla + en sendkeys o otra forma?
« 1 2 »
Programación Visual Basic
|
traviatØ
|
16
|
5,311
|
29 Enero 2009, 17:23 pm
por traviatØ
|
|
|
Cia Commander o otra forma
« 1 2 »
Windows
|
Phantasy
|
17
|
11,537
|
2 Julio 2010, 23:38 pm
por DarkBB
|
|
|
Crackme ¿Eres capaz de resolverlo?
« 1 2 »
Ingeniería Inversa
|
Mad Antrax
|
14
|
8,461
|
17 Enero 2013, 21:57 pm
por apuromafo CLS
|
|
|
Problema de Mecanica, ¿Puedes resolverlo?
Foro Libre
|
traviatØ
|
0
|
1,460
|
7 Febrero 2014, 15:59 pm
por traviatØ
|
|