SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: manudo en Jueves 16 de Agosto de 2012, 01:36
-
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...
#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:
-
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:
if (desition == 1)
printf("Then enter the a "); // Aca termina el if
Cuando en realidad necesitas que termine aca:
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:
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 :)
-
Excelente, me sirvió y ya aprendí algo nuevo. :gracias:
-
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
}