Autor
|
Tema: Problemas con ELSE (Leído 5,715 veces)
|
Xgirl12
Desconectado
Mensajes: 27
|
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. #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
Mensajes: 724
Intentando ser mejor cada día :)
|
Es que la estructura que tu pones para el else-if es esta: else { if ( . . . ) }
Y la correcta para un else-if es esta: else if( . . . ) { }
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): #include <stdio.h> #include <stdlib.h> #include <math.h> /**¡No es bueno usar variables globales**/ int main() { float Compra, Desc, Total; char nom[10]; /*Declaración para introducir el nombre del cliente */ printf("Ingrese el nombre del cliente: \n");//Aquí no va 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");//Aquí no va Compra... scanf ("%6f", &Compra );//Aquí da un error si le pones el .2 /* 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)//Esto provoca un bucle infinito... { 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
|
Regístrate en
|
|
|
Xgirl12
Desconectado
Mensajes: 27
|
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
Mensajes: 724
Intentando ser mejor cada día :)
|
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
Mensajes: 27
|
OK. Corrigiendo y en un momento más comento que tal me fue.
|
|
|
En línea
|
|
|
|
85
|
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 #include <stdio.h> #include <stdlib.h> #include <math.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",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); } if (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; }
|
|
« Última modificación: 31 Marzo 2013, 19:08 pm por 85 »
|
En línea
|
|
|
|
Xgirl12
Desconectado
Mensajes: 27
|
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. #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
Mensajes: 168
|
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
Mensajes: 27
|
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
Mensajes: 337
Sr. Glass
|
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
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
problemas con problemas con NVidia FX5700LE
Juegos y Consolas
|
[D4N93R]
|
0
|
2,631
|
12 Abril 2005, 18:31 pm
por [D4N93R]
|
|
|
problemas Nero-problemas Roxio-problemas sonido de PC
Multimedia
|
mohabe
|
1
|
3,847
|
5 Abril 2006, 04:47 am
por fer63
|
|
|
listas enlazadas problemas resueltos todo un paquete de 13 problemas
Java
|
fiisi
|
4
|
55,771
|
9 Junio 2009, 02:25 am
por sapito169
|
|
|
Problemas con html5 amigos... tengo los siguientes problemas...
Desarrollo Web
|
XXXXXX
|
0
|
3,703
|
16 Junio 2010, 19:35 pm
por XXXXXX
|
|
|
problemas que tube con la proteccion de mi equipo. y problemas que tengo ahora
Seguridad
|
boot/expert
|
4
|
5,580
|
20 Septiembre 2012, 20:29 pm
por boot/expert
|
|