• Viernes 19 de Abril de 2024, 06:08

Autor Tema:  Misplaced else  (Leído 6992 veces)

manudo

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Misplaced else
« en: Jueves 16 de Agosto de 2012, 01:36 »
0
Buenas, soy nuevo en C++ y estoy viendo el if-else.
Traté de hacer un código "improvisado" de un algoritmo que aprendí de una clase de matemáticas en el colegio pero me da este error:

"Error D-CALC.CPP 20: Misplaced else in function main()

Y el código...

Código: [Seleccionar]
#include <stdio.h>

main()
{
int a, b, c, result, bwpow, desition;
printf("Welcome to the iDeveloper's (manudo) discriminant calculator! ");
getchar();
printf("Do you know the a, b, and c of the ecuation? [Y=1/N=0] ");
scanf("%d", &desition);
if (desition == 1)
printf("Then enter the a ");
scanf("%d", &a);
printf("Enter the b ");
scanf("%d", &b);
printf("Enter the c ");
scanf("%d", &c);
bwpow = b * b;
result = bwpow - 4*a*c;
printf("The discriminant of the ecuation is: %d", result);
      else printf("Nothing to calculate, press enter and Alt+F4 to leave ");
return 0;
}

Necesita sus mejoras pero bueno, no tengo mucha experiencia en esto. Y uso Borland Turbo C++ 4.5.

:ayuda: y :gracias:
« última modificación: Jueves 16 de Agosto de 2012, 01:38 por manudo »

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:Misplaced else
« Respuesta #1 en: Viernes 17 de Agosto de 2012, 01:02 »
0
El error esta en que la sentencia if contiene varias sentencias de codigo, y en C/C++ una sentencia termina con ; por lo tanto eso significa que tu if termina mucho antes que el else, y por eso no lo reconoce.

O sea segun tu codigo el if termina aca:

Código: [Seleccionar]
    if (desition == 1)
        printf("Then enter the a "); // Aca termina el if


Cuando en realidad necesitas que termine aca:

Código: [Seleccionar]
    printf("The discriminant of the ecuation is: %d", result);
    // Aca es donde en realidad deberia terminar el if
    else printf("Nothing to calculate, press enter and Alt+F4 to leave ");

En estos casos, lo que se debe utilizar son llaves {} para indicar que tu if contiene mas de una sentencia

A continuacion de dejo el codigo corregido:

Código: [Seleccionar]
int main()
{
    int a, b, c, result, bwpow, desition;
    printf("Welcome to the iDeveloper's (manudo) discriminant calculator! ");
    getchar();
    printf("Do you know the a, b, and c of the ecuation? [Y=1/N=0] ");
    scanf("%d", &desition);
    if (desition == 1)
    { // Se utilizan llaves {} para indicar un bloque de sentencias dentro de un if
        printf("Then enter the a ");
        scanf("%d", &a);
        printf("Enter the b ");
        scanf("%d", &b);
        printf("Enter the c ");
        scanf("%d", &c);
        bwpow = b * b;
        result = bwpow - 4*a*c;
        printf("The discriminant of the ecuation is: %d", result);
    } // Cerramos la llave para indicar que es el fin del bloque
    else printf("Nothing to calculate, press enter and Alt+F4 to leave ");
    return 0;
}

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

manudo

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re:Misplaced else
« Respuesta #2 en: Sábado 18 de Agosto de 2012, 02:04 »
0
Excelente, me sirvió y ya aprendí algo nuevo. :gracias:

ernestoac

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re:Misplaced else
« Respuesta #3 en: Martes 25 de Septiembre de 2012, 22:48 »
0
Mira:
Cuando uno pone un if con varias lineas de codigo necesitas poner llaves para despues el else, que este le debes hacer lo mismo. Ejemplo:
if (a < 25){
//todas las lineas que desees (con llaves siempre y cuando sea mas de una linea)
}else{
//estas llaves debes ponerla si son más de una linea de codigo en el else
}