FoxPro/Visual FoxPro - AYUDA EN FUNCION MOD ()

 
Vista:

AYUDA EN FUNCION MOD ()

Publicado por Ernesto Rodríguez (61 intervenciones) el 02/03/2002 00:44:05
¿ Porque si aplico " ?MOD(36, 10)" en la ventana de comandos
VPP muestra como respuesta el número 6 ?

Si el resultado de dividir 36 entre 10 es : 3.60

Estoy aplicando mal la función ? Muchas gracias.
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:AYUDA EN FUNCION MOD ()

Publicado por damisela (32 intervenciones) el 02/03/2002 02:52:51
porque la funcion mod te da el resto como el resto es 6 eso te muestra...
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:AYUDA EN FUNCION MOD ()

Publicado por Jesus Ventura Ponce (1 intervención) el 08/04/2016 21:10:37
Hola Amigos espero que alguien me pueda ayudar con la función mod(), Resulta que quiero obtener el residuo dividiendo un numero entre un char, lo que hago es lo siguiente mod(camponumero , val(campochar)) y me dice que no se puede dividir entre cero pero si reviso mis campos en uno tengo 1266 y en la otra 25, ya sustitui el campochar por un numero y si me muestra el resultado.


En otra formula utilice la función floor() con los mismos campos y si me dio el resultado., de ante mano gracias...
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

AYUDA EN FUNCION MOD ()

Publicado por juan carlos (4 intervenciones) el 08/05/2017 04:52:41
Acerca del comando mod()
necesito decirle que me divida entre dos
osea que quiero acer un cajero y que me diga cuantos billetes de 500, y de 100
me va imprimir luego de decirle de cuanto es el retiro
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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

AYUDA EN FUNCION MOD ()

Publicado por Fidel José (657 intervenciones) el 08/05/2017 12:43:08
Acá tienes una rutina que te saca la cantidad de billetes para un valor dado.
Nota que la lista de billetes es configurable, porque puede ocurrir que no haya determinadas denominaciones.
Se podría mejorar con un tercer parámetro que contenga la lista de disponiblidad de billetes.

Ejemplo:
MESSAGEBOX( Get_Billetes(18620,"500,100,50,20,10") )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
PROCEDURE get_billetes
*----------------------
LPARAMETERS tnValor,tcList_Denom
 
LOCAL lnElements,i,lcString,lnRest
 
tcList_Denom = EVL(tcList_Denom,"500,200,100,50,20,10,5,2,1,0.5,0.25,0.10")
 
lnElements = ALINES(laElements,m.tcList_Denom ,1+4,CHR(44))
FOR i = 1 TO m.lnElements
	laElements[m.i] = VAL(laElements[m.i])
NEXT
ASORT(laElements,1,-1,1)
 
LOCAL ARRAY laDistrib(m.lnElements,2)
lnRest = m.tnValor
lcString = ""
 
FOR i = 1 TO m.lnElements
	laDistrib[m.i,1] = laElements[m.i]
	laDistrib[m.i,2] = 0
NEXT
 
FOR i = 1 TO m.lnElements
	IF lnRest >= laDistrib[m.i,1]
		laDistrib[m.i,2] = INT(m.lnRest/laDistrib[m.i,1])
		lnRest = m.lnREst - laDistrib[m.i,2] * laDistrib[m.i,1]
 
		IF laDistrib[m.i,2] > 0
			lcString = m.lcString ;
				+ PADR(TRANSFORM(laDistrib[i,1]),10," ");
				+ PADL(TRANSFORM(laDistrib[i,2]),10," ");
				+ CHR(13)+CHR(10)
		ENDIF
 
	ENDIF
ENDFOR
 
 
RETURN m.lcString
 
ENDPROC
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

respuesta AYUDA EN FUNCION MOD ()

Publicado por juan carlos (4 intervenciones) el 09/05/2017 06:43:45
excelente la respuesta fidel.
en mi caso yo lo estoy trabajando en formularios
quisiera hacerlo con un botón,
o no se como me recomendaría y en que evento lo
podría trabajar.
y como podría declararlas a los text.
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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

respuesta AYUDA EN FUNCION MOD ()

Publicado por Fidel José (657 intervenciones) el 09/05/2017 14:58:15
El procedure "get_Billetes" lo puedes poner como métdo del form, de una clase custom o de un prg. Da lo mismo. Lo que hay que pensar es si se va a utilizar en otro lado y cómo estás programando (si utlilizas clases o no).
En cuanto a la visualización de la respuesta, depende de qué es lo que se pretende. Si es solamente mostrar el resultado, bien lo hará un Editbox, preferentemente con FontName = "Courier New" (por el espaciado fijo).
En cuanto al procedimiento, si el cambio (vuelto) lo calcula el sistema, no hace falta más que llamar al procediemiento y mostrar el resultado:
Supongamos que hay una variable "lnCambio_devuelto" que contiene el importe a devolver y un Editbox sobre el form. Por otra parte, supongamos que en el formulario hay una propiedad llamada "Billetes" que contiene la lista de denominaciones (CSV).

1
Thisform.Edit1.Value = Thisform.get_billetes(m.lnCambio_Devuelto , Thisform.Billetes)

También es posible utilizar el procedure Get_Billetes para una lista. Si tengo un cursor ;
Create Cursor curCambio ("nombre" c(40), "Importe" n(12,0) , "billetes" M )
y relleno Nombre e Importe con los valores correspondientes:
1
2
3
4
5
6
SELECT curCambio
SCAN
      Replace Billetes with Get_Billetes(curCambio.Importe)
ENDSCAN
GO TOP
BROWSE

Si necesito obtener el cambio para valores solicitados (el ejemplo sería que hay que entregar dinero al paso), también voy a necesitar un Textbox numérico para ingresar el Valor y el EditBox para que muestre el Resultado
En el evento Valid
1
2
3
4
5
6
IF !EMPTY(THIS.VALUE)
     thisform.Editbox.Value = Thisform.Get_Billetes(this.value,thisform.Billetes)
    * Esto que sigue es para que no se vaya del foco, salvo que se el valor sea cero.
     this.Value = 0
    Return 0
ENDIF

Y puedes agudizar el ingenio para otros casos más.
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