简体   繁体   中英

Write a program that reads N and then continuously read integers and check if there are odd or even until odd and even number equals N

This is what I tried:

using System;

namespace OddAndEvenNumbers
{
    class Program
    {
        static void Main(string[] args)
        {
            int requiredOddAndEvenNumbers = Convert.ToInt32(Console.ReadLine());
            int oddNumbersCount = 0;
            int evenNumbersCount = 0;
            int n = Convert.ToInt32(Console.ReadLine());
            while (oddNumbersCount <= requiredOddAndEvenNumbers || evenNumbersCount <= requiredOddAndEvenNumbers)
            {
                if (n % 2 == 0)
                {
                    evenNumbersCount++;
                }
                else if (n % 2 != 0)
                {
                    oddNumbersCount++;
                }
            }
            Console.WriteLine(evenNumbersCount + " " + oddNumbersCount);
            Console.ReadLine();
        }
    }
}

I don't know why it doesn't work. The program should stop when odd numbers and even number equals N.

You never update n so the loop will never exit
So evenNumbersCount and oddNumbersCount will never count up

using System;

namespace OddAndEvenNumbers
{
    class Program
    {
        static void Main(string[] args)
        {
            int requiredOddAndEvenNumbers = Convert.ToInt32(Console.ReadLine());
            int oddNumbersCount = 0;
            int evenNumbersCount = 0;
            int n = Convert.ToInt32(Console.ReadLine());
            while (oddNumbersCount <= requiredOddAndEvenNumbers || evenNumbersCount <= requiredOddAndEvenNumbers)
            {
                if (n % 2 == 0)
                {
                    evenNumbersCount++;
                }
                else if (n % 2 != 0)
                {
                    oddNumbersCount++;
                }
                n++;
            }
            Console.WriteLine(evenNumbersCount + " " + oddNumbersCount);
            Console.ReadLine();
        }
    }
}

It seems you've forgotten to get new number inside the loop. It keeps checking the first number ItThe while loop works until the Odd + Even numbers are equal to n .

int requiredOddAndEvenNumbers = Convert.ToInt32(Console.ReadLine());
int oddNumbersCount = 0;
int evenNumbersCount = 0;
int n = 0;

while ((oddNumbersCount + evenNumbersCount) < requiredOddAndEvenNumbers)
{
    n = Convert.ToInt32(Console.ReadLine());
    if (n % 2 == 0)
    {
        evenNumbersCount++;
    }
    else if (n % 2 != 0)
    {
        oddNumbersCount++;
    }
}

Console.WriteLine("evenNumbersCount: {0}", evenNumbersCount);
Console.WriteLine("oddNumbersCount: {0}", oddNumbersCount);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM