Problema con arrays en C#

Iniciado por Edu, 21 Noviembre 2010, 14:41 PM

0 Miembros y 1 Visitante están viendo este tema.

Edu

Bueno la cosa es q no se como hacer para llenar datos en un array pero esos datos son al azar y no se puede ni repetir ni ser 0, entonces yo lo q hice fue hacer un bucle for y una condicion entre el medio q diga q si el numero random  q se genero es distinto de 0 y distinto de array[i-1] (el index anterior) se guarde ese valor random en array

No se si me entienden ya q el codigo ahora no lo tengo pero es simple, y el error q me da es q el indice esta mal, pero me da error una vez compilado, esq la primera vez q hace esa condificion con el if, el index del array es 0 entonces cuando lee lo de i -1 quedaria Si es distinto de array[-1] y claro q esta mal, y no se como solucionar eso la verdad

jlrvpuma

#1
Antes que nada, yo usaría una lista genérica, puesto que no sabes el numero de numeros que coincidiran con las condiciones dadas, el array  en este caso esta desperdiciando espacio....
y, bueno, espero que sa de ayuda...como ya hiciste algo creo que esto no s hacerte la tarea...

public void SetArray()
{
  int[] valores = new int[50];
  Random ra = new Random(1432);//Con semilla
  int valor = 0;
  for(int i=0;i<valores.Lenght;i++)
  {
      valor = ra.Next();
      if(IsValid(valores,valor))
      {
valores[i] = valor; 
      }
  }
}

private bool IsValid(string[] valores, int valor)
{
   bool valid = true;
   if((valor == 0) || ((valor%2) > 0))
   {
      valid = false;
   }
   else
   {
    for(int i=0;i<valores.Lenght;i++)
    {
      if(valores[i] == valor)
      {
          valid = false;
          break;//ó i=valores.Lengh
      }
    }
  }
  return valid;
}

Edu

Ja y no me lo puedes completar ya q no entiendo bien, entiendo la idea de crear ese procedimiento para comprobar si se repite pero no me convence no se porq

jlrvpuma

#3
ahi esta...pero insisto, en vez de array yo usaría una lista genérica: List<int> ....lo del problema que tienes es que antes debes hacer una verificaciòn, si i-1 es >= a 0
......
UPDATED: Oops!!, no sé de dònde saqué que tampoco tenían  que ser impares...si quieres que también los impares se guarden remueve el OR : || (valor%2)>0

Edu

No lo pude usar, me falta seguir estudiando parece, gracias igual!