private string ObtenerLinea(Formas tipo) { int i = (int)tipo; int cantidad = _cantidades[i]; if (cantidad == 0) { return(string.Empty); } return($"{cantidad} {TraducirForma(tipo, cantidad)} | " + $"{_texto.Area} {_areas[i]:#.##} | " + $"{_texto.Perimetro} {_perimetros[i]:#.##} <br/>"); }
protected override string TraducirForma(Formas tipo, int cantidad) { switch (tipo) { case Formas.Cuadrado: return(cantidad == 1 ? "Cuadrado" : "Cuadrados"); case Formas.TrianguloEquilatero: return(cantidad == 1 ? "Triángulo" : "Triángulos"); case Formas.Circulo: return(cantidad == 1 ? "Círculo" : "Círculos"); } return(string.Empty); }
public override string ObtenerLinea(int cantidad, decimal area, decimal perimetro, Formas tipo) { return((cantidad > 0) ? $"{cantidad} {TraducirForma(tipo, cantidad)} | Area {area:#.##} | Perimeter {perimetro:#.##} <br/>" : string.Empty); }
public abstract string ObtenerLinea(int cantidad, decimal area, decimal perimetro, Formas tipo);
protected abstract string TraducirForma(Formas tipo, int cantidad);
public static string Imprimir(List <FormaGeometrica> formas, int idioma) { var sb = new StringBuilder(); var cuerpo = Metodos.CargarLista(); Formas _forma = new Formas(); String _header = null; for (var j = 0; j < cuerpo.Count; j++) { if (idioma == cuerpo[j].Valoridioma) { _header = cuerpo[j].header; break; } } if (!formas.Any()) { sb.Append("<h1>" + _header + "!</h1>"); /* if (idioma == Castellano) * sb.Append("<h1>Lista vacía de formas!</h1>"); * else * sb.Append("<h1>Empty list of shapes!</h1>");*/ } else { // Hay por lo menos una forma // HEADER sb.Append("<h1>" + _header + "!</h1>"); /*if (idioma == Castellano) * sb.Append("<h1>Reporte de Formas</h1>"); * else * // default es inglés * sb.Append("<h1>Shapes report</h1>");*/ var areaGenerico = 0m; var perimetroGenerico = 0m; var numeroCuadrados = 0; var numeroCirculos = 0; var numeroTriangulos = 0; var numeroRectangulos = 0; var numeroTrapecios = 0; var areaCuadrados = 0m; var areaCirculos = 0m; var areaTriangulos = 0m; var areaRectangulos = 0m; var areaTrapecios = 0m; var perimetroCuadrados = 0m; var perimetroCirculos = 0m; var perimetroTriangulos = 0m; var perimetroRectangulos = 0m; var perimetroTrapecios = 0m; for (var i = 0; i < formas.Count; i++) { for (var j = 0; j < cuerpo.Count; j++) { if (formas[i].Tipo == cuerpo[j].ValorCuerpo && idioma == cuerpo[j].Valoridioma) { areaGenerico = formas[i].CalcularArea(); perimetroGenerico = formas[i].CalcularPerimetro(); } } if (formas[i].Tipo == Cuadrado) { numeroCuadrados++; areaCuadrados += formas[i].CalcularArea(); perimetroCuadrados += formas[i].CalcularPerimetro(); } if (formas[i].Tipo == Circulo) { numeroCirculos++; areaCirculos += formas[i].CalcularArea(); perimetroCirculos += formas[i].CalcularPerimetro(); } if (formas[i].Tipo == TrianguloEquilatero) { numeroTriangulos++; areaTriangulos += formas[i].CalcularArea(); perimetroTriangulos += formas[i].CalcularPerimetro(); } if (formas[i].Tipo == Rectangulo) { numeroRectangulos++; areaRectangulos += areaGenerico; perimetroRectangulos += perimetroGenerico; } if (formas[i].Tipo == Trapecio) { numeroTrapecios++; areaTrapecios += areaGenerico; perimetroTrapecios += perimetroGenerico; } } /*sb.Append(ObtenerLinea(numeroCuadrados, areaCuadrados, perimetroCuadrados, Cuadrado, idioma)); * sb.Append(ObtenerLinea(numeroCirculos, areaCirculos, perimetroCirculos, Circulo, idioma)); * sb.Append(ObtenerLinea(numeroTriangulos, areaTriangulos, perimetroTriangulos, TrianguloEquilatero, idioma));*/ sb.Append(ObtenerLinea(numeroCuadrados, areaCuadrados, perimetroCuadrados, Cuadrado, idioma, cuerpo)); sb.Append(ObtenerLinea(numeroCirculos, areaCirculos, perimetroCirculos, Circulo, idioma, cuerpo)); sb.Append(ObtenerLinea(numeroTriangulos, areaTriangulos, perimetroTriangulos, TrianguloEquilatero, idioma, cuerpo)); sb.Append(ObtenerLinea(numeroRectangulos, areaRectangulos, perimetroRectangulos, Rectangulo, idioma, cuerpo)); sb.Append(ObtenerLinea(numeroTrapecios, areaTrapecios, perimetroTrapecios, Trapecio, idioma, cuerpo)); // FOOTER sb.Append("TOTAL:<br/>"); /*sb.Append(numeroCuadrados + numeroCirculos + numeroTriangulos + " " + (idioma == Castellano ? "formas" : "shapes") + " "); * sb.Append((idioma == Castellano ? "Perimetro " : "Perimeter ") + (perimetroCuadrados + perimetroTriangulos + perimetroCirculos).ToString("#.##") + " "); * sb.Append("Area " + (areaCuadrados + areaCirculos + areaTriangulos).ToString("#.##"));*/ for (var i = 0; i < formas.Count; i++) { for (var j = 0; j < cuerpo.Count; j++) { if (idioma == cuerpo[j].Valoridioma && formas[i].Tipo == cuerpo[j].ValorCuerpo) { sb.Append(numeroCuadrados + numeroCirculos + numeroTriangulos + numeroRectangulos + numeroTrapecios + " " + _forma.formas + " "); sb.Append(_forma.perimetro + (perimetroCuadrados + perimetroTriangulos + perimetroCirculos + perimetroRectangulos + perimetroTrapecios).ToString("#.##") + " "); sb.Append(_forma.area + (areaCuadrados + areaCirculos + areaTriangulos + areaRectangulos + areaTrapecios).ToString("#.##")); } } } } return(sb.ToString()); }
/*private static string TraducirForma(int tipo, int cantidad, int idioma) * { * switch (tipo) * { * case Cuadrado: * if (idioma == Castellano) return cantidad == 1 ? "Cuadrado" : "Cuadrados"; * else return cantidad == 1 ? "Square" : "Squares"; * case Circulo: * if (idioma == Castellano) return cantidad == 1 ? "Círculo" : "Círculos"; * else return cantidad == 1 ? "Circle" : "Circles"; * case TrianguloEquilatero: * if (idioma == Castellano) return cantidad == 1 ? "Triángulo" : "Triángulos"; * else return cantidad == 1 ? "Triangle" : "Triangles"; * } * * return string.Empty; * }*/ private static string TraducirForma(int cantidad, Formas p_forma) { return(cantidad == 1 ? p_forma.forma : p_forma.formas); }