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 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()); }