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