internal static string ObtenerLinea(int cantidad, decimal area, decimal perimetro, Idioma idioma, ITraducirForma ITraducirForma) { if (cantidad > 0) { var traduccion = String.Empty; traduccion = ITraducirForma.TraducirForma(cantidad, idioma); return(idioma.getLinea(cantidad, traduccion, area, perimetro)); } return(string.Empty); }
public Impresion(List <FormaGeometricaBase> formas, Idioma idioma) { _formas = formas; _idioma = idioma; InicializarTextos(); }
public abstract string TraducirForma(int cantidad, Idioma idioma);
public static string Imprimir(IList <FormaGeometrica> formas, Idioma idioma) { var sb = new StringBuilder(); if (!formas.Any()) { sb.Append($"<h1>{idioma.getListaVaciaFormas()}</h1>"); } else { // Hay por lo menos una forma // HEADER sb.Append($"<h1>{idioma.getListaFormasHeader()}</h1>"); var numeroCuadrados = 0; var numeroCirculos = 0; var numeroTriangulos = 0; var areaCuadrados = 0m; var areaCirculos = 0m; var areaTriangulos = 0m; var perimetroCuadrados = 0m; var perimetroCirculos = 0m; var perimetroTriangulos = 0m; foreach (var forma in formas) { if (forma.GetType() == typeof(Cuadrado)) { numeroCuadrados++; areaCuadrados += forma.CalcularArea(); perimetroCuadrados += forma.CalcularPerimetro(); } if (forma.GetType() == typeof(Circulo)) { numeroCirculos++; areaCirculos += forma.CalcularArea(); perimetroCirculos += forma.CalcularPerimetro(); } if (forma.GetType() == typeof(TrianguloEquilatero)) { numeroTriangulos++; areaTriangulos += forma.CalcularArea(); perimetroTriangulos += forma.CalcularPerimetro(); } } sb.Append(ObtenerLinea(numeroCuadrados, areaCuadrados, perimetroCuadrados, idioma, new Cuadrado())); sb.Append(ObtenerLinea(numeroCirculos, areaCirculos, perimetroCirculos, idioma, new Circulo())); sb.Append(ObtenerLinea(numeroTriangulos, areaTriangulos, perimetroTriangulos, idioma, new TrianguloEquilatero())); // FOOTER sb.Append($"{idioma.getTotal()}:<br/>"); sb.Append(numeroCuadrados + numeroCirculos + numeroTriangulos + " " + idioma.getFormas() + " "); sb.Append(idioma.getPerimetro() + (perimetroCuadrados + perimetroTriangulos + perimetroCirculos).ToString("#.##") + " "); sb.Append("Area " + (areaCuadrados + areaCirculos + areaTriangulos).ToString("#.##")); } return(sb.ToString()); }
private static string Totales(Dictionary <string, Resultado> resultadoDeFiguras, Idioma idioma, List <FiguraGeometrica> formas) { StringBuilder sb = new StringBuilder(); decimal perimetroTotal = 0; decimal areaTotal = 0; foreach (var figura in resultadoDeFiguras.Values) { sb.Append(ObtenerLinea(figura, idioma)); perimetroTotal += figura.PerimetroTotal; areaTotal += figura.AreaTotal; } sb.Append(idioma.Total).Append(":<br/>"); sb.Append(formas.Count).Append(" ").Append(idioma.Formas).Append(" "); sb.Append(idioma.Perimetro).Append(" ").Append((perimetroTotal).ToString("#.##")).Append(" "); sb.Append(idioma.Area).Append(" ").Append((areaTotal).ToString("#.##")); return(sb.ToString()); }
private static string ObtenerLinea(Idioma idioma, IEnumerable <FormaGeometrica> listaDeFormas, decimal perimetro, decimal area) { string nombreDeLaFigura = listaDeFormas.Count() == 1 ? idioma.Traducir(listaDeFormas.First().Nombre()): idioma.Traducir(listaDeFormas.First().NombrePlural()); return($"{listaDeFormas.Count()} {nombreDeLaFigura} | {idioma.Traducir("Area")} {area:#.##} | {idioma.Traducir("Perimetro")} {perimetro:#.##} <br/>"); }
public override void AsignarNombresAForma(Idioma idioma) { nombreFormaSingular = idioma.ImprimirNombreCuadrado(1); nombreFormaPlural = idioma.ImprimirNombreCuadrado(2); }
private static string TraducirForma(string figura, int cantidad, Idioma idioma) { return(cantidad == 1 ? idioma.TraduccionFiguras[figura] : idioma.TraduccionFiguras[figura + "s"]); }
public static string Imprimir(List <FormaGeometrica> formas, int idioma) { var sb = new StringBuilder(); if (!formas.Any()) { //FORMAS VACIO sb.Append(Idioma.formas_Lista(idioma)); } //AUNQUE SEA UNA FORMA else { sb.Append(Idioma.formas_Reporte(idioma)); //CALCULO FORMAS var numeroCuadrados = 0; var areaCuadrados = 0m; var perimetroCuadrados = 0m; var numeroCirculos = 0; var areaCirculos = 0m; var perimetroCirculos = 0m; var numeroTriangulos = 0; var areaTriangulos = 0m; var perimetroTriangulos = 0m; var numeroTrapecio = 0; var areaTrapecio = 0m; var perimetroTrapecio = 0m; var numeroRectangulo = 0; var areaRectangulo = 0m; var perimetroRectangulo = 0m; for (var i = 0; i < formas.Count; i++) { if (formas[i].Tipo == Cuadrado) { numeroCuadrados++; areaCuadrados += Calculos.CalcularArea(formas[i], formas[i]._lado, formas[i]._bamayor, formas[i]._bamenor, formas[i]._alturas, formas[i]._brectan); perimetroCuadrados += Calculos.CalcularPerimetro(formas[i], formas[i]._lado, formas[i]._bamayor, formas[i]._bamenor, formas[i]._alturas, formas[i]._brectan); } if (formas[i].Tipo == Circulo) { numeroCirculos++; areaCirculos += Calculos.CalcularArea(formas[i], formas[i]._lado, formas[i]._bamayor, formas[i]._bamenor, formas[i]._alturas, formas[i]._brectan); perimetroCirculos += Calculos.CalcularPerimetro(formas[i], formas[i]._lado, formas[i]._bamayor, formas[i]._bamenor, formas[i]._alturas, formas[i]._brectan); } if (formas[i].Tipo == TrianguloEquilatero) { numeroTriangulos++; areaTriangulos += Calculos.CalcularArea(formas[i], formas[i]._lado, formas[i]._bamayor, formas[i]._bamenor, formas[i]._alturas, formas[i]._brectan); perimetroTriangulos += Calculos.CalcularPerimetro(formas[i], formas[i]._lado, formas[i]._bamayor, formas[i]._bamenor, formas[i]._alturas, formas[i]._brectan); } if (formas[i].Tipo == Trapecio) { numeroTrapecio++; areaTrapecio += Calculos.CalcularArea(formas[i], formas[i]._lado, formas[i]._bamayor, formas[i]._bamenor, formas[i]._alturas, formas[i]._brectan); perimetroTrapecio += Calculos.CalcularPerimetro(formas[i], formas[i]._lado, formas[i]._bamayor, formas[i]._bamenor, formas[i]._alturas, formas[i]._brectan); } if (formas[i].Tipo == Rectangulo) { numeroRectangulo++; areaRectangulo += Calculos.CalcularArea(formas[i], formas[i]._lado, formas[i]._bamayor, formas[i]._bamenor, formas[i]._alturas, formas[i]._brectan); perimetroRectangulo += Calculos.CalcularPerimetro(formas[i], formas[i]._lado, formas[i]._bamayor, formas[i]._bamenor, formas[i]._alturas, formas[i]._brectan); } } sb.Append(Calculos.ObtenerLinea(numeroCuadrados, areaCuadrados, perimetroCuadrados, Cuadrado, idioma)); sb.Append(Calculos.ObtenerLinea(numeroCirculos, areaCirculos, perimetroCirculos, Circulo, idioma)); sb.Append(Calculos.ObtenerLinea(numeroTriangulos, areaTriangulos, perimetroTriangulos, TrianguloEquilatero, idioma)); sb.Append(Calculos.ObtenerLinea(numeroTrapecio, areaTrapecio, perimetroTrapecio, Trapecio, idioma)); sb.Append(Calculos.ObtenerLinea(numeroRectangulo, areaRectangulo, perimetroRectangulo, Rectangulo, idioma)); //----------------- // FOOTER sb.Append("TOTAL:<br/>"); sb.Append(numeroCuadrados + numeroCirculos + numeroTriangulos + numeroTrapecio + numeroRectangulo + " " + Idioma.formas_tipos(idioma) + " "); sb.Append(Idioma.formas_Total(idioma) + (perimetroCuadrados + perimetroTriangulos + perimetroCirculos + perimetroTrapecio + perimetroRectangulo).ToString("#.##") + " "); sb.Append("Area " + (areaCuadrados + areaCirculos + areaTriangulos + areaTrapecio + areaRectangulo).ToString("#.##")); } return(sb.ToString()); }
/// <summary> /// Genera un reporte de formas en el idioma especificado /// </summary> /// <param name="formas">Lista de formas</param> /// <param name="idioma">Idioma</param> /// <returns></returns> public static string Imprimir(List <FormaGeometrica> formas, Idioma idioma) { StringBuilder sb = new StringBuilder(); string codigoIdioma = ObtenerCodigoIdioma(idioma); List <FormaModel> datosDeFormasEnLista = new List <FormaModel>(); Dictionary <string, int> cantidadDeFormas = new Dictionary <string, int>(); try { //No hay formas if (!formas.Any()) { return(string.Format("<h1>{0}</h1>", Traductor.Traducir("Lista vacía de formas!", codigoIdioma))); } //Hay al menos una forma sb.Append(string.Format("<h1>{0}</h1>", Traductor.Traducir("Reporte de Formas", codigoIdioma))); foreach (IForma forma in formas) { //Obtengo el dato de una forma y lo guardo en un modelo FormaModel unaForma = new FormaModel(); unaForma.TipoForma = forma.GetType().Name; //Nombre unaForma.Perimetro = forma.ObtenerPerimetro; //Perímetro unaForma.Area = forma.ObtenerArea; //Área //Busco el índice de la forma en la lista por tipo int index = datosDeFormasEnLista.FindIndex(a => a.TipoForma == unaForma.TipoForma); //Si existe, sumo su perimetro y area para obtener el total de ese tipo de forma if (index > -1) { datosDeFormasEnLista[index].Perimetro += unaForma.Perimetro; datosDeFormasEnLista[index].Area += unaForma.Area; } //Sino, la agrego a la lista else { datosDeFormasEnLista.Add(unaForma); } //Verifico si la key con el tipo de forma no exista y la agrego. if (!cantidadDeFormas.ContainsKey(unaForma.TipoForma)) { cantidadDeFormas.Add(unaForma.TipoForma, 1); } //Si existe, sumo uno en esa key (+1 forma) else { cantidadDeFormas[unaForma.TipoForma] += 1; } } //Armo el detalle del reporte foreach (FormaModel forma in datosDeFormasEnLista) { sb.Append( string.Format("{0} {1} | {2}: {3} | {4}: {5} |<br/>", cantidadDeFormas[forma.TipoForma], cantidadDeFormas[forma.TipoForma] > 1 ? Traductor.Traducir(forma.TipoForma + "s", codigoIdioma) : Traductor.Traducir(forma.TipoForma, codigoIdioma), Traductor.Traducir("Perímetro", codigoIdioma), forma.Perimetro.ToString("#.##"), Traductor.Traducir("Área", codigoIdioma), forma.Area.ToString("#.##") ) ); } // FOOTER sb.Append(string.Format("{0} :<br/>", Traductor.Traducir("total", codigoIdioma).ToUpper())); sb.Append( string.Format("{0} {1}", cantidadDeFormas.Sum(x => x.Value), cantidadDeFormas.Sum(x => x.Value) > 1 ? Traductor.Traducir("Formas", codigoIdioma) : Traductor.Traducir("Forma", codigoIdioma) ) ); sb.Append(Traductor.Traducir(" Perímetro", codigoIdioma) + ": " + formas.Where(x => x is IForma).Sum(x => ((IForma)x).ObtenerPerimetro).ToString("#.##")); sb.Append(Traductor.Traducir(" Área", codigoIdioma) + ": " + formas.Where(x => x is IForma).Sum(x => ((IForma)x).ObtenerArea).ToString("#.##")); return(sb.ToString()); } catch (Exception e) { throw e; } }
public static string Imprimir(List <FormasG> formas, Idioma idioma) { var sb = new StringBuilder(); if (!formas.Any()) { sb.Append(idioma.traducir("listaVacia")); } else { // Hay por lo menos una forma // HEADER sb.Append(idioma.traducir("Cabecera")); #region variablesFormas var numeroCuadrados = 0; var numeroCirculos = 0; var numeroTriangulos = 0; var numeroTrapecios = 0; var numeroRectangulos = 0; var areaCuadrados = 0m; var areaCirculos = 0m; var areaTriangulos = 0m; var areaTrapecios = 0m; var areaRectangulos = 0m; var perimetroCuadrados = 0m; var perimetroCirculos = 0m; var perimetroTriangulos = 0m; var perimetroTrapecios = 0m; var perimetroRectangulos = 0m; #endregion for (var i = 0; i < formas.Count; i++) { if (formas[i].GetType().Equals(typeof(Cuadrado))) { numeroCuadrados++; areaCuadrados += formas[i].area; perimetroCuadrados += formas[i].perimetro; } if (formas[i].GetType().Equals(typeof(Circulo))) { numeroCirculos++; areaCirculos += formas[i].area; perimetroCirculos += formas[i].perimetro; } if (formas[i].GetType().Equals(typeof(TrianguloEquilatero))) { numeroTriangulos++; areaTriangulos += formas[i].area; perimetroTriangulos += formas[i].perimetro; } if (formas[i].GetType().Equals(typeof(Trapecio))) { numeroTrapecios++; areaTrapecios += formas[i].area; perimetroTrapecios += formas[i].perimetro; } if (formas[i].GetType().Equals(typeof(Rectangulo))) { numeroRectangulos++; areaRectangulos += formas[i].area; perimetroRectangulos += formas[i].perimetro; } } //Arreglo por error en muchos decimales #region redondeo areaCuadrados = RedondearNumeroGrande(areaCuadrados); areaCirculos = RedondearNumeroGrande(areaCirculos); areaTriangulos = RedondearNumeroGrande(areaTriangulos); areaTrapecios = RedondearNumeroGrande(areaTrapecios); areaRectangulos = RedondearNumeroGrande(areaRectangulos); perimetroCuadrados = RedondearNumeroGrande(perimetroCuadrados); perimetroCirculos = RedondearNumeroGrande(perimetroCirculos); perimetroTriangulos = RedondearNumeroGrande(perimetroTriangulos); perimetroTrapecios = RedondearNumeroGrande(perimetroTrapecios); perimetroRectangulos = RedondearNumeroGrande(perimetroRectangulos); #endregion sb.Append(ObtenerLinea(numeroCuadrados, areaCuadrados, perimetroCuadrados, numeroCuadrados > 1 ? idioma.traducir("Cuadrados") : idioma.traducir("Cuadrado"), idioma)); sb.Append(ObtenerLinea(numeroCirculos, areaCirculos, perimetroCirculos, numeroCirculos > 1 ? idioma.traducir("Circulos") : idioma.traducir("Circulo"), idioma)); sb.Append(ObtenerLinea(numeroTriangulos, areaTriangulos, perimetroTriangulos, numeroTriangulos > 1 ? idioma.traducir("Triangulos") : idioma.traducir("Triangulo"), idioma)); sb.Append(ObtenerLinea(numeroTrapecios, areaTrapecios, perimetroTrapecios, numeroTrapecios > 1 ? idioma.traducir("Trapecios") : idioma.traducir("Trapecio"), idioma)); sb.Append(ObtenerLinea(numeroRectangulos, areaRectangulos, perimetroRectangulos, numeroRectangulos > 1 ? idioma.traducir("Rectangulos") : idioma.traducir("Rectangulo"), idioma)); // FOOTER sb.Append(idioma.traducir("TOTAL") + ":<br/>"); sb.Append(numeroCuadrados + numeroCirculos + numeroTriangulos + numeroTrapecios + numeroRectangulos + " " + (idioma.traducir("formas")) + " "); sb.Append(idioma.traducir("Perimetro") + " " + (perimetroCuadrados + perimetroTriangulos + perimetroCirculos + perimetroTrapecios + perimetroRectangulos).ToString("#.##") + " "); sb.Append(idioma.traducir("Area") + " " + (areaCuadrados + areaCirculos + areaTriangulos + areaTrapecios + areaRectangulos).ToString("#.##")); } return(sb.ToString()); }
private static string ObtenerLinea(int cantidad, decimal area, decimal perimetro, string tipo, Idioma idioma) { if (cantidad > 0) { return($"{cantidad} {tipo} | " + idioma.traducir("Area") + " " + area + " | " + idioma.traducir("Perimetro") + " " + perimetro + " <br/>"); } return(string.Empty); }
public abstract void AsignarNombresAForma(Idioma idioma);