Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Constantinoplero en 3 Noviembre 2011, 21:30 pm



Título: ¿Error código?
Publicado por: Constantinoplero en 3 Noviembre 2011, 21:30 pm
Muy buenas a todos. Mi problema es que estoy programando en mi casa a un nivel muy sencillo, estudiando para la asignatura de Informática de mi Ingeniería.
El cuatrimestre que dura la asignatura lo vamos a dedicar a aprender C/C++, empezando desde cero.

El caso. Estaba ensayando con condiciones (if/else, no con switch) y se me ha ocurrido hacer un programa al que le dieras dos valores, y según los que les des, te dirá si a>b, a=b ó a<b. Son enteros.

El código es:

Código:
#include <stdio.h>

int main()

{
    int a,b,c;

    printf("Dame un valor:");
    scanf("%d", &a);

    printf("Dame un valor:");
    scanf("%d", &b);

    if (a>b)
        printf("%d es mayor que %d", a,b);

    else if (a=b)
        printf("%d es igual que %d", a,b);

    else (a<b)
        printf("%d es menor que %d", a,b); /*Línea 21*/

    return 0;
}

Al programar con CodeBlocks, me dice los errores. En la línea 21 (indicada) me dice 'Error: expected ';' before 'printf'.
Pero según mis apuntes, detras de if (x) y else (x) no puede ir un punto y coma, de hecho el programa no va bien.

¿Desde 'cuándo espera' ese ';' o por qué me dice eso?

Gracias.


Título: Re: ¿Error código?
Publicado por: satu en 3 Noviembre 2011, 22:30 pm
Hola

Veo  2 errores:
-Las comparaciones se hacen con == no con = (que es asignación) (linea 17)
-El error que te da es por poner else (a<b), las condiciones solo se ponen en el if no en el else, es decir, si se cumple la condición del if entra, si no se cumple entra en el else, por tanto debes quitar el (a<b) y dejar el else solo

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4.  
  5. {
  6.    int a,b,c;
  7.  
  8.    printf("Dame un valor:");
  9.    scanf("%d", &a);
  10.  
  11.    printf("Dame un valor:");
  12.    scanf("%d", &b);
  13.  
  14.    if (a>b)
  15.        printf("%d es mayor que %d", a,b);
  16.  
  17.    else if (a==b)
  18.        printf("%d es igual que %d", a,b);
  19.  
  20.    else
  21.        printf("%d es menor que %d", a,b); /*Línea 21*/
  22.  
  23.    return 0;
  24. }
  25.  

Saludos


Título: Re: ¿Error código?
Publicado por: ;c1v!c en 3 Noviembre 2011, 22:33 pm
y el error de la linea 21 es que en lugar de "else" va "else if" o sino como dice satu!
saludos!

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4.  
  5. {
  6.    int a,b,c;
  7.  
  8.    printf("Dame un valor:");
  9.    scanf("%d", &a);
  10.  
  11.    printf("Dame un valor:");
  12.    scanf("%d", &b);
  13.  
  14.    if (a>b)
  15.        {printf("%d es mayor que %d", a,b);}
  16.  
  17.    else if (a=b)
  18.        {printf("%d es igual que %d", a,b);}
  19.  
  20.    else if(a<b)
  21.       { printf("%d es menor que %d", a,b); /*Línea 21*/}
  22.  
  23.    return 0;
  24. }


Título: Re: ¿Error código?
Publicado por: Constantinoplero en 3 Noviembre 2011, 22:39 pm
Lo primero que muchas gracias a los dos.

@satu: El primer error se me ha pasado por completo y no debería haberme pasado, el segundo después de decírmelo tú tiene toda la lógica del mundo...

@;c1v!c: Antes de poner 'else' a secas puse 'else if' pero no iba. No me daba errores ni warnigs, simplemente cuando a era menor que b decía que los dos eran iguales (que es la condición de arriba justamente).
Añado que creo que ese error era por no usar bien los signos '=' para la comparación, y no por lo del else if. Efectivamente era eso.

Gracias de nuevo.