2016-06-04 3 views
0

Назад с другим вопросом C#.Как выводить наименьшее число в массиве (также, чтобы увидеть, если я делаю это правильно)

Вот моя текущая задача:

Определение проблемы: компьютерная программа, которая позволяет читать ежедневные часы припаркованных клиентами. Есть 30 записей для часов парковки клиентов (целые числа), хранящихся в файле данных «hours.txt». Вы должны прочитать файл и сохранить данные в массиве. Рассчитайте самый высокий, самый низкий и средний дневной паркинг.

Образец данных: 30 парковочных часов: {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}

высокие часа парковки = 24

минимальных часов парковки = 1

Среднее количество часов парковки = 9,13

Общие задачи: Чтение файла данных «hours.txt» в массив данных типа целое

Найти наибольшее значение

Найти наименьшее значение

Рассчитайте среднее

Выходной массив часов, высокий, самый низкий и средний (отформатирован до 2 знаков после запятой)

Примечание: Поскольку тема «файлы» не распространяется до сеанса 6, пока объявите свой rray и присвоить номера, как показано ниже 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}; В сеансе 6 вам нужно будет изменить свой код, чтобы данные считывались из файла hours.txt.

Итак, из этого я собираюсь запустить программу, которая выплескивает средний, самый высокий и самый низкий из введенных часов. Обратите внимание, что в нем говорится использовать данные из текстового файла, но в дальнейшем говорит, что это для другой темы, поэтому я этого не сделал. Вместо этого я решил вручную ввести 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};

данные вводятся автоматически без ввода пользователем вручную цифр? Не уверен, правильно ли я прочитал эту задачу.

Второй вопрос - вот код, который я сделал. Я могу успешно вывести среднее и самое высокое значение, но, похоже, я не могу вывести наименьшее значение ниже 8 (т. Е. Значение 1 в нем). Как это исправить?

Мой код:

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(); 

     } 
    } 
} 

Спасибо заранее :)

+0

насчет мин() макс() и average() –

+1

Чтобы получить меньшее число, изменить меньшее число для условия цикла 'index> hours.length' to' index

+0

@ не повезло, что сработало минимум, большое вам спасибо! Любой комментарий по моему первому вопросу за шанс? – purplemonkeydishwasher

ответ

1

Для получения наименьшую изменение номера следующий фрагмент кода

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

Для

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

Красиво пятнистый! Акцент на изменение будет большим; это довольно сложно определить. – Sebivor

+0

Возможно, вы могли бы использовать комментарии на строке ниже изменения: '// измените это --- ^' и '// ... на это --- ^' – Sebivor

1

Просто использовать Linq методы расширения

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()); 

Выход

Среднее = 9.13

Наибольшее количество = 24

Самое низкое число = 1

+2

Это хорошо ... но у меня есть ощущение, что у профессора был другой урок; студенты должны знать, что происходит за кулисами Linq ... как только они поймут, что мы можем с уверенностью сказать «а вот для этого немного сахара-синтаксиса». – Sebivor