Delphi - Billetes

 
Vista:

Billetes

Publicado por Ismael (44 intervenciones) el 22/07/2004 20:24:16
Hola a todos:

Como puedo hacer para saber el Detalle de Efectivo de un sueldo.. osea :
Si tendo 22,278.30, saber cuantas papaletas de 1000 pesos,
de 500, de 100, de 50, de 20, y de 10 tengo que pagar.

espero que me entiendan.....

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Billetes

Publicado por Rocki (11 intervenciones) el 22/07/2004 21:13:26
Hola

Tendrias que hacer una funcion para que te genere este proceso. algo parecedo a lo de abajo.

var
b1000, b500, b100, b50, b20: Integer;
importe: Currency;
begin
Importe: = 22,280.20
b1000 := 0;
b500 := 0;
b100 := 0;
b50 := 0;
b20 := 0;

while Importe > 1000
begin
b1000 := b1000 + 1;
importe := importe - 1000
end
while Importe > 500
begin
b500 := b500 + 1;
importe := importe - 500
end
while Importe > 100
begin
b100 := b100 + 1;
importe := importe - 100
end
while Importe > 50
begin
b50 := b50 + 1;
importe := importe - 50
end
while Importe > 20
begin
b20 := b20 + 1;
importe := importe - 20
end
end;

Entonces el dinero te lo convertida en valor numero por ejemplo

b1000 := 2
b500 := 1
b100 := 0
b50 := 0
b20 := 0
el importe en este ejemplo fue de 2500
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Billetes

Publicado por Dr Juzam (821 intervenciones) el 22/07/2004 21:36:03
Creo que puede haber una solución algo más sencilla: Se trata de dividir el dinero total entre las partes en que queramos (en el ejemplo, billetes de 100, de 50 y de 1) y luego quedarnos con la parte entera. Para el siguiente billete menor, restamos del dinero total lo que ya hemos pagado en billetes de mayor tamaño. El ejemplo solo contempla billetes de 100, de 50 y de 1, pero creo que captarás la idea. Aumentar el número de billetes no es dificil ya que todo sigue la misma pauta (y el código se puede optimizar incluso).
He puesto 4 edits en un Form y un botón. En el click del botón puse lo siguiente:

procedure TForm1.Button1Click(Sender: TObject);
var
d100, d50, d1: Integer; //Cambio en billetes de 100, de 50 y de 1
Dinero: Currency;
begin
Dinero:=StrToCurr(Edit1.Text);
d100:=Trunc(Dinero/100); //Parte entera de la división
d50:= Trunc((Dinero-d100*100)/50); //Lo que queda entre 50
d1:= Trunc(Dinero-d100*100-d50*50); //Lo que queda
Edit2.Text:=IntToStr(d100);
Edit3.Text:=IntToStr(d50);
Edit4.Text:=IntToStr(d1);
end;

Bueno, es otra opción. Espero que te sea útil.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Billetes

Publicado por nadie (43 intervenciones) el 23/07/2004 08:33:39
¿Es que nadie conoce las operaciones div y mod?

Billetes_de_1000 = sueldo div 1000;
Resto = sueldo mod 1000;

Ahora con el resto calculo cuantos billetes de 500. Esto lo puedo hacer, evidentemente, dentro de un bucle.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Billetes

Publicado por Dr Juzam (821 intervenciones) el 23/07/2004 15:23:58
Resulta evidente que conocemos los operadores div y mod, pero resulta que éstos solo son válidos con operandos enteros. Si te fijas en la pregunta de Ismael verás que pone como ejemplo un sueldo con decimales, por lo que si, en tu ejemplo, sueldo es un currency, al hacer la operación
sueldo div 1000 saltaría un error "Operator not applicable to this operand type".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar