put Array of Label objects into Sort numbers?

Asked

Viewed 25 times

-2

I’m creating a Label array where the Label Input label creates 12 numeors from 1 to 25, random numbers in ascending order, an Input text where it receives 3 numbers that are added by the user, with the click of the button the 12 numbers generated plus the 3 typed in a Labelresults array of 15 numbers, until now Perfect, the Resultadolabel receives the 15 numbers, only that the numbers typed by the user are also random.

The question is: I am not able to sort after the user type the 3 numbers, someone would have an idea to help me?
I’m using a Bubblesort method, but I don’t get a result, Where am I wrong? part of the code below:

Label[] EntradaLabel = new Label[12];
Label[] EntradaText = new Label[3];
Label[] ResultadoLabel = new Label[15];

public frmTesteEnum() {
  InitializeComponent();
  GeraControles();
  gerador();

}

private void GeraControles() {

  int i, esquerda = 50, topo = 30;
  for (i = 0; i < 12; i++) {

    EntradaLabel[i] = new Label();
    EntradaLabel[i].Name = "" + i;
    EntradaLabel[i].Text = EntradaLabel[i].Name;
    EntradaLabel[i].Left = esquerda; //Defina a posição do controle no formulário
    EntradaLabel[i].Top = topo;
    EntradaLabel[i].Font = new Font("", 15, FontStyle.Bold);
    EntradaLabel[i].BorderStyle = BorderStyle.Fixed3D;
    this.Controls.Add(EntradaLabel[i]); // Adicione os controle ao formulário
    topo += (EntradaLabel[i].Height + 5);
  }

  for (i = 0; i < 3; i++) {

    EntradaText[i] = new Label();
    EntradaText[i].Name = " " + i;
    EntradaText[i].Text = EntradaText[i].Name;
    EntradaText[i].Left = esquerda;
    EntradaText[i].Top = topo;
    EntradaText[i].Font = new Font("", 15, FontStyle.Bold);
    EntradaText[i].BorderStyle = BorderStyle.Fixed3D;
    this.Controls.Add(EntradaText[i]);
    topo += EntradaText[i].Height + 5;

  }

  esquerda = 200;
  topo = 30;
  for (i = 0; i < 15; i++) {

    ResultadoLabel[i] = new Label();
    ResultadoLabel[i].Name = "label" + i;
    ResultadoLabel[i].Text = ResultadoLabel[i].Name;
    ResultadoLabel[i].Left = esquerda;
    ResultadoLabel[i].Top = topo;
    ResultadoLabel[i].Font = new Font("", 15, FontStyle.Bold);
    ResultadoLabel[i].BorderStyle = BorderStyle.FixedSingle;
    this.Controls.Add(ResultadoLabel[i]);
    topo += (ResultadoLabel[i].Height + 5);

  }

}

private void MostraResultado() {

  int i, ii = 0;

  for (i = 0; i < 12; i++)
    ResultadoLabel[i].Text = EntradaLabel[i].Text;
  for (; i < 15; i++)
    ResultadoLabel[i].Text = EntradaText[ii++].Text;

}

private void btnGerarNumeros_Click(object sender, EventArgs e) {
  //Array ResultadoLabel = Array.CreateInstance(typeof(int), new int[25]);

  //int[] ResultadoLabel = new int[25];
  if (EntradaText[0].Text == "" | EntradaText[1].Text == "" | EntradaText[2].Text == "") {
    MessageBox.Show("Por favor, escolha os tres numeros Fixos", "Adevertencia", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  } else {
    MostraResultado();

  }
}
private void gerador() {
  Aleatorios ale = new Aleatorios();
  int[] numerosSorteados = ale.GeradorNaoRepetidoss(12, 1, 25);

  Array.Sort(numerosSorteados);

  Control[] controles = EntradaLabel;

  for (int i = 0; i < controles.Length; i++) {

    int valor = numerosSorteados[i];
    controles[i].Text = valor + "";

  }
}

// criando o método bubblesort
public void bubblesort(int[] y) {
  for (int i = 1; i < y.Length; i++)
    for (int j = 0; j < y.Length - 1; j++)
      if (y[j] > y[j + 1])
        troca(y, j);
}
// algoritmo de troca de valores de variáveis:
public void troca(int[] g, int primeiro) {
  int aux;
  aux = g[primeiro];
  g[primeiro] = g[primeiro + 1];
  g[primeiro + 1] = aux;
}
  • 1

    already debug to entander what happens in your code? not understood pq uses a bubblesort if you have a Array.Sort in the code

  • Thanks for Feedback, Ricardo Pontual ,I’ve done with Array.Sort(Resultadolabel); but I see msg: Failed to compare two Elements in the array.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.