Member 13049972 Ответов: 1

Простая вычислительная задача


У меня есть форма windows с 5 полями текстовых полей,

в зависимости от того, есть ли в поле отметка или нет, он вычислит среднее значение

Например, если первые два поля имели только метки, то

Среднее значение = расчет первых двух меток поля/2

averageHeader = 6-4(4 пустых поля);

но это не работает , в конце код тот же

Что я уже пробовал:

private void button10_Click(object sender, EventArgs e)
       {

           int s1, s2, s3, s4, s5, s6;
           int tot;

           int avgHeader = 6;


           if(textBoxS1.Text=="")
           {
               avgHeader = avgHeader - 1;
           }
           else
           {
               s1 = Convert.ToInt16(textBoxS1.Text);
               tot = tot + s1;


           }
           if(textBoxS2.Text=="")
           {
               avgHeader = avgHeader - 1;
           }
           else
           {
               s2 = Convert.ToInt16(textBoxS2.Text);
               tot=tot+s2;
           }
           if (textBoxS3.Text == "")
           {
               avgHeader = avgHeader - 1;
           }
           else
           {
               s3 = Convert.ToInt16(textBoxS3.Text);
               tot = tot + s3;
           }
           if (textBoxS4.Text == "")
           {
               avgHeader = avgHeader - 1;
           }
           else
           {
               s4 = Convert.ToInt16(textBoxS4.Text);
               tot = tot + s4;
           }
           if (textBoxS5.Text == "")
           {
               avgHeader = avgHeader - 1;
           }
           else
           {
               s5 = Convert.ToInt16(textBoxS5.Text);
               tot = tot + s5;
           }
           if (textBoxS6.Text == "")
           {
               avgHeader = avgHeader - 1;
           }
           else
           {
               s6 = Convert.ToInt16(textBoxS6.Text);
               tot = tot + s6;
           }

           int Average = tot / avgHeader;

           txtaverage.Text = Convert.ToString(Average);

       }

Tomas Takac

Вы не сказали, что не так с вашим кодом? Можете ли вы опубликовать ожидаемые и фактические результаты?

Member 13049972

end the end tot показывает подчеркивание красного цвета, поэтому он не работает

1 Ответов

Рейтинг:
9

Karthik_Mahalingam

пробовать

private void button10_Click(object sender, EventArgs e)
       {
           int tot = 0;
           int avgHeader = 0;
           TextBox[] allBox = new TextBox[] { textBoxS1, textBoxS2, textBoxS3, textBoxS4, textBoxS5, textBoxS6 };
           foreach (TextBox txt in allBox)
               if (txt.Text != "")
               {
                   int temp;
                   int.TryParse(txt.Text.Trim(), out temp);
                   tot += temp;
                   avgHeader++;
               }
           int Average = tot / avgHeader;
           txtaverage.Text = Average.ToString();
       }


с помощью LINQ

private void button10_Click(object sender, EventArgs e)
       {
           TextBox[] allBox = new TextBox[] { textBoxS1, textBoxS2, textBoxS3, textBoxS4, textBoxS5, textBoxS6 };
           var avg = allBox.Where(k => k.Text != "").Average(k => Convert.ToInt32(k.Text));
           txtaverage.Text = avg.ToString();
       }


Примечание: нечисловой текстовый формат должен быть проверен на переднем конце


Member 13049972

Спасибо братан это работает :)

Karthik_Mahalingam

добро пожаловать :)