public static string Imprimir(List <FormaGeometrica> formas, Idioma idioma) { var sb = new StringBuilder(); if (!formas.Any()) { sb.Append("<h1>" + idioma.TextoListaVacia() + "</h1>"); } else { List <LineaReportePorFigura> lineasPorFigura = new List <LineaReportePorFigura>(); sb.Append("<h1>" + idioma.TextoCabecera() + "</h1>"); LineaReportePorFigura nuevaLineaDeFormaGeometrica; bool figuraEncontrada; foreach (FormaGeometrica miFroma in formas) { figuraEncontrada = false; foreach (LineaReportePorFigura linea in lineasPorFigura) { if (linea.FormaGeometricaDeLinea.IdTipo == miFroma.IdTipo) { linea.Resultados.Cantidad++; linea.Resultados.ResultadoArea += miFroma.CalcularArea(); linea.Resultados.ResultadoPerimetro += miFroma.CalcularPerimetro(); figuraEncontrada = true; break; } } /* * var result = (LineaReportePorFigura) (from item in lineasPorFigura where item.FormaGeometricaDeLinea.IdTipo == miFroma.IdTipo select item); * if (result == null) * { * ResultadosDeFigura nuevoResultado = new ResultadosDeFigura(); * nuevoResultado.Cantidad = 1; * nuevoResultado.ResultadoArea = miFroma.CalcularArea(); * nuevoResultado.ResultadoPerimetro = miFroma.CalcularPerimetro(); * nuevaLineaDeFormaGeometrica = new LineaReportePorFigura(miFroma, nuevoResultado); * lineasPorFigura.Add(nuevaLineaDeFormaGeometrica); * } * else * { * result.Resultados.Cantidad++; * result.Resultados.ResultadoArea += miFroma.CalcularArea(); * result.Resultados.ResultadoPerimetro += miFroma.CalcularPerimetro(); * } */ if (figuraEncontrada == false) { ResultadosDeFigura nuevoResultado = new ResultadosDeFigura(); nuevoResultado.Cantidad = 1; nuevoResultado.ResultadoArea = miFroma.CalcularArea(); nuevoResultado.ResultadoPerimetro = miFroma.CalcularPerimetro(); nuevaLineaDeFormaGeometrica = new LineaReportePorFigura(miFroma, nuevoResultado); lineasPorFigura.Add(nuevaLineaDeFormaGeometrica); } } int totalFiguras = 0; decimal totalAreas = 0; decimal totalPerimietros = 0; foreach (LineaReportePorFigura linea in lineasPorFigura) { sb.Append("<br>"); totalFiguras += linea.Resultados.Cantidad; totalAreas += linea.Resultados.ResultadoArea; totalPerimietros += linea.Resultados.ResultadoPerimetro; sb.Append(idioma.TextoLinea(linea.Resultados, linea.FormaGeometricaDeLinea)); } sb.Append("<br>"); sb.Append(idioma.TextoPie(totalFiguras, totalAreas, totalPerimietros)); } return(sb.ToString()); }
public LineaReportePorFigura(FormaGeometrica _formaGeometricaDeLinea, ResultadosDeFigura _resultados) { formaGeometricaDeLinea = _formaGeometricaDeLinea; resultados = _resultados; }