C/Visual C - Ayuda con programa

 
Vista:

Ayuda con programa

Publicado por Andres Bravo (3 intervenciones) el 24/08/2007 02:34:30
Hola!! tengo este problema, tengo ke hacer un programa que haga esto

"Realiza un programa que lea tres números enteros e imprima en pantalla el mayor."

y ya tengo el programa hecho segun yo.


#include<stdio.h>

int main(void)
{
int a, b, c;
a=0;
b=0;
c=0;
printf("Porfavor escriba 3 numeros: \n");
scanf("%d %d %d", &a, &b, &c);
if(a>b&&b>c)
{
printf("El valor mas grande es: %d \n", a);
}
else if(b>a&&a>c)
{
printf("El valor mas grande es: %d \n", b);
}
else if(c>a&&b<a)
{
printf("El valor mas grande es: %d", c);
}
else
{
printf("Los 3 valores son iguales.");
}
}

mi problema es que esta ignorando el tercer if else y si escribo por ejemplo 1 2 3 me sale que los valores son iguales. cual es mi error, por cierto ando compilando en Unix/gcc

muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con programa

Publicado por fernando.gomez (1603 intervenciones) el 24/08/2007 02:53:56
Mmm... Qué te parece esto:

int max(int a, int b)
{
return a > b ? a : b;
}

y en lugar de los ifs simplemente haces:

int max = max(max(a,b),c);
printf("El valor mas grande es %d", max);

La verdad me dio flojera revisar los if's, y me parece que esto es más sencillo. Claro, puedes omitir la función "max" y te quedaría algo así como:

int max1 = a > b ? a : b;
int max = max1 > c ? max1 : c;
printf("El valor mas grande es %d", max);

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con programa

Publicado por Andres Bravo (3 intervenciones) el 24/08/2007 03:20:18
worales eso si se ve bine pro, jejeje, lo intentaria pero no se que hace esa funcion, soy "principiante" con la programacion y como me lo tan enseñando en la uni pss no eh visto nada de eso xD pero muchas grax de todos modos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con programa

Publicado por fernando.gomez (1603 intervenciones) el 24/08/2007 14:29:54
Bueno, en lugar de

int max(int a, int b)
{
return a > b ? a : b;
}

ponlo como

int max(int a, int b)
{
if (a > b)
return a;
else
return b;
}

que es lo mismo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con programa

Publicado por Andres Bravo (3 intervenciones) el 24/08/2007 03:13:32
volvi a hacer el programa ya que me surgieron unas cuantas dificultades, aka esta de nuez.

#include<stdio.h>

int main(void)
{
int a, b, c, x;
a=0;
b=0;
c=0;
printf("Porfavor escriba 3 numeros: \n");
scanf("%d %d %d", &a, &b, &c);
if(a>b&&a>c)
{
printf("El valor mas grande es: %d \n", a);
}
else if(b>a&&b>c)
{
printf("El valor mas grande es: %d \n", b);
}
else if(c>b&&c>a)
{
printf("El valor mas grande es: %d \n", c);
}
else
{
printf("Los 3 valores son iguales.");
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con programa

Publicado por Trebuchetino (28 intervenciones) el 24/08/2007 12:24:53
Te funciona ahora? Yo no le veo ningún error, únicamente la variable entera x, que no se para que la declaras.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con programa

Publicado por Edardo Negrete (76 intervenciones) el 24/08/2007 15:56:30
El problema que tienes es que cuando agregas dos numeros iguales te dice que los tres numeros son iguales.

ejemplo:
2
2
1

Yo lo solucionaria obteniendo primero el mayor de a y b

int max1, max;

if ( a > b )
max1 = a;
else
max1 = b;

Ahora veo si max1 es mayor que c

if ( max1 > c )
max = max1;
else
max = c;

O como dijo fernando

int max1, max;
max1 = a > b ? a : b;
max = max1 > c ? max1 : c;
printf("El valor mas grande es %d", max);

// Esto se lee de la siguiente manera
max1 = a > b ? a : b;

pregunta si 'a' es mayor que 'b'

si es cierto se le asigna a 'max1' el valor de 'a'
si no es cierto se le asigna a 'max1' el valor de 'b'

// De igual manera el siguiente
max = max1 > c ? max1 : c;

pregunta si 'max1' es mayor que 'c'

si es cierto se le asigna a 'max' el valor de 'max1'
si no es cierto se le asigna a 'max' el valor de 'c'

Saludos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar