Чтение символов из одной строки, включая пробелы, а не из новой строки - PullRequest
0 голосов
/ 11 ноября 2018

IN C # Я пытаюсь решить проблему: Напишите программу, которая проверяет, равно ли произведение нечетных элементов произведению четных элементов.

Осталось только: Во второй строке вы получите N чисел, разделенных пробелами. Я не могу заставить это работать. Я пробовал с Сплит, но он продолжает ломаться. Может кто-нибудь помочь?

Пример:

Input
5 2 1 1 6 3
Выход

да 6

static void Main(string[] args)
{
    long N = long.Parse(Console.ReadLine());
    long[] array = new long[N];
    long ODD = 1;
    long EVEN = 1;
    for (int i = 0; i < N; i++)
    {

        array[i] = int.Parse(Console.ReadLine());
        if ((i + 1) % 2 == 0)
        {
            EVEN *= array[i];
        }
        else
        {
            ODD *= array[i];
        }

    }

    if (EVEN == ODD)
    {
        Console.WriteLine("yes" +  " " +
            ODD);
    }
    else
    {
        Console.WriteLine("no" + " " + ODD + " " + EVEN);
    }
}

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Чтение с консольного ввода и сохранение его в массиве string,
Затем преобразование каждого элемента массива в long и применение логики Odd Even, как показано ниже:

static void Main(string[] args)
    {
        string input = Console.ReadLine();
        string[] inputArray = input.Split(' ');

        long element;
        long odd = 1;
        long even = 1;
        foreach (var i in inputArray)
        {
            element = long.Parse(i);
            if (element % 2 == 0)
            {
                even *= element;
            }
            else
            {
                odd *= element;
            }
        }

        Console.WriteLine("\nOdd product = " + odd + ", Even product = " + even);

        if (odd == even)
        {
            Console.WriteLine("ODD == EVEN \n");

            Console.WriteLine("Yes" + " " + odd);
        }
        else
        {
            Console.WriteLine("ODD != EVEN \n");

            Console.WriteLine("No" + " " + odd + " " + even);
        }
        Console.ReadKey();

    }
0 голосов
/ 11 ноября 2018
long[] nums = input.Split(' ').Select(x => long.Parse(x))..ToArray(); //split numbers by space and cast them as int
int oddProduct = 1, evenProduct = 1; // initial values

foreach(long x in nums.Where(a => a%2 == 1))
    oddProduct *= x;    // multiply odd ones

foreach(long x in nums.Where(a => a%2 == 0))
    evenProduct *= x;   // multiply even ones
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...