Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to divide an odd number to get x integers?

If I want to divide an odd number(for example 7) with 2 to 7, and I want a list of some integers.
if I divine 7 with 4, I should get {1, 2, 2, 2}, or if I divine 5 with 3, I want to get {1, 2, 2}.

How can I do this?

        static List<int> OddNumDiv(int oddnum, int divnum)
        {
            List<int> result = new List<int>();

            result.Add(oddnum / divnum);
            int sum = 0;

            for (int i = 0; i < divnum - 2; i++)
            {
                sum += (int)Math.Round((double)oddnum / divnum, MidpointRounding.AwayFromZero);
                result.Add((int)Math.Round((double)oddnum / divnum, MidpointRounding.AwayFromZero));
            }
            result.Add(oddnum - sum);

            return result;
        }

        static void Main(string[] args)
        {
            List<int> _7d4 = OddNumDiv(7, 4);
        }

This returs with {1, 2, 2, 3} and not what I need {1, 2, 2, 2}

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

Don’t add rounded values to the sum. Always calculate the quotient and remainder separately for each division.

Below is the complete code for your desired solution.

public static List<int> OddNumDiv(int oddnum, int divnum)
    {
        List<int> result = new List<int>();
        int quotient = oddnum / divnum; // Find the quotient when oddnum is divided by divnum
        int remainder = oddnum % divnum; // Find the remainder when oddnum is divided by divnum

        // Add quotient to the result list divnum-remainder times
        for (int i = 0; i < divnum - remainder; i++)
        {
            result.Add(quotient);
        }

        // Add quotient+1 to the result list remainder times
        for (int i = 0; i < remainder; i++)
        {
            result.Add(quotient + 1);
        }

        return result;
    }

Here’s the relevant link to learn more about the modulo operator (%): https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/modulus-operator

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading