/// <summary> /// Calcula los campos que aparecen el el footer de la tabla de resultados /// Calcula media, mediana, perfectos, ceros de cada problema, día y general /// así como número de estados y número de competidores /// </summary> public void calcularNumeros() { Problema prob; estados = Resultados.obtenerEstadosParticipantes(numero, tipoOlimpiada); participantes = MiembroDelegacion.obtenerParticipantes(numero, tipoOlimpiada); int[] problemasDia = new int[3]; // Calculamos las estadisticas por dia y por competencia y las guardamos en la base for (int i = 1; i <= 2; i++) { problemasDia[i] = Problema.obtenerCantidadDeProblemas(numero, tipoOlimpiada, i); prob = Resultados.calcularNumeros(numero, tipoOlimpiada, dia: i, totalProblemas: problemasDia[i]); prob.guardar(guardarTodo: false); List <Problema> lista = Problema.obtenerProblemasDeOMI(numero, tipoOlimpiada, i); foreach (Problema p in lista) { if (p != null) { Problema pp = Resultados.calcularNumeros(numero, tipoOlimpiada, p.dia, p.numero); p.media = pp.media; p.mediana = pp.mediana; p.perfectos = pp.perfectos; p.ceros = pp.ceros; p.guardar(guardarTodo: false); } } } problemasDia1 = problemasDia[1]; problemasDia2 = problemasDia[2]; prob = Models.Resultados.calcularNumeros(numero, tipoOlimpiada, totalProblemas: problemasDia1 + problemasDia2); prob.guardar(guardarTodo: false); // Guardar en la base this.guardarDatos(); }