Servicio a la orden, hardware, software, internet y de todo un poco ;)

Ver más
  • 82,841 Miembros
  • 130,160 Temas
  • 23,677 Seguidores
  • 0

[consulta] Problema con DFD? (diagrama de flujo de datos)


hola, tengo un ejercicio para mi clase de programacion que se realiza con DFD y con el programa freedfd en la computadora.
El problema es;

El programa (freedfd)debe informar el precio de la venta de alfajores, siendo que 12 unidades constituyen una caja y vale 5$, cada unidad vale 0.50$. por ejemplo, si se compra 28 alfajores el programa debe calcular 2 cajas y 4 sueltos osea 12$.

Probe haciendo esta cuenta
caja= al (alfajores)/ 12

precio caja= caja * 5 (el valor)


pero el resultado da con decimales y no llega al precio justo, ai otra manera de resolverlo?
  • 0
  • 0Calificación
  • 0Seguidores
  • 290Visitas
  • 0Favoritos

10 comentarios

@elliotness Hace más de 10 meses
Se me ocurre:

La más simple De la primera división sólo debes tomar la parte entera, y ahí obtienes las cajas. Luego, utilizando la función MOD para obtener el resto de una división podés calcular los alfajores sueltos.
@elliotness Hace más de 10 meses
De otra forma, con un bucle, un contador de a 12 y un acumulador.

Acumular las veces que pasa el bucle hasta llegar a 28 (o sea dos). calcular B = A * 12 (en donde A es la cantidad de veces que se pasó el bucle) y luego restarle la cantidad inicial para obtener los alfajores sueltos.

La cantidad de A (veces que se pasó el bucle) es la cantidad de cajas.


No sé si me expliqué bien, che.
@javiercyberman Hace más de 10 meses
facil

toma el entero que te de caja= al/12;

a ese entero que te dio lo multiplicar nuevamente x 12, y le restas el total de unidades y te tiene que dar unidades sueltas.

si la variable es entera y le pones este comando caja= al/12;
dentro de caja va a tener un valor entero, luego haces aux= caja * 12;
y luego unidades(sueltas) = aux - al;
para luego terminar con total= (caja * 5) + (unidades * 0.5);


proba y contame
@javiercyberman Hace más de 10 meses

De otra forma, con un bucle, un contador de a 12 y un acumulador.

Acumular las veces que pasa el bucle hasta llegar a 28 (o sea dos). calcular B = A * 12 (en donde A es la cantidad de veces que se pasó el bucle) y luego restarle la cantidad inicial para obtener los alfajores sueltos.

La cantidad de A (veces que se pasó el bucle) es la cantidad de cajas.


No sé si me expliqué bien, che.


Lo habia pensado como un bucle, pero si con dos cuentas lo haces, ademas por lo que se ve esta en un nivel inicial y posiblemente no haya viste bucles.
@javiercyberman Hace más de 10 meses
matixsx dijo:

De otra forma, con un bucle, un contador de a 12 y un acumulador.

Acumular las veces que pasa el bucle hasta llegar a 28 (o sea dos). calcular B = A * 12 (en donde A es la cantidad de veces que se pasó el bucle) y luego restarle la cantidad inicial para obtener los alfajores sueltos.

La cantidad de A (veces que se pasó el bucle) es la cantidad de cajas.


No sé si me expliqué bien, che.


Lo habia pensado como un bucle, pero si con dos cuentas lo haces, ademas por lo que se ve esta en un nivel inicial y posiblemente no haya viste bucles.




exacto estoy en 1er año, pero me refiero a que yo uso la funcion 'decision''

si alfajores < 12 calcula solamente alfajores * 0.50$


En cambio si es un numero mayor, que funcion uso?

la cuenta de al/12 no me da un numero exacto, me da con decimales que arruinan el precio final :s


por eso aclare que cuando a una variable la declaras entera y haces una división sobre ella, ej: caja=al/12; la variable misma solo recibe valores enteros, o sea olvidate de los decimales.

en mi primer comentario tenes como solucionar el resto.

en este caso no hace falta usar decisión, ni bucle, ni funciones ni nada..
@javiercyberman Hace más de 10 meses
generalmente los lenguajes de programacion recurren a funciones como div y MOD para obtener los decimales, pero una funcion es un pedazo de codigo del cual teenes que entender como funciona, sino el diagrama no es valido.

por ejemplo en lenguaje C vos declaras la variable caja como entero
int caja;

luego esa variable entera le es imposible recibir un numero decimal o flotante ( float) por lo que recibe solo la parte entera.

caja = al/12; el resultado de caja siempre es entero por la variable es entera.
luego utilizamos un aux( declarala como entero)
aux= caja*12;
ahora ya sabemos cuantes cajas y unidades totales de cajas enteras, tenemos que saber cuantas quedan que no completan una caja.
creas otra variable que se llama sueltas
sueltas= aux-al;

despues tenes que sacar los totales que seria las cantidades de cajas * 5 pesos y las unidades sueltas * 0.5 pesos.

todo quedaria asi


caja = al/12;
aux= caja*12;
sueltas= aux-al;
total= (caja * 5) + (unidades * 0.5);

hace la prueba, elegi cualquier numero, por ejemplo 28:

28/12=2.33 como caja solo puede recibir un entero caja=2;
despues queda caja que es 2 multiplicado por 12 que da 24 y es guardado en aux

aux tiene 24 y al tiene 28 por lo que hacemos 24-28= 4

entonces el total seria (2*5) + (4*0.5)

lo que da total= 12.

es una forma de probar el diagrama de flujo
@javiercyberman Hace más de 10 meses
matixsx dijo:

Mil gracias!! lo entendi , lastima que entregue el trabajo antes de entender este ejercicio, tuve que poner el ''mod'' para sacar el resto y de ai fue mas facil

Un genio @javiercyberman

(que paciencia que tenes )


jaja..de nada!! la programación es algo hermoso pero también es una forma de pensar...dentro de unos años vas a saber de lo que te hablo!! jaaj..
Tienes que ser miembro para responder en este tema