Solucion distribuidora de gas. doble ciclo.

501 visualizaciones

Publicado el

Ejercicio que usa estructuras repetitivas dobles para su solucion, poo y metodologia para la resolucion de problemas.

Publicado en: Educación, Empresariales
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
501
En SlideShare
0
De insertados
0
Número de insertados
155
Acciones
Compartido
0
Descargas
23
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Solucion distribuidora de gas. doble ciclo.

  1. 1. Introducción a la Computación Programa: Análisis de Sistemas Profesora: Erys Piñero Profesor: Vladimir Camacaro 1
  2. 2. Ejercicio Una compañía distribuidora de gas, recibe de cada uno de sus vendedores la información referente a sus ventas. Los datos disponibles son:  Código del vendedor  Precio de la bombona de gas  Tipo de bombona de gas (Grande o pequeña)  Cantidad de bombona Cada vendedor tiene tantas entradas como ventas realizadas Se requiere de un informe que contenga: Por vendedor:  Monto total facturado  Promedio de lo facturado  Mayor monto facturado por el vendedor Por distribuidora:  Código del vendedor con mayor facturación  Total monto facturado  Que tipo de bombona de gas se vendió en mayor cantidad 2
  3. 3. Análisis del problema: Lista Clasificación Venta ---------------------------------------- Clase Código -------------------------------------- Atributo/Vendedor TipoBombona------------------------------ Atributo/Vendedor Precio---------------------------------------- Atributo/Vendedor Cantidad ------------------------------------ Atributo/Vendedor Vendedor--------------------------------------------------- Clase Calcular monto total facturado------------------------ Método/Vendedor Calcular promedio de lo facturado------------------- Método/Vendedor Calcular mayor monto facturado por vendedor - Método/Vendedor Distribuidora----------------------------------------------- Clase Calcular vendedor con mayor facturación --------- Método/Distribuidora Calcular tipo de bombona de gas que se vendió en mayor cant Método/Distribuidora Calcular total monto facturado----------------------- Método/Distribuidora 3
  4. 4. f.u. (1) 1) Inicializar (Mayor, AcumMontoF, ContGrande, ContPequeña) f.m.(2) 2) Inicializar (AcumMF, ContVenta, Mayor Vend) f.m.(2) 3) Leer(Codigo) f.m.(3) 4) Leer (TipoBombona, Precio, Cantidad) f.m.(3) 5) Determinar mayor monto facturado por vendedor si (MayorVend<Precio*Cantidad) MayorVend ← Precio*Cantidad f.m.(3) 6) Acumular Monto Facturado: AcumMF AcumMF + Precio*Cantidad f.m.(3) 7) Contar venta: ContVenta  ContVenta + 1 f.m.(3) 8) Acumular según tipo de bombona si(TipoBombona=”Grande”) Se escribe lo solicitado ContGrande← ContGrande + Cantidad por la Vendedor sino (9,10,11) si(TipoBombona=”Pequeña”) ContPequeña← ContPequeña + Cantidad f.m.(4) 9) Imprimir monto total facturado por vendedor (AcumMF) f.m.(4) 10) Calcula e imprime Promedio facturado del vendedor Promedio ← AcumMF/ContVenta f.m.(4) 11) Imprimir mayor monto facturado por vendedor (MayorVend) f.m.(4) 12) Determinar vendedor con mayor facturación si (Mayor<AcumMF) inicio Mayor ← AcumMF MayorVen ← Código fin f.m(4) 13) Acumular monto facturado por Distribuidora AcumMontoF ← AcumMontoF + AcumMF 4
  5. 5. f.u. (5) 14) Imprimir Código del vendedor con mayor facturación (MayorVen) f.u. (5) 15) Imprimir tipo de venta con mayor facturación si(ContGrande > ContPequeña) Mensaje ← “Las bombonas Grandes se vendieron en mayor cantidad” si(ContGrande< ContPequeña) Mensaje ← “Las bombonas Pequeñas se vendieron en mayor cantidad” sino Mensaje ← “Las bombonas Pequeñas y grandes se vendieron en igual cantidad” f.u. (5) 16) Imprimir el total facturado de la empresa (AcumMontoF) Se escribe lo solicitado por la Distribuidora 5
  6. 6. 1 2 3 HayDato←”Si” repetir mientras (HayDato=“si”) Resp←”Si” 4 5 6 7 8 repetir mientras (Resp=“Si”) leer Resp 4 9 10 11 12 13 leer HayDato 14 15 16 6
  7. 7. Venta alfanumérico Código alfanumérico TipoBombona real Precio entero Cantidad AsignarCódigo(alfanumerico ↓ Cod) AsignarTipoBombona(alfanumerico ↓ TB) AsignarPrecio(real ↓ Pc) AsignarCantidad(entero ↓ Cant) alfanumerico SacarCodigo() alfanumerico SacarTipoBombona() real SacarPrecio() entero SacarCantidad() 7
  8. 8. Vendedor real AcumMF entero ContVenta real MayorVend Inicial() real SacarAcumMF() entero SacarContVenta() real SacarMayorVend() Acumular (Venta ↓ Vent) Contar() real CalcMayorVenta(Venta ↓ Vent) real CalcPromedio() 8
  9. 9. Distribuidora real Mayor alfanumérico MayorVen entero ContGrande entero ContPequeña real AcumMontoF Inicializar() real SacarMayor() alfanumérico SacarMayorVend() entero SacarContGrande() entero SacarContPequeña() real SacarAcumMontoF() DetMayor TipoBombona() AcumularMontoF(Inf) DetMayor(Vend,Inf) AcumularTB(Vend) 9
  10. 10. // Definición de la estructura de la clase Venta clase Venta inicio privado: alfanumérico Código, TipoBombona real Precio entero Cantidad publico: AsignarCódigo(alfanumérico ↓ Cod) AsignarTipoBombona(alfanumérico ↓ TB) AsignarPrecio (real ↓ Pc) AsignarCantidad (entero ↓ Cant) alfanumérico SacarCodigo() alfanumérico SacarTipoBombona() real SacarPrecio() entero SacarCantidad() fin// Venta 10
  11. 11. //Definición de la estructura de la clase Vendedor clase Vendedor inicio privado: real AcumMF entero ContVenta real MayorVend publico: Inicial () real SacarAcumMF() entero SacarContVenta() real SacarMayorVend() Acumular(Venta↓ Vent) Contar () real CalcMayorVenta(Venta↓ Vent) real CalcPromedio () fin // Vendedor 11
  12. 12. //Métodos propios de la clase Vendedor Vendedor Inicial () inicio AcumMF ← 0 ContVenta ← 0 MayorVend ← 0 fin 12
  13. 13. real Vendedor SacarAcumMF() inicio retornar AcumMF fin entero Vendedor SacarContVenta() inicio retornar ContVenta fin Vendedor Acumular(Venta ↓ Vent) inicio AcumMF ← AcumMF +Vent. SacarPrecio()* Vent. SacarCantidad() fin Vendedor Contar() Inicio ContVenta ← ContVenta + 1 fin 13
  14. 14. real Vendedor CalcPromedio() inicio real Promedio si (contVenta =0) Promedio ← 0 sino Promedio ← AcumMF/ContVenta retornar Promedio fin 14
  15. 15. real Vendedor SacarMayorVend() inicio retornar MayorVend fin Vendedor CalcMayorVenta(Venta↓ Vent) inicio si (MayorVend< Vent. SacarPrecio()* Vent. SacarCantidad()) MayorVend ← Vent. SacarPrecio()* Vent. SacarCantidad() fin 15
  16. 16. //Definición de la estructura de la clase Distribuidora clase Distribuidora inicio privado: alfanumérico MayorVen real Mayor, AcumMontoF entero ContPequeña, ContGrande publico: Inicializar () alfanumérico SacarMayorVen() real SacarMayor() entero ContPequeña() entero ContGrande() real SacarAcumMontoF() DetMayor (Venta ↓ Vent, Vendedor ↓ Vend) AcumularTB(Venta ↓ Vent) DetMayorTipoBombona() AcumularMontoF(Vendedor ↓ Vend) fin//clase Distribuidora 16
  17. 17. //Método propio de la clase Distribuidora Distribuidora Inicializar () inicio Mayor ← 0 ContGrande ← 0 ContPequeña ← 0 AcumMontoF ← 0 fin 17
  18. 18. alfanumérico Distribuidora SacarMayorVen() inicio retornar MayorVen fin real Distribuidora SacarMayor() inicio retornar Mayor fin entero Distribuidora SacarContGrande() inicio retornar ContGrande fin entero Distribuidora SacarContPequeña inicio retornar ContPequeña fin real Distribuidora SacarAcumMontoF() inicio retornar AcumMontoF fin 18
  19. 19. Distribuidora DetMayor (Venta↓ Vent, Vendedor ↓ Vend) inicio si ( Mayor < Vend. SacarAcumMF) inicio Mayor ← Vend. SacarAcumMF() MayorVen ← Vent. SacarCodigo () fin fin Distribuidora AcumularTB (Venta↓ Vent) inicio si (Vent. SacarTipoBombona = “Grande”) ContGrande ← ContGrande + Vent. SacarCantidad() sino si (Vent. SacarTipoBombona = “Pequeña”) ContPequeña ← ContPequeña + Vent. SacarCantidad() fin 19
  20. 20. alfanumérico Distribuidora DetMayorTipoBombona() inicio alfanumérico Fact si ContGrande> ContPequeña) Fact ← “Las de tamaño grande” sino si ContGrande< ContPequeña) Fact ← “Las de tamaño pequeña” sino Fact ← “Las pequeñas y grandes se vendieron en igual cantidad” retornar Fact fin Distribuidora AcumularMontoF(Vendedor↓ Vend) inicio AcumMontoF ← AcumMontoF + Vend.SacarAcumMF() fin 20
  21. 21. f.u. (1) 1) Inicializar (Mayor, AcumMontoF, ContGrande, ContPequeña) f.m.(2) 2) Inicializar (AcumMF, ContVenta, Mayor Vend) f.m.(2) 3) Leer(Codigo) f.m.(3) 4) Leer (TipoBombona, Precio, Cantidad) f.m.(3) 5) Determinar mayor monto facturado por vendedor si (MayorVend<Precio*Cantidad) MayorVend ← Precio*Cantidad f.m.(3) 6) Acumular Monto Facturado: AcumMF AcumMF + Precio*Cantidad f.m.(3) 7) Contar venta: ContVenta  ContVenta + 1 f.m.(3) 8) Acumular según tipo de bombona si(TipoBombona=”Grande”) ContGrande← ContGrande + Cantidad sino si(TipoBombona=”Pequeña”) ContPequeña← ContPequeña + Cantidad f.m.(4) 9) Imprimir monto total facturado por vendedor (AcumMF) f.m.(4) 10) Calcula e imprime Promedio facturado del vendedor Promedio ← AcumMF/ContVenta f.m.(4) 11) Imprimir mayor monto facturado por vendedor (MayorVend) f.m.(4) 12) Determinar vendedor con mayor facturación si (Mayor<AcumMF) inicio Mayor ← AcumMF MayorVen ← Código fin f.m(4) 13) Acumular monto facturado por Distribuidora AcumMontoF ← AcumMontoF + AcumMF //Programa de aplicación principal() inicio Venta Vent Vendedor Vend Distribuidora Dist Dist.Inicializar() alfanumérico HayDato ← “S” repetir mientras HayDato = “S” inicio Vend. Inicial() InterfazEntradaCodigo(Vent) alfanumérico Resp ← “S” repetir mientras (Resp = “S”) inicio InterfazEntradaVenta(Vent) Vend. CalcMayorVenta(Vent) Vend.Acumular(Vent) Vend.Contar() Dist.AcumularTB(Vent) escribir “Procesar otra venta S/N)” leer Resp fin InterfazSalidaVenta() Dist.DetMayor(Vent, Vend) Dist.AcumularMontoF(Vend) escribir”Desea procesar otro vendedor S/N” leer HayDato fin InterfazSalidaDistribuidora(Dist) fin 21
  22. 22. f.u. (5) 14) Imprimir Código del vendedor con mayor facturación (MayorVen) f.u. (5) 15) Imprimir tipo de venta con mayor facturación si(ContGrande > ContPequeña) Mensaje ← “Las bombonas Grandes se vendieron en mayor cantidad” si(ContGrande< ContPequeña) Mensaje ← “Las bombonas Pequeñas se vendieron en mayor cantidad” sino Mensaje ← “Las bombonas Pequeñas y grandes se vendieron en igual cantidad” f.u. (5) 16) Imprimir el total facturado de la empresa (AcumMontoF) //Programa de aplicación principal() inicio Venta Vent Vendedor Vend Distribuidora Dist Dist.Inicializar() alfanumérico HayDato ← “S” repetir mientras HayDato = “S” inicio Vend. Inicial() InterfazEntradaCodigo(Vent) alfanumérico Resp ← “S” repetir mientras (Resp = “S”) inicio InterfazEntradaVenta(Vent) Vend. CalcMayorVenta(Vent) Vend.Acumular(Vent) Vend.Contar() Dist.AcumularTB(Vent) escribir “Procesar otra venta S/N)” leer Resp fin InterfazSalidaVenta() Dist.DetMayor(Vent, Vend) Dist.AcumularMontoF(Vend) escribir”Desea procesar otro vendedor S/N” leer HayDato fin InterfazSalidaDistribuidora(Dist) fin 22
  23. 23. InterfazEntradaCodigo(Venta ↑ Vent) inicio alfanumérico Cod, escribir “Ingrese el código del Vendedor” leer cod Vent. AsignarCodigo(Cod) fin InterfazEntradaVenta(Venta↑ Vent) inicio alfanumérico TB real Pc entero Cant escribir “Ingrese el tipo de bombona (Grande/Pequeña)” leer TB Vent.AsignarTipoBombona(TB) escribir “Ingrese el precio” leer Pc Vent.AsignarPrecio(Pc) escribir “Ingrese el precio” leer Cant Vent.AsignarCantidad(Cant) fin 23
  24. 24. InterfazSalidaVenta(Venta ↓ Vent, Vendedor ↓ Vend) inicio escribir”El monto total facturado por el Vendedor”, Vent. SacarCodigo (), “es de BsF.”, Vend. Sacar AcumMF() escribir “El promedio de lo facturado fue de BsF. “,Vend. CalcPromedio() escribir “El mayor monto facturado fue de BsF. “,Vend.SacarMayorVend() fin InterfazSalidaDistribuidora(Distribudora ↓ Dist) inicio escribir “El vendedor con mayores ventas fue”, Dist. SacarMayorVen() escribir ”El tipo de bombona que se vendió en mayor cantidad ”, Dist.DetMayorTipoBombona() escribir “El total facturado por la empresa fue de BsF”, Dist.SacarAcumMontoF() fin 24

×