2016-06-04 3 views
0

다른 C# 질문으로 돌아 가기.배열에서 가장 낮은 수를 출력하는 방법 (이 작업을 올바르게 수행하는지 확인하는 방법)

문제 정의 :

여기 내 현재 작업의 컴퓨터 프로그램은 고객이 주차 매일 시간을 읽을 필요합니다. 데이터 파일 'hours.txt'에 저장된 고객의 주차 시간 (정수)에 대한 30 개의 항목이 있습니다. 파일을 읽고 배열에 데이터를 저장해야합니다. 일일 주차 시간의 최고, 최저 및 평균을 계산하십시오.

샘플 데이터 : 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

전체 작업 :,451,515,최대치 찾기 데이터 형식 정수

배열로 데이터 파일 'hours.txt'를 읽어

찾기 최저값

평균

출력을 시간들의 어레이를 계산, 최대, 최소 및 평균 (소수점 이하 2 자리)

참고 : "파일"이라는 주제는 세션 6까지 다루지 않으므로 지금은 다음과 같이 숫자를 지정하십시오. 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 자리를 입력하는 것을 선택했다. I 가정하는 첫번째 질문가있다

바로, 또는 방법이 있다는 것을 이용

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

1 무엇) 분() 최대 (약 및 average() 메소드 –

+1

낮은 숫자를 얻으려면, 루프 조건'index> hours.length'을 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

아마도 변경 사항 아래의 줄에 주석을 사용할 수 있습니다 :'// this --- ---'and'// ... this --- ---' – 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

낮은 번호 =

+2

이것은 멋지지만 ... 교수는 다른 교훈을 염두에 두었습니다. 학생들은 Linq의 무대 뒤에서 일어나는 일을 알아야합니다. 일단 그들이 그렇게 많이 이해한다면, 우리는 "여기에 문법 설탕이 있습니다."라고 안전하게 말할 수 있습니다. – Sebivor