using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Quiniela { class Program { //matriz multidimensional con la tabla de reduccion 7 dobles. Nos servirá para calcular las 16 quinielas simples static string[,] reduccion7Dobles = new string[16, 7] { { "1", "1", "1", "1", "1", "1", "1" }, { "1", "1", "1", "1", "x", "x", "x" }, { "x", "x", "x", "x", "1", "1", "1" }, { "x", "x", "x", "x", "x", "x", "x" }, { "x", "x", "1", "1", "x", "1", "1" }, { "x", "x", "1", "1", "1", "x", "x" }, { "1", "1", "x", "x", "x", "1", "1" }, { "1", "1", "x", "x", "1", "x", "x" }, { "x", "1", "x", "1", "1", "x", "1" }, { "x", "1", "x", "1", "x", "1", "x" }, { "1", "x", "1", "x", "1", "x", "1" }, { "1", "x", "1", "x", "x", "1", "x" }, { "x", "1", "1", "x", "1", "1", "x" }, { "x", "1", "1", "x", "x", "x", "1" }, { "1", "x", "x", "1", "1", "1", "x" }, { "1", "x", "x", "1", "x", "x", "1" } }; //matriz multidimensional, 16 filas y 15 columnas. De nuestra quiniela con 7 dobles, y la tabla de reduccion, //obtendremos 16 quinielas simples, con 15 pronosticos. static string[,] apuestas = new string[16, 15]; //metodo para representar en pantalla todos los elementos de una matriz de cadenas de 2 dimensiones static void PintaMatriz2Dimensiones(string[,] matrizmulti) { for (int i = 0; i < matrizmulti.GetLength(0); i++) { for (int j = 0; j < matrizmulti.GetLength(1); j++) { Console.WriteLine(" " + matrizmulti[i, j] + " "); } } } //metodo que representa en pantalla una matriz de numeros enteros static void PintaMatriz(int[] matriz) { for (int contador = 0; contador < matriz.Length; contador++) { Console.WriteLine("En la columna " + (contador + 1) + " : " + matriz[contador] + " aciertos."); } } //metodo con el cual comparamos las 16 quinielas simples, con el resultado final. Devuelve una cadena de enteros, donde guardamos // los aciertos de cada quiniela simple. static int[] ComparaMatrices(string[,] apuestas, string[] resultadoQuiniela) { int[] aciertos = new int[16]; int numeroAciertos = 0; for (int i = 0; i < apuestas.GetLength(0); i++) { for (int j = 0; j < apuestas.GetLength(1); j++) { if (apuestas[i, j] == resultadoQuiniela[j]) { numeroAciertos++; } if ((j == 13) && (numeroAciertos != 14)) //si en el pronostico 14 de una quiniela simple, tenemos menos de 14 aciertos, despreciamos el pronostico 15 { j++; } } aciertos[i] = numeroAciertos; numeroAciertos = 0; } return aciertos; } //Partiendo desde nuestra quiniela de 7 dobles, vamos insertando los valores correctos, en la matriz apuestas dependiendo // de lo que pone en la tabla de reduccion de 7 dobles. static string[,] Resolucion7Dobles(string[] miquiniela) { int numeroColumnaMatrizReduccion = 0; for (int i = 0; i < apuestas.GetLength(0); i++) { for (int j = 0; j < apuestas.GetLength(1); j++) { if ((miquiniela[j] == "1") || (miquiniela[j] == "x") || (miquiniela[j] == "2")) { apuestas[i, j] = miquiniela[j]; } else { if ((miquiniela[j] == "1x") && (reduccion7Dobles[i, numeroColumnaMatrizReduccion] == "1")) { apuestas[i, j] = "1"; } if ((miquiniela[j] == "1x") && (reduccion7Dobles[i, numeroColumnaMatrizReduccion] == "x")) { apuestas[i, j] = "x"; } if ((miquiniela[j] == "12") && (reduccion7Dobles[i, numeroColumnaMatrizReduccion] == "1")) { apuestas[i, j] = "1"; } if ((miquiniela[j] == "12") && (reduccion7Dobles[i, numeroColumnaMatrizReduccion] == "x")) { apuestas[i, j] = "2"; } if ((miquiniela[j] == "x2") && (reduccion7Dobles[i, numeroColumnaMatrizReduccion] == "1")) { apuestas[i, j] = "x"; } if ((miquiniela[j] == "x2") && (reduccion7Dobles[i, numeroColumnaMatrizReduccion] == "x")) { apuestas[i, j] = "2"; } numeroColumnaMatrizReduccion++; } } numeroColumnaMatrizReduccion = 0; } return apuestas; } static void Main(string[] args) { int nElementos = 15; string[] miQuiniela = new string[nElementos]; string[] resultadosQuiniela = new string[nElementos]; string entradaTeclado; int[] misaciertos = new int[16]; //Todo el codigo comentado, sirve para meterle directamente una quiniela por defecto con los resultados finales, para comprobar que //lo obtenido por los distintos metodos del programa sea correcto. //string[] miQuiniela = { "2", "x2", "x", "2", "2", "1", "12", "1x", "1x", "1", "1x", "12", "x", "1x", "2" }; //string[] resultadoFinalQuiniela = { "1", "x", "x", "x", "x", "1", "1", "1", "x", "1", "x", "x", "2", "1", "2" }; //string[] miQuiniela = { "1x", "1x", "1x", "1x", "1x", "1x", "1x", "1", "1", "1", "1", "1", "1", "1", "1" }; //string[] resultadoFinalQuiniela = { "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" }; //Resolucion7Dobles(miQuiniela); //misaciertos = ComparaMatrices(apuestas, resultadoFinalQuiniela); //PintaMatriz(misaciertos); Console.WriteLine("Introduzca su quiniela reducida de 7 dobles: "); for (int contador = 0; contador < miQuiniela.Length; contador++) { entradaTeclado = Console.ReadLine(); miQuiniela[contador] = entradaTeclado; } Console.Clear(); Console.WriteLine("Introduca Los resultados de la Quiniela de la semana"); for (int contador = 0; contador < resultadosQuiniela.Length; contador++) { entradaTeclado = Console.ReadLine(); resultadosQuiniela[contador] = entradaTeclado; } Console.Clear(); Resolucion7Dobles(miQuiniela); misaciertos = ComparaMatrices(apuestas, resultadosQuiniela); PintaMatriz(misaciertos); Console.Read(); } } }