Професионална програма
Loading...
+ Нов въпрос
StanislavDraganov avatar StanislavDraganov 2 Точки

Homework Loops: Odd and Even Product

Здравейте,

Моето решение може да видите тук: https://github.com/stan87/EduProject/blob/master/OddEvenProduct2.cs

За всеки случай, условието е: 

⦁    Odd and Even Product
You are given n integers (given in a single line, separated by a space). Write a program that checks whether the product of the odd elements is equal to the product of the even elements. Elements are counted from 1 to n, so the first element is odd, the second is even, etc.

До колкото моите тестове са точни, програмата дава желаните резултати. Обаче има едно нещо, което ме мъчи. Не мога да схвана защо при if условието в по-долния for цикъл се налага да проверяваме i променливата, а не number. Предполагам, че просто не разбирам все още как точно се обхождат и Parse-ват string[] масиви, но ако някой може да разясни малко - ще съм много благодарен :)

 for (int i = 0; i < numbers.Length; i++)
        {
            int number = int.Parse(numbers[i]);

            if (i % 2 == 0)
            {
                even *= number;
            }
            else
            {
                odd *= number;
            }
        }

 

P.S. Също така, всякакви забележки по решението са повече от добре дошли ;)

Тагове:
0
Programming Basics 19/02/2016 04:46:09
gabi.ivanova avatar gabi.ivanova 370 Точки

Проверява се i в условието на if защото ти търсиш сумата на четните и на нечетните елементи в редицата, а не по стойност на самото число. На всяко завъртане на цикъла четеш число като първото е нечетна позиция, следващото четна и т.н. В случая са дадени на 1 ред числата значи ги четеш и слагаш в масив. Цикълът, който си показал обхожда този масив numbers и проверява дали позицията е четна или нечетна и съответно прави нещо с числото, без значение какво е то.

2
19/02/2016 07:51:12
kiso_blg avatar kiso_blg 56 Точки

"Elements are counted from 1 to n, so the first element is odd, the second is even, etc."

Ти не започваш броенето от 1, а от 0. Първия елемент ти го смята за четен и така нечетните елементи ги прибавяш към even. Сменил си им местата. Ако искаш да броиш в цикъла от 0, трябва да ги обърнеш. При if (i % 2 == 0) { odd *= number }. 

3
gabi.ivanova avatar gabi.ivanova 370 Точки

или проверката може да е ( (i+1) % 2 == 0) така проверката в цикъла ще обходи елементите от 0 до n и ще смята елемента с нулев индекс за първи, т.е. нечетен, съответно този който е на 1-ви индекс за 2-ри елемент - четен и т.н.

1