caramelo 0.75
confite 1.15
chiclet 0.65
el programa cuando arranca va preguntando cual dulce quieres comprar, y a la vez este mismo va descontando del monto el valor del item elegido por el usuario pero cuando el cash o monto (variable p) es igual a 0.65 se sale del ciclo while(p>=0.65) y no entiendo el porque si p es igual a 0.65 no deberia salirse....entoncs aca donde al usuario aun le alcanza para comprar otro item de 0.65 no agarra la compra y de una imprime los detalles de la compra entregando el cambio de 0.65 donde el usuario aun podria comprar otro item de 0.65 y entregar de cambio 0...por favor espero puedan ayudarme y decirme que hice mal... el programa corre, pueden correrlo e ingresarle los sgtes datos 1,2,2,3,3 con esto logran que p sea igual a 0.65....para que vean lo que les intento decir...
Código code:
Ver original
#include <stdio.h> #include <conio.h> #include<stdlib.h> int dulce1=0,dulce2=0,dulce3=0,d;float a=0,; void imprimir(float p){ printf("%s%d%s","Recibo de Caja...\n______________________\n\nDULCERIA LA MAYOR.\n______________________\n\nCaramelos: ",dulce1," * 0.75|"); printf("%s%d%s","\nConfites: ",dulce2," * 1.15|"); printf("%s%d%s","\nChiclets: ",dulce3," * 0.65|\n\n"); printf("%s","----------------------\n"); printf("%s%f%s","Cambio: ",p,"\n----------------------\n"); printf("%s","Gracias por su compra.\n\nFELIZ NAVIDAD...!\n______________________\n\n\n\nJOSE LUIS RANGEL CAÑIZARES Cod.1085040868\n\n"); } float condiciones(float p){ while(p>=0.65){ printf("%s%f","Que tipo de dulce desea comprar:\n\n1.caramelo: $ 0.75\n2.confite: $ 1.15\n3.chiclet: $ 0.65\n\nCash: $ ",p); printf("%s","\n\n___________________\n\n"); printf("%s","Ingresa una opcion: "); scanf("%d",&d); while(d<=0 || d>3 ){ printf("%s","\n--------------------------\n\n"); printf("%s%f","Error opcion no valida...!\nDebes seleccionar una opcion entre 1 y 3:\n\n1.caramelo: $ 0.75\n2.confite: $ 1.15\n3.chiclet: $ 0.65\n\nCash: $ ",p); printf("%s","\n\n___________________\n\n"); printf("%s","Ingresa una opcion: "); scanf("%d",&d); } if(d==1 && p>=0.75){ dulce1++; p=p-0.75; } if(d==2 && p>=1.15){ dulce2 ++; p=p-1.15; } if(d==3 && p>=0.65){ dulce3 ++; p=p-0.65; } if(p<=0.65 && p>=0.60){ printf("%s","\n-------------------------------\n\n"); printf("%s%f","Que tipo de dulce desea comprar:\n\n1.caramelo: $ 0.75\n2.confite: $ 1.15\n3.chiclet: $ 0.65\n\nCash: $ ",p); printf("%s","\n\n___________________\n\n"); printf("%s","Ingresa una opcion: "); scanf("%d",&d); printf("%s","\n\n"); while(d!=3){ printf("%s","\n--------------------------------------------------------------------\n\n"); printf("%s%f%s","Error...! solo puedes comprar un dulce con un valor menor o igual a ",p,"\n\n"); printf("%s%f","Que tipo de dulce desea comprar:\n\n1.caramelo: $ 0.75\n2.confite: $ 1.15\n3.chiclet: $ 0.65\n\nCash: $ ",p); printf("%s","\n\n___________________\n\n"); printf("%s","Ingresa una opcion: "); scanf("%d",&d); printf("%s","\n\n"); if(d==3){ dulce3 ++; p=p-0.65; } } } if(p<=1.15 && p>=1.10){ printf("%s","\n-------------------------------\n\n"); printf("%s%f","Que tipo de dulce desea comprar:\n\n1.caramelo: $ 0.75\n2.confite: $ 1.15\n3.chiclet: $ 0.65\n\nCash: $ ",p); printf("%s","\n\n___________________\n\n"); printf("%s","Ingresa una opcion: "); scanf("%d",&d); if(d==1 && p>=0.75){ dulce1++; p=p-0.75; } if(d==2){ dulce2 ++; p=p-1.15; } if(d==3 && p>=0.65){ dulce3 ++; p=p-0.65; } } if(p<=0.75 && p>=0.70){ printf("%s","\n-------------------------------\n\n"); printf("%s%f","Que tipo de dulce desea comprar:\n\n1.caramelo: $ 0.75\n2.confite: $ 1.15\n3.chiclet: $ 0.65\n\nCash: $ ",p); printf("%s","\n\n___________________\n\n"); printf("%s","Ingresa una opcion: "); scanf("%d",&d); printf("%s","\n\n"); while(d!=1 || d!=3){ printf("%s","\n--------------------------------------------------------------------\n\n"); printf("%s%f%s","Error...! solo puedes comprar un dulce con un valor menor o igual a ",p,"\n\n"); printf("%s%f","Que tipo de dulce desea comprar:\n\n1.caramelo: $ 0.75\n2.confite: $ 1.15\n3.chiclet: $ 0.65\n\nCash: $ ",p); printf("%s","\n\n___________________\n\n"); printf("%s","Ingresa una opcion: "); scanf("%d",&d); printf("%s","\n\n"); if(d==1){ dulce1 ++; p=p-0.75; } if(d==3){ dulce3 ++; p=p-0.65; } } } printf("%s","\n-------------------------------\n\n"); } return p; } int main(){ system ("color 1e"); float p=5; imprimir(condiciones(p)); system("pause"); }
cuando ven esta condicion if(p<=0.65 && p>=0.60) es tratando de agarrar a p y forzarlo que entre aqui y me funciono ayer y tenia solucionado el problema pero depronto hoy cuando corro el programa me doy cuenta de que ya no sirve no me explico el por que crei haberlo solucionado con esas condiciones donde forzaba las operaciones correspondientes....:(