2017-04-21 4 views
0

Im Rahmen der Schule zu finden, eine meiner Aufgaben ist 10 Stücke von Code über 10 verschiedene Suchmuster, etc. Für diesenden maximalen Wert in einem Array

zu schreiben, ich brauche, um eine lineare Suche verwenden finde den höchsten und niedrigsten Wert in einem definierten Array und zeige dann an, wie oft dieser Wert gefunden wurde.

Heres den Code kam ich mit:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Maxvaluefinder 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var array = [1, 31, 10, 9, 420, -5, 77, 420, 300, 99]; //Sets up the array 
      var maxvalue = 0; //Establishes variables for maximum value and the counter of maximum value. 
      var maxvaluecount = 0; 

      for (i = 1; i < array.Length; i++) 
      { 
       if (array[i] > maxvalue) 
       { 
        maxvalue = array[i]; 
        maxvaluecount = 1; 
       } 
       if (array[i] == maxvalue) 
       { 
        maxvaluecount = maxvaluecount + 1; 
       } 
      } 

      Console.WriteLine("The highest number in this array was" + maxvalue + "which appeared a total of" + maxvaluecount + "times."); // Prints the final outcome. 
     } 
    } 
} 

Ab jetzt, ich bin nicht 100% sicher, wie die "for (i = 1; i < intArray.Length; i ++)" Teil funktioniert, und die 'i' Bits existieren nicht im aktuellen Kontext '

Bitte helfen?

Auch, etwas nicht verwandt: Wie teste ich den Code in Microsoft Visual Studio testen?

Thanks :)

+0

Ihre zweite Frage: Drücken Sie F5. Und Array-Indizes beginnen übrigens bei Null, also wollen Sie 'für (var i = 0; i

+1

@ O.Jones: Man sollte natürlich zuerst ein C# -Konsolenprojekt erstellen und diesen Code in eine Datei in diesem Projekt einfügen. –

+2

Wahrscheinlich nicht, was dein Lehrer wollte, aber es gibt auch nur 'array.Max()' .... – BradleyDotNET

Antwort

1

1. Frage: Sie benötigen eine i innerhalb for Schleife zu erklären, wenn Sie nur i Inneren verwenden möchten. Andernfalls müssen Sie i vor der for Schleife deklarieren.

for (var i = 1; i < array.Length; i++) 

Und das ist, wie Sie neue int Array erstellen

var array = new int[] { 1, 31, 10, 9, 420, -5, 77, 420, 300, 99}; 

2. Frage: VS gehen, erstellen Sie neue Konsole-Projekt, fügen Sie den Code unter main Funktion und drücken Sie F5

+1

Ich würde vorschlagen, ändern _Sie müssen Ihre "i" innerhalb for loop_ ** zu ** -> _you erklären sollten Sie Ihre "i" in der for loop_ –

+0

wow, das war einfach. Vielen Dank! Uh, noch eine letzte Sache, die Zeile "var array = [1, 31, 10, 9, 420, -5, 77, 420, 300, 99]; // Richtet das Array ein" verursacht einen Fehler am ersten [. Irgendeine Idee warum? : p (Zeile 13) –

+0

@QuinnosRomynos lesen Sie meine Antwort erneut im 2. Code –

1

Sie benötigen eine Variable deklarieren, bevor Sie sie verwenden können. Versuchen:

for (int i = 1; i < array.Length; i++){...} 

Eine for-Schleife funktioniert wie folgt:

  1. Sie eine Kontrollvariable deklarieren, in diesem Fall i ordnen Sie es den Startwert 1.
  2. Die für Loopchecks am Anfang jeder Schleife, wenn ihre Endebedingung erfüllt ist, im gegebenen Fall i < array.Length
  3. Am Ende jeder Schleife wird die Steuervariable gemäß dem letzten Teil Ihrer Syntax aktualisiert i++, die i = i+1

Auch äquivalent ist, bin ich nicht sicher, ob Sie wusste das, aber in C# Arrays sind nullbasierte indiziert, was bedeutet, dass das erste Element in einem Array hat tatsächlich den Index Null. So wollen Sie wahrscheinlich initialisieren: int i = 0

+0

Warum hast du' i' beginnend mit '1' und nicht' 0'? Diese Antwort ignoriert das erste Element im Array ... –

+0

Weil sein Beispiel es bei 1 hatte. Ich habe die Semantik nicht untersucht, nur die Syntax. Ich werde jedoch eine Erinnerung hinzufügen. –

+0

Ja, aber sein ursprünglicher Code war falsch. Die Frage besteht darin, den Maximalwert in einem Array zu finden, und Ihre Antwort ignoriert das erste Element. Warum nicht einfach die richtige Lösung posten? –

Verwandte Themen