2016-05-20 8 views
-2

Я показываю три текстовых поля, которые получают только цифры. Пользователь может вводить значение в одном текстовом поле или два или три в любом порядке. Я хочу рассчитать среднее значение, введенное в эти текстовые поля на C#.Рассчитать среднее значение, основанное на количестве входов в C#

Например. если какое-либо одно текстовое поле содержит значения, среднее значение должно рассчитываться на основе 1 (значение/1).

, если два текстовое поле содержат значения, средний должны быть рассчитать с помощью 2 (value1 + value2)/2

, если три текстовых полей содержат значения, в среднем необходимо вычислить с 3 (значению1 + значение2 + value3)/3.

Кто-нибудь знает, как достичь этого, используя меньше кода?

+0

меньше кода, чем что? – BugFinder

+0

Да, я думаю, что все поймут концепцию среднего: D Но что вы пробовали до сих пор - где ваш код? – Jamiec

ответ

1

Самый простой подход - создать список, содержащий значения, и использовать структуру для вычисления среднего числа, содержащегося в этом списке.

На этапах, чтобы не кормить с ложечки копировать-pasteable код:

  1. Создать числовую переменную список
  2. Для каждого текстового поля:
    1. Проверьте, если текстовое поле содержит текст
    2. Если да, попробуйте разобрать его как номер
    3. Когда это удастся, добавьте его в список
  3. Вычислить среднее значение чисел в списке

Соответствующий материал для чтения:

+1

++ для того, чтобы не кормить ложкой, как я сделал, и все равно предоставил всю необходимую информацию;) –

+0

@ Спасибо! :) Ваш ответ LINQ/Fluent является succint и делает трюк, но может и не быть понятным для кого-то нового для программирования. ;) – CodeCaster

+0

Привет Спасибо за ответ. Этот список отлично работает – Lalitha

2

Вы можете поместить эти значения вмассив или список и используйте LINQ's Enumerable.Average. Или рассчитать его с помощью следующего запроса, который использует int.TryParse и предполагающую, что TextBoxes находятся в том же контейнере управления (как Panel или GroupBox):

int value = 0; 
double average = TextBoxPanel.Controls.OfType<TextBox>() // get all TextBoxes from this panel 
    .Where(t => int.TryParse(t.Text, out value)) // which Text is parsable to int 
    .Select(t => value)       // select the value that contains the parsed int 
    .Average();         // use Enumerable.Average to calculate the average 
Смежные вопросы