Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Loteria en C#

Iniciado por rogegaviria, 14 de Noviembre de 2008, 02:24:13 PM

« anterior - próximo »

rogegaviria

Saludos desde Colombia



Estoy haciendo una loteria...basicamente es hacer dos matrices con numeros aleatorios. el sistema me debe generar un numero cada vez y poner en 0 cuando lo encuentre en alguna de las dos matrices, gana la matriz que primero se llene. adjunto el codigo que tengo, pero la tabla no se me llena con los numeros.



si alguien sabe...agradeceria mucho la ayuda







using System;
class matrices
{
public int[,] matriz;
//static matrices.Main

public void llenar_matriz_aleatoria(int n)
{
matriz = new int[n, n];
Random rnd = new Random();
int aleatorio = rnd.Next(1, 99);
int contador = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (matriz[i, j] != aleatorio)
{
contador++;
}
else
{
i = 0;
j = 0;
contador = 0;
aleatorio = rnd.Next(1, 99);
}
if (n == contador)
matriz[i, j] = aleatorio;
}
}

}

public void llenar_matriz_manual(int n)
{
matriz = new int[n, n];
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
{
Console.WriteLine("digite numero en la posición " + i + "," + j + ":");
matriz[i, j] = Convert.ToInt32(Console.ReadLine());
}

}
public void imprimir_matriz(int n){
for (int i = 0; i < n; i++)
{
Console.WriteLine("
");
for (int j = 0; j < n; j++)
{
Console.Write(matriz[i, j]+" ");
}
}
}
public static void Main(String[] args)
{
matrices matriz1 = new matrices();
matrices matriz2 = new matrices();
matriz1.llenar_matriz_aleatoria(5);
matriz2.llenar_matriz_aleatoria(5);
matriz1.imprimir_matriz(5);
Console.WriteLine();
matriz2.imprimir_matriz(5);
Console.ReadKey();
}
}


blau

Ese algoritmo es un tanto raaaaroooo, raaarooo

No lo pillo, exactamente, ¿que es lo que quieres hacer?


shephiroth

La verdad q ese codigo es muy raro. Antes de entrar en detalles te dire que los indices en los for no deberias cambiarlos NUNCA por dentro. Si has de tocar los indices entonces es mejor usar while.

Luego, esto ya son costumbre propias, pero si pones un limite en los numeros random tienes q poner una precondicion a n (sino por muy buen codigo q pongas este terminaria en un bucle sin retorno). Por ultimo, si quieres q los numeros no se repitan, en vez de buscar si el random actual ya se esta usando deberias utilizar un array para saber que numeros han salido hasta ahora. En un poco de codigo se verá mas claro:


public void llenar_matriz_aleatoria(int n) {
//precondicion
if (n>=10) {
Console.WriteLine("Error de precondicion. N="+n);
return;
}//if n>=10
//preparamos array
boolean numeros_aparecidos[100];
for (int i=0;i<100;i++) numeros_aparecidos[i]=false;
//variables a usar
matriz = new int[n, n];
Random rnd = new Random();
int aleatorio;
//bucles para rellenar
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
do {
aleatorio = rnd.Next(1,99);
} while (numeros_aparecidos[aleatorio]);
matriz[i,j] = aleatorio;
numeros_salidos[aleatorio] = true;
}//for int j
}//for int i
}//funcion llenar_matriz_aleatoria






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.