| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
nieves
Registrado: 16 Oct 2004 Mensajes: 146
| Publicado: 17/10/2004 4:15 pm | | | Título: Decir cual es el numero maximo d 4 introducidos |
| hola! tengo un problema,aver si puede ayudarme alguien, hace solo dos dias q e empezado a programar y no m sale mu bien acer un programilla. Introduciend 4 numeros decir cual es mas grande d los 4 introducidos con la estructura if/else, yo me he qedaddo asi:
#include <stdio.h> #include <conio.h>
void main() { int a, b, c, d;
printf ("Introdueix quatre nombres enters:\n"); scanf ("%d", &a); scanf ("%d", &b); scanf ("%d", &c); scanf ("%d", &d);
if (a<b) { if (a<c)&&(b<c) { printf ("El maxim es %d", c); } else if (b>c) printf ("El maxim es %d", b); } else (c<=a) printf("El maxim es %d\n", b); } else (b<=a) printf ("El maxim es %d\n", b); }
getch(); }
Y me he hecho un lio y no se seguir. Si alguien me puede ayudar se lo agradecere. Contestar aqui o a mi email:
P.D: Tengo un ordenador con xp y el programa q utilizo es el visual c++.
Gracias! 1 saludo! |
| | Volver arriba | |  | nieves
Registrado: 16 Oct 2004 Mensajes: 146
| Publicado: 18/10/2004 2:32 am | | | Título: |
| Hola! alomejor no me habeis entendido. Necesito saber como puedo comparar 4 numeros para saber cual es mas grande. Comparando 3 me sale mas o menos pero con mas numeros me hago un lio. Tengo windows. Gracias! |
| | Volver arriba | |  | kykyou
Registrado: 02 Sep 2004 Mensajes: 67 Ubicación: santiago, Chile..
| Publicado: 18/10/2004 2:44 am | | | Título: Re: Decir cual es el numero maximo d 4 introducidos |
| hola! este ejercicio podrias hacer haciendo una funcion, por ejemplo la funcion mayor(int, int) de esta manera:
| Código: | #include<stdio.h> #include<conio.h>
int mayor(int a, int b) { if(a>b) return(a); else return(b); }
void main() { int w,x,y,z,m; printf("\nIngrese los cuatro numeros ==>"); scanf("%d",&w); scanf("%d",&x); scanf("%d",&y); scanf("%d",&z); clrscr(); m=mayor(mayor(mayor(w,x),y),z); printf("\nEl numero mayor es %d", m); printf("\nPara continuar presione cualquier tecla :"); getch(); }
|
cualquier cosa que no entiendas me lo preguntas. espero te sirva. nos vemos! |
| | Volver arriba | |  | | nieves
Registrado: 16 Oct 2004 Mensajes: 146
| Publicado: 18/10/2004 2:51 am | | | Título: |
| | Gracias! pero no hace mucho que programo y no entiendo algunas cosas que pusiste, me dijeron de acerlo con las comparaciones y hacer las minimas posibles, es decir con la if/else. de todos modos gracias! |
| | Volver arriba | |  | kykyou
Registrado: 02 Sep 2004 Mensajes: 67 Ubicación: santiago, Chile..
| Publicado: 18/10/2004 3:12 am | | | Título: |
| hola! en ese caso puedes hacer asi:
| Código: | #include<stdio.h> #include<conio.h>
void main() { int a,b,c,d,m1,m2,m3; printf("\nIngrese los cuatro numeros ==>"); scanf("%d",&a); scanf("%d",&b); scanf("%d",&c); scanf("%d",&d); clrscr(); if(a>b) m1=a; else; m1=b; if(c>d) m2=c; else m2=d; if(m1>m2) m3=m1; else m3=m2; printf("\nEl mayor de los numeros es %d", m3); printf("\nPresione cualquier tecla para continuar : "); getch(); }
|
primero buscas el mayor entre a y b luego enttre c y d y luego entre los dos mayores que salieron de las dos comparaciones anteriores. espero este te sirva.. nos vemos! |
| | Volver arriba | |  | nieves
Registrado: 16 Oct 2004 Mensajes: 146
| Publicado: 18/10/2004 3:33 am | | | Título: |
| | Gracias ara si que sirve. no sabia que tambien habia que declarar m1 y m2... supongo que será para declarar el resultado de cuando cada numero sea el mayor. no se utilizar lo de borrar pantalla, que efecto hace en el ejecutable? me da error al compilador y si quito lo de borrar sale bien.Gracias |
| | Volver arriba | |  | | nieves
Registrado: 16 Oct 2004 Mensajes: 146
| Publicado: 18/10/2004 3:36 am | | | Título: |
| | Encontre un problema, si el numero mayor lo introduces el primero no te lo reconoce, faltaria una comparacion no?donde?Gracias |
| | Volver arriba | |  | quique
Registrado: 30 Mar 2004 Mensajes: 720 Ubicación: Por ahí
| Publicado: 18/10/2004 6:49 am | | | Título: |
| Existe una solución más general, que es meter los números en un "array", es decir, creas una lista.
Luego, comparas los números entre sí.
Allá vamos: 1. Declaras la lista de los 4 números, por ejemplo, enteros int iLista [4];
2. El usuario mete los números en la lista, hay muchos métodos, aquí uso scanf: printf ("\nintroduce el numero 1: "); scanf ("%d", &iLista [0]); printf ("\nintroduce el numero 2: "); scanf ("%d", &iLista [1]); printf ("\nintroduce el numero 3: "); scanf ("%d", &iLista [2]); printf ("\nintroduce el numero 4: "); scanf ("%d", &iLista [3]);
3. Dado que es un rollo lo anterior, en vez de escribir tanto, por qué no hacer un bucle? int iIndex; for (iIndex=0;iIndex<4;iIndex++) { printf ("\nintroduce el numero %d: ", iIndex+1); scanf ("%d", &iLista [iIndex]); }
4. Definimos una variable que será el máximo de todos, y le damos un valor muy pequeño para que cualquier numero sea mayor que ella: int iMaximo = -1;
5. Recorremos la lista, buscando el máximo, utilizando la técnica descrita en el punto 3, es decir, un bucle for (iIndex=0;iIndex<4;iIndex++) { if (iLista [iIndex] > iValorMaximo) iValorMaximo = iLista [iIndex]; }
6. Por ultimo, escribimos el resultado printf ("\n\nEl valor maximo es %d", iValorMaximo);
Fin!
El programa, quedaría así:
| Código: | void main (void) { int iLista [4]; int iIndex; int iMaximo = -1;
/* Tomar datos */ for (iIndex=0;iIndex<4;iIndex++) { printf ("\nintroduce el numero %d: ", iIndex+1); scanf ("%d", &iLista [iIndex]); }
/* Busqueda del valor maximo */ for (iIndex=0;iIndex<4;iIndex++) { if (iLista [iIndex] > iValorMaximo) iValorMaximo = iLista [iIndex]; }
/* Mostrar el resultado */ printf ("\n\nEl valor maximo es %d", iValorMaximo); } |
Salu2
PS.- Nota: el valor \n es el "retorno de carro", y hace que salte a la siguiente linea de escritura |
| | Volver arriba | |  | nieves
Registrado: 16 Oct 2004 Mensajes: 146
| Publicado: 18/10/2004 11:04 am | | | Título: |
| Gracias!ya se lo que quieres decir, he oido ablar de las arrays y en el curso lo e leido, pero dado que aun no lo hemos hecho, me pide hacerlo de la forma if/else aunque sea mas largo.El ejemplo que me pusiste antes con esa estructura de if/else estaba bien, lo que pasa que el primer numero introducido no lo reconoce si es el mas grande. Gracias x la ayuda! |
| | Volver arriba | |  | | rir3760

Registrado: 01 Oct 2004 Mensajes: 3657 Ubicación: Mexico
| Publicado: 18/10/2004 11:04 am | | | Título: |
| El metodo que describio quique esta muy bien pero quisiera hacer dos pequeñas observaciones:
1. Declaras la lista de los 4 números, ...
Es mejor definir constantes simbolicas (con #define) ya que de esta forma si queremos que el programa procese un numero diferente de valores solo tenemos que cambiar una sola linea:
| Código: | #define NUM_ELEM 4 ... int iLista [NUM_ELEM]; ... for (iIndex=0; iIndex<NUM_ELEM; iIndex++) ... for (iIndex=0; iIndex<NUM_ELEM; iIndex++) etc
|
4. Definimos una variable que será el máximo de todos, ...
Otra forma es:
| Código: | iMaximo = iLista[0]; for (iIndex = 1; i < 4; i++) if (iLista[iIndex] > iMaximo) iMaximo = iLista[iIndex]; |
Saludos |
| | Volver arriba | |  | nieves
Registrado: 16 Oct 2004 Mensajes: 146
| Publicado: 18/10/2004 11:17 am | | | Título: |
| Gracias!ya se lo que quieres decir, he oido ablar de las arrays y en el curso lo e leido, pero dado que aun no lo hemos hecho, me pide hacerlo de la forma if/else aunque sea mas largo.El ejemplo que me pusiste antes con esa estructura de if/else estaba bien, lo que pasa que el primer numero introducido no lo reconoce si es el mas grande. Gracias x la ayuda! |
| | Volver arriba | |  | Demidam
Registrado: 07 Ago 2004 Mensajes: 59
| Publicado: 18/10/2004 1:13 pm | | | Título: |
| Es q a kykyou se le ha escapado un ";" en el segundo "else" q no deberia star. Por cierto, hace poco hubo un hilo = q este.
Salu2 |
| | Volver arriba | |  | | nieves
Registrado: 16 Oct 2004 Mensajes: 146
| Publicado: 18/10/2004 1:21 pm | | | Título: |
| Hey muchas gracias, ara si funciona perfecto.Gracias yo tampoco me habia dado cuenta que estaba el ;. Saludos |
| | Volver arriba | |  | quique
Registrado: 30 Mar 2004 Mensajes: 720 Ubicación: Por ahí
| Publicado: 18/10/2004 11:16 pm | | | Título: |
| Un par de aclaraciones: 1. El código no lo comprobe, lo mandé sin testear, SORRY  2. No está optimizado, porque su fin es explicar 3. Para ser sinceros, los #defines, no me gustan, prefiero declarar cosas del tipo "const int", ya que pueden depurarse en tiempo real, mientras los defines son sustituciones en la compilación (imaginaos un código de 250.000 lineas, en un sistema operativo de tiempo real, y con un depurador sin UI: los defines son dificiles de seguir, mientras que con las variables puedes ver que valor tienen...)
Prometo no volver a enviar nada sin comprobar Prometo no volver a enviar nada sin comprobar Prometo no volver a enviar nada sin comprobar Prometo no volver a enviar nada sin comprobar ...
 |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |