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

Четни / нечетни позиции C#

Напишете програма, която чете n-на брой числа, въведени от потребителя, и пресмята сумата, минимума и
максимума на числата на четни и нечетни позиции (броим от 1). Когато няма минимален / максимален
елемент, отпечатайте "No".
Изходът да се форматира в следния вид:
"OddSum=" + {сума на числата на нечетни позиции},
"OddMin=" + { минимална стойност на числата на нечетни позиции } / {“No”},
"OddMax=" + { максимална стойност на числата на нечетни позиции } / {“No”},
"EvenSum=" + { сума на числата на четни позиции },
"EvenMin=" + { минимална стойност на числата на четни позиции } / {“No”},
"EvenMax=" + { максимална стойност на числата на четни позиции } / {“No”}
Всяко число трябва да е форматирано до втория знак след десетичната запетая.

 

Просто забих в един момент и не мога да се ориентирам как да продължа задачата, няколко пъти трих кода и започвах от начало но всеки път не стигам до никъде. Ако някой би могъл да ми даде съвет.

 


            double n = double.Parse(Console.ReadLine());
            double oddSum = 0;
            double oddMin = double.MaxValue;
            double OddMax = double.MinValue;
            double evenSum = 0;
            double evenMin = double.MaxValue;
            double evenMax = double.MinValue;

            for (int i = 1; i < n; i++)
            {
                double num = double.Parse(Console.ReadLine());
                if (num%2==0)
                {
                    evenSum += num;
                    if (num>evenMax)
                    {
                        evenMax = num;
                    }
                    else if (num<evenMin)
                    {
                        evenMin = num;
                    }
                }
                else if (num%2==1)
                {
                    oddSum += num;
                    if (num>OddMax)
                    {
                        OddMax = num;
                    }
                    else if (num<oddMin)
                    {
                        oddMin = num;
                    }
                }
               

            }

Тагове:
1
Programming Basics
svephoto avatar svephoto 689 Точки

Здравей, doktormo,

 

Може ли да дадеш и линк към задачата в Judge?

0
doktormo avatar doktormo 1 Точки

https://judge.softuni.bg/Contests/Compete/Index/2382#2 това би трябвало да е, но аз като цяло до judge не съм стигал да я тествам все още, " Когато няма минимален / максимален елемент, отпечатайте " No ". това е частта която най много ме обърква.

0
svephoto avatar svephoto 689 Точки

Добре, значи от примерите в условието имаш случай, в който ти подават 0 като брой числа, т. е. не ти подават нито едно число. Тогава трябва да отпечаташ 0.00 и за сумата на нечетните, и за тази на четните числа, както и "No" за OddMin, OddMax, EvenMin и EvenMax. Имаш и случай, при който ти подават 1 число, което в примера е равно на 1. Тогава трябва да отпечаташ 1.00 (или ако е друго число - съответната негова стойност) за сумата на нечетните, 0.00 за тази на четните числа, 1.00 за OddMin и OddMax (и пак: ако е друго число - съответната негова стойност), както и "No" за EvenMin и EvenMax. Т. е. след като си извъртял цикъла, ако се окаже, че всъщност той изобщо не е бил завъртян (n = 0) или е бил завъртян само веднъж (n = 1), просто в if-else проверки проверяваш дали n == 0 или n == 1, и взависимост от случая печаташ съответните съобщения - можеш директно да гледаш от примерите в условието. А ако вече имаш подадени 2 или повече числа, няма да имаш отпечатване на "No" никъде и си печаташ всичко друго, което трябва. Не забравяй да сложиш = за i <= n в условието на цикъла, защото в момента ти е i < n и понеже въртиш от 1, а не от 0, ще имаш една итерация по-малко. Също спокойно можеш да си сложиш прочитането на n в началото да си е int - double не ти е нужен. Виж докъде ще стигнеш и ако отново се затрудниш и не можеш да мръднеш нататък, кажи и пак ще помагаме.

1
16/05/2021 23:04:29
krum_43 avatar krum_43 568 Точки

Здравей колега,                                                                                                         Имаш логически грешки при условните оператори.Видях,че има доста коментари по въпроса ти.Надявам се,че сте вдигдали кода до 100/100.

1
17/05/2021 07:11:32