/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Decir cual es el numero maximo d 4 introducidos

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
nieves



Registrado: 16 Oct 2004
Mensajes: 146

MensajePublicado: 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

MensajePublicado: 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..

MensajePublicado: 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

MensajePublicado: 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..

MensajePublicado: 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

MensajePublicado: 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

MensajePublicado: 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í

MensajePublicado: 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

MensajePublicado: 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

MensajePublicado: 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

MensajePublicado: 18/10/2004 11:17 am
Título:

Wink 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

MensajePublicado: 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

MensajePublicado: 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í

MensajePublicado: 18/10/2004 11:16 pm
Título:

Un par de aclaraciones:
1. El código no lo comprobe, lo mandé sin testear, SORRY Sad
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
...

Very Happy
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com