Solved

I am trying to use arrays to calculate avg of scores disregarding min and max values.

Posted on 2008-09-29
3
231 Views
Last Modified: 2012-05-05
I tried to figure in the subtraction of the minimum and maximum value but the average does calculate correctly; I know I need to alter the (_scoreCount.Count); also, but I am not sure how. Can anyone help me with that?

class ScoreInput
    {

        private List<int> _scoreCount;
        private double _avg;
        private int _maxCnt;
        private int _minCnt;

        public ScoreInput()
        {
            _scoreCount = new List<int>();
        }

        public double Avg
        {
            get
            {
                CalculateAvg();
                return _avg;
            }
        }

        public double MaxCnt
        {
            get
            {
                DetermineMax();
                return _maxCnt;
            }
        }

        public double MinCnt
        {
            get
            {
                DetermineMin();
                return _minCnt;
            }
        }


        private void CalculateAvg()
        {
            int total = 0;
            foreach (int c in _scoreCount)
                total += (c - (_maxCnt + _minCnt));
            _avg = total / _scoreCount.Count;
        }

        private void DetermineMax()
        {
            int maxCntIndex = 0;
            for (int i = 1; i < _scoreCount.Count; i++)
                if (_scoreCount[i] > _scoreCount[maxCntIndex])
                    maxCntIndex = i;
            _maxCnt = _scoreCount[maxCntIndex];
        }

        private void DetermineMin()
        {
            int minCntIndex = 0;
            for (int i = 1; i < _scoreCount.Count; i++)
                if (_scoreCount[i] < _scoreCount[minCntIndex])
                    minCntIndex = i;
            _minCnt = _scoreCount[minCntIndex];
        }



        public void GetData()
        {
            Console.Write("Enter a Score: ");
            string inValue = Console.ReadLine();
            try
            {
                _scoreCount.Add(Convert.ToInt32(inValue));
            }
            catch (Exception e)
            {
            }
        }
    }


class Program
    {
        static void Main(string[] args)
        {
            ScoreInput scores = new ScoreInput();

            Console.WriteLine();
            Console.WriteLine();
            while (true)
            {
                scores.GetData();
                Console.WriteLine("The Average Score is {0}", scores.Avg);
                Console.WriteLine("The Max Score is {0}", scores.MaxCnt);
                Console.WriteLine("The Min Score is {0}", scores.MinCnt);
            }
        }
    }
0
Comment
Question by:jpmc_cmsops
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 

Author Comment

by:jpmc_cmsops
ID: 22595113
My mistake I need to calculate the Percentage of all scores minus the max and min values; for example:
With these scores {100, 95, 90, 80, 85} ; it would only calculate: ((95 + 90 + 80) / 100). Thank you for anyone's help.
0
 
LVL 2

Accepted Solution

by:
CAnuszczyk earned 500 total points
ID: 22595325
private void CalculateAvg()
        {
            int total = 0;
            foreach (int c in _scoreCount)
                total += c;

             total -= (_maxCnt + _minCnt );
            _avg = total / _scoreCount.Count;
        }

0
 

Author Closing Comment

by:jpmc_cmsops
ID: 31501134
Thank you!
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa‚Ķ
Suggested Courses

751 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question