Pre-Christmas sale Front-end week
Christmas are almost here! Get up to 20 % extra points for free! More info
Save up to 80 % on HTML & CSS + JavaScript e-learning! Only this week!

Discussion: Coloring a textbox with contain the maximum value of a two-dimensional array

Activities (4)
Avatar
Maria Rymar
Member
Avatar
Maria Rymar:20. November 5:21

I have a two-dimensional array of random integers that are in an array of textboxes. I found the maximum and brought it to Label1. Everything works. But I still need to colour the textbox in which this maximum is located. I had versions, but unsuccessful. Please help, who knows where the error is?
int max = Convert.ToInt32(t[0, 0].Text);
for (i = 0; i < x; i++)
{

for (j = 0; j < y; j++)
{
if (Convert.ToIn­t32(t[i, j].Text) > max)
{
max = Convert.ToInt32(t[i, j].Text);
t[i, j].BackColor = Color.Red;
label1.Text = "" + max;
}
}
}

 
Reply 20. November 5:21
Avatar
David Capka
ICT.social team
Avatar
Replies to Maria Rymar
David Capka:20. November 8:20

Hi Maria, your code makes sense to me. Which line is causing the error and what's the error message?

Up Reply 20. November 8:20
You can walk through a storm and feel the wind but you know you are not the wind.
Avatar
Maria Rymar
Member
Avatar
Replies to David Capka
Maria Rymar:20. November 8:27

Hi! Look, there is no error, but the program works incorrectly. I want to find the Textbox with the maximum value and colour it. But the program colours 3 and more textboxes and i dont now why. I need only one coloured textbox with the max value.

 
Up Reply 20. November 8:27
Avatar
David Capka
ICT.social team
Avatar
Replies to Maria Rymar
David Capka:22. November 11:42

I see :) The problem is you color the TextBox every time you find a new maximal value. It takes multiple guesses to find the maximal value and you can be sure there is no larger value only when both loops finish.

You need to use 2 loops to find the maximal value and then 2 different loops to color every TextBox having this value (coz there can be more of them). Your code should look something like this:

// find the maximum
int max = Convert.ToInt32(t[0, 0].Text);
for (i = 0; i < x; i++)
    for (j = 0; j < y; j++)
        if (Convert.ToInt32(t[i, j].Text) > max)
            max = Convert.ToInt32(t[i, j].Text);

// write the maximum
label1.Text = max.ToString();

// color all cells with the maximum
for (i = 0; i < x; i++)
    for (j = 0; j < y; j++)
        if (Convert.ToInt32(t[i, j].Text) == max)
            t[i, j].BackColor = Color.Red;
Edited 22. November 11:43
Up Reply 22. November 11:42
You can walk through a storm and feel the wind but you know you are not the wind.
To maintain the quality of discussion, we only allow registered members to comment. Sign in. If you're new, Sign up, it's free.

4 messages from 4 displayed.