2014-09-30 3 views
0

поэтому я создаю очень простую программу на C# (мой первый). Он должен делать в среднем числа X. Вместо того, чтобы записывать все это вручную, это будет намного лучше сделано процедурно (я не уверен, что это даже слово). В основном, как я сделал с «количеством» в приведенном ниже примере. Я мог бы просто разделить его на 2 (в данном случае). Но вместо этого у меня есть переменная, которая увеличивается с каждой новой записью, поэтому программа будет работать независимо от количества записей.простая процедурная математическая программа в C#

То же самое, что мне нужно делать с переменными «первая», «вторая» и т. Д. Мне нужна переменная, которая будет динамически изменяться в зависимости от количества записей. Это должно быть алгоритмом покойного торта, но это мой первый день с C#, и я не могу этого сделать (а именно потому, что мне не хватает знания синтаксиса).

 double first; 
     double second; 
     int amount = 0; 
     double result; 

     Console.Write("Write your first number"); 
     first = int.Parse(Console.ReadLine()); 
     ++amount; 

     Console.Write("Write your second number"); 
     second = int.Parse(Console.ReadLine()); 
     ++amount; 

     result = (first + second)/amount; 

     Console.Write("The average of your numbers is: " + result); 

Благодаря

+0

Так что, если вы не нуждаетесь в цикле, что именно ваш вопрос? – BradleyDotNET

+1

В вашем вопросе отсутствует вопрос, но я предполагаю, что вы ищете цикл 'do..while' /' while'. – Mephy

+0

@Mephy точно, это тот! Извините, я не мог вспомнить имя ... так что бы это было на C#? – Mike94

ответ

1

Вот суть того, что я думаю, что вы хотите. Я буду использовать псевдокод, чтобы дать вам возможность изучить C#:

create a list of numbers 
output prompt 
read input line 

while the input line had a value 
    parse the input value 
    add the parsed value to the list of numbers 
    output prompt 
    read input line 

calculate the sum of the values divided by the length of the list 
output the calculated average 
+1

Вместо того чтобы иметь дело со списком и суммировать его позже, вы можете просто сохранить общее количество. Не похоже, что вам нужно держать номера. –

+0

@CoreyOgburn: Это правильный подход. На практике я часто обнаруживаю, что код легче отлаживать, тестировать единицы измерения, поддерживать и адаптироваться к новым требованиям, если я отделяю коллекцию ввода от вычислений. – StriplingWarrior

+0

@ StriplingWarrior точно! Это то, что мне нужно сделать. Но даже с циклом (как указано в комментариях выше) у меня есть некоторые проблемы. Цикл может только увеличивать длину списка. Мне нужно, чтобы каждое значение было динамически назначено переменной (временный контейнер для одного значения за раз, просто для выполнения текущего добавления). – Mike94

0

Я думаю, что вы после того, как в среднем возвратных степенных?

class Program 
{ 
    static void Main(string[] args) 
    { 
     //Compute Average Recursively: 

     int average_count = 0; 
     double average = 0; 

     average = RecursiveAverage(average, ref average_count, 1); 
     average = RecursiveAverage(average, ref average_count, 2); 
     average = RecursiveAverage(average, ref average_count, 3); 
     average = RecursiveAverage(average, ref average_count, 4); 

     Console.WriteLine(average); //2.5 
    } 

    private static double RecursiveAverage(double previous, ref int average_count, double next) 
    { 
     average_count += 1; 
     return ((average_count - 1.0)/(average_count)) * previous + (1.0/(average_count)) * next; 
    } 

} 

См: http://people.revoledu.com/kardi/tutorial/RecursiveStatistic/Time-Average.htm

Update: Хранить обновления в среднем на неопределенное время (или до тех пор, пока average_count становится слишком большой, чтобы хранить без BigInteger) без необходимости запоминать все номера ...

while (true) 
{ 
    var next = int.Parse(Console.ReadLine()); 
    average = RecursiveAverage(average, ref average_count, next); 
    Console.WriteLine("Average is now: " + average); 
} 
+0

Не совсем рекурсивный средний, что мне нужно здесь. Хотя это отличный пример (и очень полезная небольшая программа), поэтому я тоже попробую это сделать. Благодаря! – Mike94

+0

Зачем ему после рекурсивного среднего? Какое преимущество это предлагает над любым другим, более простым решением? – StriplingWarrior

+0

Я прочитал «среднее значение X чисел», чтобы указать на неизвестное число в среднем. И учитывая, что он запрашивает ввод пользователя; он не должен предполагать неизвестный размер ввода. –

Смежные вопросы