fork download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace Recetas.Ch01
  6. {
  7. public class ReporteTiempo
  8. {
  9. public int DiaSemana
  10. {
  11. get;
  12. set;
  13. }
  14.  
  15. public int TemperaturaDiaria
  16. {
  17. get;
  18. set;
  19. }
  20.  
  21. public int TemperaturaPromedio
  22. {
  23. get;
  24. set;
  25. }
  26. }
  27.  
  28. public class PronosticoTiempo
  29. {
  30. private int[] temperaturas = { 13, 19, 23, 7, 23, 17, 7 };
  31. IList<string> diasSemana = new List<string>() {"Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo" };
  32.  
  33. public ReporteTiempo this[string dia]
  34. {
  35. get
  36. {
  37. // Índice del día de la semana
  38. int indiceDia = diasSemana.IndexOf(dia);
  39.  
  40. return new ReporteTiempo() { DiaSemana = indiceDia, TemperaturaDiaria = temperaturas[indiceDia], TemperaturaPromedio = CalcularTemperatura(indiceDia) };
  41. }
  42. set
  43. {
  44. temperaturas[diasSemana.IndexOf(dia)] = value.TemperaturaDiaria;
  45. }
  46. }
  47.  
  48. private int CalcularTemperatura(int diaSemana)
  49. {
  50. int[] tmp = new int[diaSemana + 1];
  51. Array.Copy( temperaturas, 0, tmp, 0, diaSemana + 1);
  52.  
  53. return (int) tmp.Average();
  54. }
  55. }
  56.  
  57. public class Prueba
  58. {
  59. public static void Main()
  60. {
  61. // Creación pronóstico tiempo
  62. PronosticoTiempo pronostico = new PronosticoTiempo();
  63.  
  64. // Uso del indixer para el pronóstico
  65. string[] dias = {"Lunes", "Martes", "Jueves", "Sábado"};
  66.  
  67. foreach (string dia in dias)
  68. {
  69. ReporteTiempo reporte = pronostico[dia];
  70.  
  71. Console.WriteLine ("Día: {0}, Índice día: {1}, Temperatura: {2}, Promedio: {3}", dia, reporte.DiaSemana, reporte.TemperaturaDiaria, reporte.TemperaturaPromedio);
  72. }
  73. }
  74. }
  75. }
Success #stdin #stdout 0.04s 34008KB
stdin
Standard input is empty
stdout
Día: Lunes, Índice día: 0, Temperatura: 13, Promedio: 13
Día: Martes, Índice día: 1, Temperatura: 19, Promedio: 16
Día: Jueves, Índice día: 3, Temperatura: 7, Promedio: 15
Día: Sábado, Índice día: 5, Temperatura: 17, Promedio: 17