2016-06-04 11 views
0

Zurück mit einer anderen C# -Frage.Wie die niedrigste Zahl im Array ausgeben (auch um zu sehen, ob ich das richtig mache)

Hier ist meine aktuelle Aufgabe:

Problem Definition: Ein Computerprogramm ist erforderlich, um die täglichen Stunden von den Kunden geparkt zu lesen. Es gibt 30 Einträge für die Parkzeiten des Kunden (Integer-Nummern), die in der Datendatei 'hours.txt' gespeichert sind. Sie müssen die Datei lesen und die Daten in einem Array speichern. Berechnen Sie die höchsten, niedrigsten und durchschnittlichen Tagesparkstunden.

Beispieldaten: 30 Parkzeiten: {8, 24, 9, 7, 6, 12, 10, 11, 23, 1, 2, 9, 8, 8, 9, 7, 9, 15 , 6, 1, 7, 6, 12, 10, 11, 23, 1, 2, 9, 8}

Höchstpark Stunden = 24

niedrigste Park Stunden = 1

Durchschnittliche Parkzeiten = 9.13

Allgemeine Aufgaben: Lesen der Datendatei ‚hours.txt‘ in ein Array von Datentyp Integer

höchsten Wert Finden

finden niedrigsten Wert

Berechne den Mittelwert

Ausgang des Arrays von Stunden, am höchsten, niedrigste und durchschnittliche (auf 2 Dezimalstellen formatiert)

Hinweis: Da das Thema "Dateien" nicht bis Sitzung 6 abgedeckt ist, für jetzt, deklarieren Sie ein rray und vergeben Sie die Nummern wie unten gezeigt int [] StundenArray = {8, 24, 9, 7, 6, 12, 10, 11, 23, 1, 2, 9, 8, 8, 9, 7, 9, 15 , 6, 1, 7, 6, 12, 10, 11, 23, 1, 2, 9, 8}; In Sitzung 6 müssen Sie Ihren Code ändern, damit die Daten aus der Datei hours.txt gelesen werden.

Also von diesem entnehme ich, ich brauche ein Programm ausführen, die die durchschnittliche ausspuckt, am höchsten und am niedrigsten der Stunden eingegeben. Beachten Sie, dass es heißt, die Daten aus einer Textdatei zu verwenden, aber weiter unten heißt es, dass es sich um ein anderes Thema handelt, also habe ich das nicht getan. Stattdessen hatte ich mich dafür entschieden, die 30 Ziffern manuell einzugeben.

Erste Frage nehme ich an, ist wahr, oder es gibt eine Möglichkeit, dass die Verwendung

int [] hoursArray = {8, 24, 9, 7, 6, 12, 10, 11 , 23, 1, 2, 9, 8, 8, 9, 7, 9, 15, 6, 1, 7, 6, 12, 10, 11, 23, 1, 2, 9, 8};

Die Daten werden automatisch eingegeben, ohne dass der Benutzer die Ziffern manuell eingeben muss. Ich bin mir nicht sicher, ob ich die Aufgabe richtig lese.

Zweite Frage ist hier ist der Code, den ich getan habe. Ich kann den Durchschnittswert und den höchsten Wert erfolgreich ausgeben, aber ich bin nicht in der Lage, den niedrigsten Wert unter 8 (dh den Wert von 1 dort) auszugeben. Wie behebe ich das?

Mein Code:

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

namespace IntsArray 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      int[] hours;   
      hours = new int[30];  

      int[] hoursArray = { 8, 24, 9, 7, 6, 12, 10, 11, 23, 1, 2, 9, 8, 8, 9, 7, 9, 15, 6, 1, 7, 6, 12, 10, 11, 23, 1, 2, 9, 8 }; 
      hours[0] = 8; 
      hours[1] = 24; 
      hours[2] = 9; 
      hours[3] = 7; 
      hours[4] = 6; 
      hours[5] = 12; 
      hours[6] = 10; 
      hours[7] = 11; 
      hours[8] = 23; 
      hours[9] = 1; 
      hours[10] = 2; 
      hours[11] = 9; 
      hours[12] = 8; 
      hours[13] = 8; 
      hours[14] = 9; 
      hours[15] = 7; 
      hours[16] = 9; 
      hours[17] = 15; 
      hours[18] = 6; 
      hours[19] = 1; 
      hours[20] = 7; 
      hours[21] = 6; 
      hours[22] = 12; 
      hours[23] = 10; 
      hours[24] = 11; 
      hours[25] = 23; 
      hours[26] = 1; 
      hours[27] = 2; 
      hours[28] = 9; 
      hours[29] = 8; 

      for (int index = 0; index < hours.Length; index++) 
      { 
       Console.Write("Enter your hours: "); 
       hours[index] = int.Parse(Console.ReadLine()); 
      } 

      int total = 0;  
      double average = 0; 
      for (int index = 0; index < hours.Length; index++) 
      { 
       total = total + hours[index]; 
      } 

      average = (double)total/hours.Length; 
      Console.WriteLine("Average = " + average.ToString("N2")); 


      int high = hours[0]; 

      for (int index = 1; index < hours.Length; index++) 
      { 
       if (hours[index] > high) 
       { 
        high = hours[index]; 
       } 
      } 

      Console.WriteLine("Highest number = " + high); 


      int low = hours[0]; 

      for (int index = 0; index > hours.Length; index++) 
      { 
       if (hours[index] < low) 
       { 
        low = hours[index]; 
       } 
      } 

      Console.WriteLine("Lowest number = " + low); 
      Console.ReadKey(); 

     } 
    } 
} 

Vielen Dank im Voraus :)

+0

Was min() max() und durchschnittliche() Methoden –

+1

Um niedrigere Zahl zu bekommen, ändere die untere Zahl für die Schleifenbedingung 'index> hours.length' zu' index

+0

@ un-glücklich, das für das Minimum funktioniert hat, vielen Dank! Irgendein Kommentar zu meiner ersten Frage pro Chance? – purplemonkeydishwasher

Antwort

1

Für die niedrigste Zahl Änderung des Codes folgende Stück bekommen

for (int index = 0; index > hours.Length; index++) 
    { 
     if (hours[index] < low) 
     { 
      low = hours[index]; 
     } 
    } 
    Console.WriteLine("Lowest number = " + low); 

Um

for (int index = 0; index < hours.Length; index++) 
    { 
     if (hours[index] < low) 
     { 
      low = hours[index]; 
     } 
    } 
    Console.WriteLine("Lowest number = " + low); 
+1

Schön entdeckt! Die Betonung der Veränderung wäre groß; Es ist ziemlich schwer zu erkennen. – Sebivor

+0

Vielleicht könntest du Kommentare in der Zeile unter der Änderung verwenden: '// ändere das --- ^' und '// ... dazu --- ^' – Sebivor

1

einfach benutze die Linq Erweiterungsmethoden

int[] hours = { 8, 24, 9, 7, 6, 12, 10, 11, 23, 1, 2, 9, 8, 8, 9, 7, 9, 15, 6, 1, 7, 6, 12, 10, 11, 23, 1, 2, 9, 8 }; 
Console.WriteLine("Average = {0:F2}", hours.Average()); 
Console.WriteLine("Highest number = {0}", hours.Max()); 
Console.WriteLine("Lowest number = {0}", hours.Min()); 

Ausgabe

Durchschnitt = 9,13

Höchste Anzahl = 24

niedrigste Anzahl = 1

+2

Das ist nett ... aber ich habe das Gefühl Professor hatte eine andere Lektion im Sinn; Die Schüler müssen wissen, was hinter den Kulissen der Linq passiert ... Sobald sie das verstanden haben, können wir mit Sicherheit sagen "und hier ist ein bisschen Syntax Zucker dafür". – Sebivor