Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema en comparacion de float c++...

Estas en el tema de problema en comparacion de float c++... en el foro de C/C++ en Foros del Web. Hola amigos, resulta que tengo un programita en C que me permite saber cuantos items puedo comprar con cierto monto (variable p) que es llamado ...
  #1 (permalink)  
Antiguo 03/11/2009, 00:16
 
Fecha de Ingreso: octubre-2009
Mensajes: 10
Antigüedad: 14 años, 6 meses
Puntos: 0
problema en comparacion de float c++...

Hola amigos, resulta que tengo un programita en C que me permite saber cuantos items puedo comprar con cierto monto (variable p) que es llamado cash en la impresion en pantalla, el problema es este el programa cuenta con 3 items:

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
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include<stdlib.h>
  4. int dulce1=0,dulce2=0,dulce3=0,d;float a=0,;
  5.     void imprimir(float p){
  6.        printf("%s%d%s","Recibo de Caja...\n______________________\n\nDULCERIA LA MAYOR.\n______________________\n\nCaramelos: ",dulce1," * 0.75|");
  7.        printf("%s%d%s","\nConfites:  ",dulce2," * 1.15|");
  8.        printf("%s%d%s","\nChiclets:  ",dulce3," * 0.65|\n\n");
  9.        printf("%s","----------------------\n");
  10.        printf("%s%f%s","Cambio:   ",p,"\n----------------------\n");
  11.        printf("%s","Gracias por su compra.\n\nFELIZ NAVIDAD...!\n______________________\n\n\n\nJOSE LUIS RANGEL CAÑIZARES Cod.1085040868\n\n");
  12.        }
  13.     float condiciones(float p){
  14.     while(p>=0.65){
  15.     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);
  16.     printf("%s","\n\n___________________\n\n");
  17.     printf("%s","Ingresa una opcion: ");
  18.     scanf("%d",&d);
  19.     while(d<=0 || d>3 ){
  20.     printf("%s","\n--------------------------\n\n");
  21.     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);
  22.     printf("%s","\n\n___________________\n\n");
  23.     printf("%s","Ingresa una opcion: ");
  24.     scanf("%d",&d);
  25.             }
  26.         if(d==1 && p>=0.75){
  27.             dulce1++;
  28.             p=p-0.75;
  29.             }
  30.         if(d==2 && p>=1.15){
  31.         dulce2 ++;
  32.         p=p-1.15;
  33.         }
  34.         if(d==3 && p>=0.65){
  35.             dulce3 ++;
  36.             p=p-0.65;
  37.         }
  38.         if(p<=0.65 && p>=0.60){
  39.         printf("%s","\n-------------------------------\n\n");
  40.         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);
  41.         printf("%s","\n\n___________________\n\n");
  42.         printf("%s","Ingresa una opcion: ");
  43.         scanf("%d",&d);
  44.         printf("%s","\n\n");
  45.         while(d!=3){
  46.         printf("%s","\n--------------------------------------------------------------------\n\n");
  47.         printf("%s%f%s","Error...! solo puedes comprar un dulce con un valor menor o igual a ",p,"\n\n");
  48.         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);
  49.         printf("%s","\n\n___________________\n\n");
  50.         printf("%s","Ingresa una opcion: ");
  51.         scanf("%d",&d);
  52.         printf("%s","\n\n");
  53.         if(d==3){
  54.         dulce3 ++;
  55.         p=p-0.65;
  56.         }
  57.         }
  58.         }
  59.         if(p<=1.15 && p>=1.10){
  60.         printf("%s","\n-------------------------------\n\n");
  61.         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);
  62.         printf("%s","\n\n___________________\n\n");
  63.         printf("%s","Ingresa una opcion: ");
  64.         scanf("%d",&d);
  65.         if(d==1 && p>=0.75){
  66.             dulce1++;
  67.             p=p-0.75;
  68.             }
  69.         if(d==2){
  70.         dulce2 ++;
  71.         p=p-1.15;
  72.         }
  73.         if(d==3 && p>=0.65){
  74.             dulce3 ++;
  75.             p=p-0.65;
  76.         }
  77.         }
  78.         if(p<=0.75 && p>=0.70){
  79.         printf("%s","\n-------------------------------\n\n");
  80.         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);
  81.         printf("%s","\n\n___________________\n\n");
  82.         printf("%s","Ingresa una opcion: ");
  83.         scanf("%d",&d);
  84.         printf("%s","\n\n");
  85.         while(d!=1 || d!=3){
  86.         printf("%s","\n--------------------------------------------------------------------\n\n");
  87.         printf("%s%f%s","Error...! solo puedes comprar un dulce con un valor menor o igual a ",p,"\n\n");
  88.         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);
  89.         printf("%s","\n\n___________________\n\n");
  90.         printf("%s","Ingresa una opcion: ");
  91.         scanf("%d",&d);
  92.         printf("%s","\n\n");
  93.         if(d==1){
  94.         dulce1 ++;
  95.         p=p-0.75;
  96.         }
  97.         if(d==3){
  98.         dulce3 ++;
  99.         p=p-0.65;
  100.         }
  101.         }
  102.         }
  103.         printf("%s","\n-------------------------------\n\n");
  104.     }
  105.    
  106.     return p;
  107. }  
  108. int main(){
  109.     system ("color 1e");
  110.     float p=5;
  111.     imprimir(condiciones(p));
  112.     system("pause");
  113. }

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....:(

Última edición por zonaunlock; 03/11/2009 a las 00:22 Razón: complemento...!
  #2 (permalink)  
Antiguo 03/11/2009, 11:47
 
Fecha de Ingreso: noviembre-2009
Mensajes: 2
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: problema en comparacion de float c++...

intenta cambiar el ciclo en vez de poner while(p>=0.65) pone while(p<0.65)
eso se me ocurre pq revise el codigo y no vi algun error de codigo o algo aunque =
mi manejo es basicoojala te sirva :P
  #3 (permalink)  
Antiguo 03/11/2009, 12:43
 
Fecha de Ingreso: octubre-2009
Mensajes: 10
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: problema en comparacion de float c++...

men la idea del programa es q cuando ya el cash no tenga suficiente monto para comprar ningun producto no entre mas al while por q el item mas barato es 0.65 entiendes..???
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:40.