elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problemas con ELSE
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Problemas con ELSE  (Leído 5,715 veces)
Xgirl12

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Problemas con ELSE
« en: 30 Marzo 2013, 22:36 pm »

Hola, que tal a todos por aquí.

Solicitando su ayuda para que este programa me corra, el problema es que me dice que no hay IF antes de los ELSE, pero sí los hay.
Espero sus comentarios y gracias de antemano por su atención.

Código:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

char nom[10];
float Compra, Desc, Total;


 main() {
  /*Declaración para introducir el nombre del cliente */
  printf("Ingrese el nombre del cliente: \n",nom);
  scanf("%9s", nom);
  printf("El nombre del cliente es %s \n", nom );
 
  /*Declaración para introducir total de la compra */
  printf ("Ingrese el total de su compra: \n", Compra);
  scanf ("%6.2f", &Compra);
 
  /* Operaciones para aplicar descuento */
  if(Compra >= 8000){
 
  Total = Compra-(Compra*0.12);
  printf("El total a  pagar es de: %6.2f \n", Total);
}
else
 {
if(Compra == 7999 && Compra >=5500)
Total = Compra-(Compra*.10);
printf("El total a pagar es de: %5.2f \n", Total);
}
else
{
if(Compra ==5499 && Compra >=3100)
Total = Compra-(Compra*.07);
printf("El total a pagar es de:%6.2f \n", Total);
}
else
{
if(Compra == 3099 && Compra >=1500)
Total = Compra-(Compra*.05);
printf("El total a pagar es de: %6.2f \n", Total);
}
while (Compra !=1500)
{
if (Compra < 1500)
printf("Su compra no aplica descuento \n");
printf("El total a pagar es de: %5.2f \n",Compra);
}
 
 
 
 
return 0;
}


En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Problemas con ELSE
« Respuesta #1 en: 30 Marzo 2013, 22:59 pm »

Es que la estructura que tu pones para el else-if es esta:
Código
  1. else
  2. {
  3.  if ( . . . )
  4. }
Y la correcta para un else-if es esta:
Código
  1. else if( . . . )
  2. {
  3.  
  4. }
Y el error es obvio dado que no hay un if anterior sino un else.Quedando tu code así(el while provoca un bucle infinito pero eso ya te lo dejo a tí , te he comentado algunos printf porque dabas argumentos de más):
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5.  
  6. /**¡No es bueno usar variables globales**/
  7.  
  8. int main()
  9. {
  10.    float Compra, Desc, Total;
  11.    char nom[10];
  12.    /*Declaración para introducir el nombre del cliente */
  13.    printf("Ingrese el nombre del cliente: \n");//Aquí no va nom....
  14.    scanf("%9s", nom);
  15.    printf("El nombre del cliente es %s \n", nom );
  16.  
  17.    /*Declaración para introducir total de la compra */
  18.    printf ("Ingrese el total de su compra: \n");//Aquí no va Compra...
  19.    scanf ("%6f", &Compra);//Aquí da un error si le pones el .2
  20.  
  21.    /* Operaciones para aplicar descuento */
  22.    if(Compra >= 8000)
  23.    {
  24.        Total = Compra-(Compra*0.12);
  25.        printf("El total a  pagar es de: %6.2f \n", Total);
  26.    }
  27.    else if(Compra == 7999 && Compra >=5500)
  28.    {
  29.        Total = Compra-(Compra*.10);
  30.        printf("El total a pagar es de: %5.2f \n", Total);
  31.    }
  32.    else if(Compra ==5499 && Compra >=3100)
  33.    {
  34.        Total = Compra-(Compra*.07);
  35.        printf("El total a pagar es de:%6.2f \n", Total);
  36.    }
  37.    else if(Compra == 3099 && Compra >=1500)
  38.    {
  39.        Total = Compra-(Compra*.05);
  40.        printf("El total a pagar es de: %6.2f \n", Total);
  41.    }
  42.    while (Compra !=1500)//Esto provoca un bucle infinito...
  43.    {
  44.        if (Compra < 1500)
  45.            printf("Su compra no aplica descuento \n");
  46.        printf("El total a pagar es de: %5.2f \n",Compra);
  47.    }
  48.    return 0;
  49. }
  50.  


En línea

Regístrate en
Xgirl12

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Re: Problemas con ELSE
« Respuesta #2 en: 31 Marzo 2013, 00:27 am »

Muchas gracias por tus comentarios - correcciones Avesudra. Me gustaría que me dijeras de que otra forma no se me haría un bucle infinito, ¿estará bien si utilizara otro if para por una cantidad X me dijera que es inválido o una tecla para salir?
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Problemas con ELSE
« Respuesta #3 en: 31 Marzo 2013, 00:34 am »

Sí claro que está bien, si la cantidad es menor que 1500 no se aplica descuento pero quería que te dieses cuenta de que ahí un bucle no pinta nada.
En línea

Regístrate en
Xgirl12

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Re: Problemas con ELSE
« Respuesta #4 en: 31 Marzo 2013, 00:44 am »

OK. Corrigiendo y en un momento más comento que tal me fue.
En línea

85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: Problemas con ELSE
« Respuesta #5 en: 31 Marzo 2013, 18:52 pm »

faltaban cosas, el tipo int en la función MAIN y el return 0.
y las etiquetas de c++ XD. Y las globales hacelas locales preferentemente.
y el bucle
y usar else-if


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5.  
  6. int main()
  7. {
  8. char nom[10];
  9. float Compra, Desc, Total;
  10.  
  11. /*Declaración para introducir el nombre del cliente */
  12. printf("Ingrese el nombre del cliente: \n",nom);
  13. scanf("%9s", nom);
  14. printf("El nombre del cliente es %s \n", nom );
  15.  
  16. /*Declaración para introducir total de la compra */
  17. printf ("Ingrese el total de su compra: \n", Compra);
  18. scanf ("%6.2f", &Compra);
  19.  
  20. /* Operaciones para aplicar descuento */
  21. if(Compra >= 8000){
  22.  
  23. Total = Compra-(Compra*0.12);
  24. printf("El total a  pagar es de: %6.2f \n", Total);
  25. }
  26.        else if(Compra == 7999 && Compra >=5500)
  27.        {
  28. Total = Compra-(Compra*.10);
  29. printf("El total a pagar es de: %5.2f \n", Total);
  30.        }
  31.        else if(Compra ==5499 && Compra >=3100)
  32.        {
  33. Total = Compra-(Compra*.07);
  34. printf("El total a pagar es de:%6.2f \n", Total);
  35.        }
  36.        else if(Compra == 3099 && Compra >=1500)
  37.        {
  38. Total = Compra-(Compra*.05);
  39. printf("El total a pagar es de: %6.2f \n", Total);
  40.        }
  41.  
  42. if (Compra !=1500)
  43. {
  44. if (Compra < 1500)
  45.    printf("Su compra no aplica descuento \n");
  46.  
  47. printf("El total a pagar es de: %5.2f \n",Compra);
  48. }
  49.  
  50. return 0;
  51. }
  52.  
« Última modificación: 31 Marzo 2013, 19:08 pm por 85 » En línea

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/
Xgirl12

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Re: Problemas con ELSE
« Respuesta #6 en: 31 Marzo 2013, 21:52 pm »

Hola de nuevo.

Sólo cometándoles que modifique siguiendo sus consejos, pero no me corria como yo quería. No me daba el total a pagar y como bien me decía avesudra me generaba un bucle que no paraba.

Pero volví al código original y lo cambie como bien me dijeron con otro If en lugar del while y ya me corre.

Se los paso, pero quisiera que me dijeran de que otra forma lo puedo mejorar, ¿se podrá con un swich para no usar tantos if?

De antemano gracias, es un gusto poder interactuar con gente que no se burla por preguntas sencillas como estas, pero cuando se está aprendiendo es importante.



Código:
#include <stdio.h>
#include <conio.h>
int main()
{
char nom[10];
float Compra, Desc, Total;
/*Declaración para introducir el nombre del cliente */
printf("Ingrese el nombre del cliente: \n");
scanf("%9s", nom);
printf("El nombre del cliente es %s \n", nom );
/*Declaración para introducir total de la compra */
printf ("Ingrese el total de su compra: \n", Compra);
scanf ("%f", &Compra);
/* Operaciones para aplicar descuento */
if(Compra >= 8000){
Total = Compra-(Compra*0.12);
}
else
{
if(Compra <= 7999 && Compra >=5500){
Total = Compra-(Compra*.10);
}
else
{
if(Compra <=5499 && Compra >=3100){
Total = Compra-(Compra*.07);
}
else
{
if(Compra <= 3099 && Compra >=1500){
Total = Compra-(Compra*.05);
}
else
{
if (Compra < 1500){
printf("Su compra no aplica descuento \n");
Total = Compra;
}
}
}
}
}
printf ("El total de su compra es: %.2f\n", Total);
getch ();
return 0;
}


Si me pudieran decir como hacer para que mi código aparezca numerado.
Saludos.
En línea

Wofo

Desconectado Desconectado

Mensajes: 168


Ver Perfil
Re: Problemas con ELSE
« Respuesta #7 en: 31 Marzo 2013, 22:21 pm »

El switch no lo puedes usar en este caso porque no admite expresiones lógicas sino solo valores literales. Puedes ver más (con ejemplos y todo) sobre switch en este link: http://www.cplusplus.com/doc/tutorial/control/

Para que el código te aparezca numerado tienes que usar el GeSHi al editar el post (hay un botón que dice GeSHi, le das y seleccionas el lenguaje que estés usando).

Un consejo es que te olvides de conio.h ya que no es C estándar. Tienes algunas alternativas en este post: |Lo que no hay que hacer en C/C++. Nivel basico|

Saludos,
Wofo.
En línea

Xgirl12

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Re: Problemas con ELSE
« Respuesta #8 en: 1 Abril 2013, 05:34 am »

Gracias por contestar Wofo, pero me están pidiendo que incluya al menos una estructura repetitiva (while, do-while o for).
Nada más que llegado a este punto no sé de que forma podría hacerle, por eso había puesto un while pero me daba un bucle...

Espero alguna sugerencia.

Saludos.
En línea

MeCraniDOS


Desconectado Desconectado

Mensajes: 337


Sr. Glass


Ver Perfil
Re: Problemas con ELSE
« Respuesta #9 en: 1 Abril 2013, 13:53 pm »

Puedes añadir un bucle do-while para preguntar al cliente si desea repetir la operación, en caso afirmativo volver al inicio, y en caso negativo finalizar

Saludos
En línea

"La física es el sistema operativo del Universo"
     -- Steven R Garman
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines