¿Error código?

Iniciado por Constantinoplero, 3 Noviembre 2011, 21:30 PM

0 Miembros y 1 Visitante están viendo este tema.

Constantinoplero

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:

#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.
Más que buenos principios prefiero mejores finales.

satu

#1
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


#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
       printf("%d es menor que %d", a,b); /*Línea 21*/

   return 0;
}


Saludos
Breakbeat como forma de vida

;c1v!c

y el error de la linea 21 es que en lugar de "else" va "else if" o sino como dice satu!
saludos!

#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 if(a<b)
      { printf("%d es menor que %d", a,b); /*Línea 21*/}

   return 0;
}

Constantinoplero

#3
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.
Más que buenos principios prefiero mejores finales.