Muchas gracias a todos!!!!!.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: leosansan en 5 Noviembre 2012, 21:01 PM#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
float cantidad;
int e = 0,f = 0,g = 0,h = 0;
cout << "escribe la cantidad: " ;
cin >> cantidad;
while(cantidad >= 0.249)
{
e++;cantidad -= 0.25;
}
cout << "de 0.25 = " << (e) << endl;
while(cantidad >= 0.099)
{
f++;cantidad -= 0.1;
}
cout << "de 0.10 = " << (f) << endl;
while(cantidad >= 0.049)
{
g++;cantidad -= 0.05;
}
cout << "de 0.05 = " << (g) << endl;
while(cantidad >0)
{
h++;cantidad -= 0.01;
}
cout << "de 0.01 = " << (h) << endl;
return 0;
}
Saludos!.
Cita de: adripillo14 en 5 Noviembre 2012, 19:54 PM
mira, esta es la salida de catidad = 1.4
cantidad = 1.4
de 0.25 = 5
de 0.10 = 1
de 0.05 = 0
de 0.01 = 5
deberia usar 1 de 0.05 y ninguna de 0.01.
Cita de: BatchianoISpyxolo en 5 Noviembre 2012, 19:35 PM
... A mí sí me da.
Edito:
Me faltaba sumar la h del final. Edito el código arriba.
Cuando usas dos decimales no termina de funcionar bien.
cantidad = 1.4
de 0.25 = 5
de 0.10 = 1
de 0.05 = 0
de 0.01 = 5
Cita de: BatchianoISpyxolo en 5 Noviembre 2012, 19:08 PM
No funciona por la precisión. :[
Siempre testea el valor de las variables así sabrás que pasa. O a couts o con gdb (por ejemplo)...
La solución está en que si tienes una cantidad inferior a .01 salgas del bucle.. O sea lo puedes hacer así:#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
float cantidad;
float canta = 0;
float cante = 0;
float canti = 0;
int e = 0;
int f = 0;
int g = 0;
int h = 0;
cout << "escribe la cantidad" << endl;
cin >> cantidad;
while(cantidad >= 0.01)
{
if(cantidad >= 0.25){
cantidad -= 0.25;
e++;
}
else if(cantidad >= 0.10){
cantidad -= 0.10;
f++;
}
else if(cantidad >= 0.05){
cantidad -= 0.05;
g++;
}
else if(cantidad >= 0.01){
cantidad -= 0.01;
h++;
}
}
cout << "de 0.25 = " << e << endl;
cout << "de 0.10 = " << f << endl;
cout << "de 0.5 = " << g << endl;
cout << "de 0.1 = " << h << endl;
}
¿
float canta = 0;
float cante = 0;
float canti = 0;
?
Cita de: BatchianoISpyxolo en 5 Noviembre 2012, 17:36 PM
No he leído mucho pero el error creo que está aquí:while(cantidad != 0)
Cantidad debe ser mayor o igual a 0. Nunca vas a tener cantidades negativas.
Como tú dices, si tienes 1.4 y vas restando .25, llegará un momento que saltes de un valor > 0 a otro valor < 0 entonces nunca será igual a 0 y el bucle se hará infinito.
Por tanto:while(cantidad >= 0)
int main(){
float cantidad;
float canta = 0;
float cante = 0;
float canti = 0;
int e = 0;
int f = 0;
int g = 0;
int h = 0;
cout << "escribe la cantidad" << endl;
cin >> cantidad;
while(cantidad != 0)
{
if(cantidad >=0.25){
cantidad -= 0.25;
e++;
}
else if(cantidad >=0.10){
cantidad -= 0.10;
f++;
}
else if(cantidad >=0.05){
cantidad -= 0.05;
g++;
}
else if(cantidad >=0.01){
cantidad -= 0.01;
h++;
}
//cout << "de 0.25 = " << e << endl;
//cout << "de 0.10 = " << f << endl;
//cout << "de 0.5 = " << g << endl;
//cout << "de 0.1 = " << h << endl;
}
cout << "de 0.25 = " << e << endl;
cout << "de 0.10 = " << f << endl;
cout << "de 0.5 = " << g << endl;
cout << "de 0.1 = " << h << endl;
getch();
}