C# Проверка значений в массиве

Я абсолютно застрял, поэтому я был бы признателен за некоторые советы, как я могу это сделать.

Прежде всего, вот мой код:

int i;
int x = 0;
int b = 0;
Console.Write("\nHow many stocks to enter price for:\t"); // enter size of array
int size = int.Parse(Console.ReadLine());
double[] arr = new double[size]; // size of array

// Accepting value from user 
for (i = 0; i < size; i++)
{
    Console.Write("\nEnter price for stock #{0}: \t", ++x);
    //Storing value in an array
    arr[i] = Convert.ToDouble(Console.ReadLine());
}

Console.WriteLine("\n\n");

//Printing the value on console
for (i = 0; i < size; i++)
{
    Console.WriteLine("Average Price: " + arr.Average() + " out of {0} stocks", x);
    Console.WriteLine("Minimum Price: " + arr.Min());
    Console.WriteLine("Number of stocks priced between 1.5-35: " + b);
}

Console.ReadLine();

Извините, я не очень уверен, как добавить цвета. Во всяком случае, я застрял в отображении количества акций, оцененных между 1,5 и 35. Здесь показано в этой строке: Console.WriteLine("Number of stocks priced between 1.5-35: "+ b);

По сути, он запрашивает количество акций для ввода цены. Это определит размер массива. Затем пользователь будет вводить цены на акции x много раз, как они установили в начале. Таким образом, вычисляя Среднюю цену акции, минимальную цену затем (на чем я застрял) количество акций, оцененных между 1,5 и 35.

Кроме того, я уверен, что мог бы сам в этом разобраться, но по какой-то причине он отображает результаты 2 раза каждый. Не слишком уверен в этом.

Любая помощь будет принята с благодарностью, так как я застрял на этом слишком долго.

2 ответа

Здравствуйте @nullcat, как подсказывает @Rob, вы должны исправить свой последний цикл. Кроме того, переменная b никогда не назначается, и поэтому у вас нет количества акций по цене от 1,5 до 35. Я добавил предложение, чтобы проверить, что

    for (i = 0; i < size; i++)
    {
        //Check if the stock on index i is between 1.5 and 35 and add 1 to the variable b
        if(arr[i] >=1.5 && arr[i] <=35.0){
             b++
        }
    }
    //Printing the value on console
    Console.WriteLine("Average Price: "+ arr.Average() + " out of {0} stocks", x);
    Console.WriteLine("Minimum Price: "+ arr.Min());
    Console.WriteLine("Number of stocks priced between 1.5-35: "+ b);
    Console.ReadLine();

Пожалуйста, проверьте это и дайте мне знать ваши комментарии

Чтобы обеспечить несколько более короткое альтернативное решение:

static void Main()
{
    int x = 0;
    Console.Write("\nHow many stocks to enter price for:\t"); 
    int size = int.Parse(Console.ReadLine());
    double[] arr = new double[size]; 

    for (int i = 0; i < size; i++)
    {
        Console.Write($"\nEnter price for stock #{++x}: \t");
        arr[i] = Convert.ToDouble(Console.ReadLine()); //Storing value in an array
    }

    Console.WriteLine($"\r\nAverage Price: {arr.Average()} out of {arr.Count()} stocks");
    Console.WriteLine($"Minimum Price: {arr.Min()}");
    Console.WriteLine($"Number of stocks priced between 1.5-35: " + 
        $"{arr.Where(v => v >= 1.5 && v < 35).Count()}");

    Console.ReadLine();
}
Другие вопросы по тегам