2017-04-09 2 views
1

Ich versuche herauszufinden, wie viele Zahlen in einem Array zwischen den Werten von 1,5 bis 35 fallen. Ich bin schwer zu erarbeiten, welche Methode ich sollte dies erreichen. Ich dachte mir vielleicht eine für jeden eingebettete Schleife, aber je mehr ich darüber nachdenke, desto mehr hinterfrage ich diese Methode. Jede Hilfe würde geschätzt werden, wie ich das erreichen kann, ich werde meinen aktuellen Code unten veröffentlichen, wie ich bereits ausgearbeitet habe, wie man den Durchschnitts- und Mindestpreis für die Gleichung berechnet.Zählen, wie viele Zahlen in einem Array sind zwischen 1,5 - 35 C#

class Program 
{ 
    static void Main(string[] args) 
    { 
     read_stock_price(); 
    } 
    static void read_stock_price() 
    { 
     Console.Write("Enter how many stocks to enter price for: "); 
     int numStocks = Convert.ToInt32(Console.ReadLine()); 

     double[] arrayinput = new double[numStocks]; 

     for (int i = 0; i < numStocks; ++i) 
     { 
      Console.Write("Enter price for stock number: "); 
      arrayinput[i] = Convert.ToDouble(Console.ReadLine()); 
     } 

     double sum = arrayinput.Sum(); 
     double average = sum/numStocks; 

     Console.WriteLine("Average price: {0} out of {1} stocks", average, numStocks); 
     Console.WriteLine("Minimum price: {0}", arrayinput.Min()); 

    } 
} 

Antwort

1

Kürzester Weg ist Enumerable.Count

var count = arrayinput.Count(x => 1.5 < x && x < 35.0); 
+0

Großartig, das sieht tatsächlich wie der kürzeste Weg aus! Das wird großartig funktionieren, könntest du mir erklären, was dieser Teil des Codes in meiner Situation bedeutet, ich will nur weiter verstehen, was es bedeutet? Vielen Dank! x => 1,5

+1

Es ist ein Lambda-Ausdruck: https://msdn.microsoft.com/en-us/library/bb397687.aspx. Es ist im Grunde eine Funktion, die ein doppeltes 'x' empfängt und den booleschen Wert (1.5 vyrp

2

Sie können LINQ anstelle von for-each verwenden. Filtern Sie zuerst das Array und zählen Sie dann die Elemente.

var count = arrayinput 
    .Where(x => 1.5 <= x && x <= 35.0) 
    .Count(); 
0

wenn wir angenommen arrayinput Ihr gefüllter Array ist, können Sie diese verwenden:

 double[] arrayinput = new double[numStocks]; 

    double[] filteredArray = arrayinput.Where(p => p > 1.5 && p < 3.5).ToArray(); 

    int count = filteredArray.Count(); 

dieser Code Filter Array mit Wert zwischen 1,5 & 3.5.

+0

Vielleicht bedeutete Sie 'filteredArray.Count()' statt 'arrayinput.Count()'? Und da es sich um ein Array handelt, ist es besser, length zu verwenden: 'filteredArray.Length'. – vyrp

+0

ja :) danke. –

Verwandte Themen