2013-10-16 4 views
2

저는 C#을 처음 사용합니다. 나는이 프로그램을 연구하고 연구했지만 어디에도 가지 않고있다. 목표는 사용자가 숫자를 입력하도록하는 것입니다 (사용자 수는 몇 명입니까?). 0을 입력하면 프로그램이 중지되고 입력 된 최소 숫자, 입력 된 최대 숫자 및 입력 된 모든 숫자의 평균이 표시됩니다. 나는 어떤 오류도없고 나는 얻고있다. 누군가가 올바른 방향으로 나를 가리킬 수 있다면.C# - 최대, 최소 및 평균 표시

WriteLines가 반환됩니다

최저 수는 0 가장 높은 숫자가 0 평균은이다 : 0 수 : 각 실행에

int LOWEST =0; 
int HIGHEST=0; 
const int STOP = 0; 
double average = 0; 
int input; 

int count = 0; 
Console.WriteLine("Enter a number. You can end the program at anytime by entering 0"); 
input = Convert.ToInt32(Console.ReadLine()); 
while (input != STOP) 
{ 
    for (int i=0; input != STOP; i++) 
    { 
      Console.WriteLine("Enter a number. You can end the program at anytime by entering 0"); 
      input = Convert.ToInt32(Console.ReadLine()); 
      count++; 
      var Out = new int[] { input }; 
      LOWEST = Out.Min(); 
      HIGHEST = Out.Max(); 
      average = Out.Average(); 

      if ((input > LOWEST) || (input < HIGHEST)) 
      { 
       LOWEST = Out.Min(); 

      } 
      if (input > HIGHEST) 
      { 
       HIGHEST = Out.Max(); 
      } 
     } 
} 


Console.WriteLine("Lowest number is {0}", LOWEST); 
Console.WriteLine("Highest number is {0}", HIGHEST); 
Console.WriteLine("Average is {0}", average); 
Console.WriteLine("Count: {0}", count); 
Console.ReadLine(); 
+2

반환합니다. – DonBoitnott

+2

두 개의 루프는 필요 없지만 주 질문에 답하기 위해 매번 값을 재설정합니다. – Jonesopolis

답변

6

: 여기

5 내 코드입니다 당신은 새로운 정수 배열을 만들고 있습니다 :

var Out = new int[] { input }; 

이 줄 뒤에 Out은 하나의 항목, 마지막 입력을 포함합니다. Min, MaxAverage을 호출하면 마지막 값이 반환됩니다. 프로그램을 끝내면 0입니다.

때마다 새 배열을 만드는 대신 프로그램의 시작 부분에 List<int>을 만들고 각 입력을 추가하려고합니다. 그런 다음 전체 값 목록을 사용하여 Min, MaxAverage을 계산할 수 있습니다.

결국 당신은 이런 식으로 코드를 변경할 수 있습니다 루프 전에

const int STOP = 0; 
int input = -1; 

List<int> Out = new List<int>(); 

while (input != STOP) 
{ 
    Console.WriteLine("Enter a number. You can end the program at anytime by entering 0"); 
    input = Convert.ToInt32(Console.ReadLine()); 

    if (input == STOP) break; 

    Out.Add(input); 

} 


Console.WriteLine("Lowest number is {0}", Out.Min()); 
Console.WriteLine("Highest number is {0}", Out.Max()); 
Console.WriteLine("Average is {0}", Out.Average()); 
Console.WriteLine("Count: {0}", Out.Count); 
Console.ReadLine(); 
+0

솔루션이 작동하지만 추가 메모리가 필요합니다. 일반적인 경우에는 그리 좋지 않지만 학습을 할 때는 좋습니다. –

1

, 당신은 아마 Out 배열과 유사한 확장 가능한 데이터 구조의 List해야합니다. 이 독자들에게 운동 같은 소리 때문에

List<int> Out = new List<int>(); 

각 루프, 당신은

Out.Add(input); 

, 당신은 그 목록을 통과하고 모든 데이터 값에서 평균을 계산할 수 있습니다.


또는, 루프 전에, 당신이

int n = 0; 
int total = 0; 

각 루프를 선언 할 수 이러한에서

n += 1; 
total += input; 

을 쉽게 평균을 산출 할 수 있어야한다.

2
List<int> numbers = new List<int>(); 
     numbers.Add(10); 
     numbers.Add(30); 
     numbers.Add(20); 
     numbers.Add(0); 
     numbers.Max(); 
     numbers.Min(); 
     numbers.Average(); 

는 모든 시간을 재설정, 당신은 루프 밖에서 것들을 추적 할 필요가 30, 0, 15

관련 문제