Min,Max,Sum and Average

Здравейте, колеги !
Изглежда нещо не разбирам условието на задачата. При дадени числа за проверка “3,2,5,1” трябва да се намери най-малкото,най-голямото, сборът и средно аритметичното на тях. В примерът за “output” на сбор е дадено 8. Моля,помагайте,че нещо се оплетох.

Ето и точното условие на задачата:
https://judge.telerikacademy.com/problem/00306mmsa

Здравей!

Първото число N показва колко бъдещи числа потребителят ще въведе.

Например, ако човек напише “3”, той после трябва да може да въведе 3 числа на три отделни реда.

Затова в примера не броим първото “3” от четирите под Input, и така реалните числа за пресмятане остават:

2
5
1

Успех!

Поздрави,
Петър

Здравей Дени,

Изпращам ти линк с решение на задачата: https://pastebin.com/wqbnPdSk.

Моя съвет е да дебъгваш, когато имаш проблем със задачата, така ще ти се изясни защо, как и от къде.

Ако се загледаш в inputa и outputa реално имаш 3 2 5 1, за да получим сума от 8 реално имаме само две комбинации: 2 + 1 + 5 или 5 + 3.
Ако изберем първият вариант и запишем 3-ката във променвила “n”, която да ни е дължината на циъкла всичко пасва.

Поздрави,
Мишо

Нещо много се оплитам в тази,иначе елементарна, задача…Ще оставя отдолу моя код и се надявам да коментираме къде бъркам…Judge-а не ми приема нито един от case-овете…
https://pastebin.com/u7HNZRvf

Здравей,

При изходните данни трябва да форматираш до 2 символа след десетичната.

Благодаря Ви много !
След толкова опити, най-накрая излезе 5/5.
Продължавам с другите !

Здравейте,
Дали някой може да ми съдейства и на мен?
Уж лесна задача, ама…
3 от тестовете ми са грешни.
На конзолата изкарвам уж всички отговори верни, а в judge…
https://pastebin.com/raw/mNjzpnRq
Благодаря Ви предварително!

Здравей!
Според мен трябва да поправиш number да бъде double. Ако не се получи и така, пиши отново!

1 Like

Аз първо с double пробвах, но не стана.
Ето и решението ми с double: https://pastebin.com/raw/UbxzhxV8

първото число след броя на всичките, ти е началната сума, минималното число и максималното също, върти с твоя код по другите.

1 Like

Здравей, Lhlhya,

Ако задаваш стойностите на променливите min и max преди прочитането на първото число от входните данни, то началната стойност на max би трябвало да бъде

max = -Double.MAX_VALUE;

(или поне по-малка или равна на -10000, което по условие е минималната стойност на входна данна).

Константата Double.MIN_VALUE задава най-малката положителна стойност, която може да се съхрани в променлива от тип double, а именно

2-1074 ~ 4.9×10-324.

Тъй като множеството от дробни числа, които могат да се представят със стойност от тип double, е симетрично относно 0, най-малката (крайна) стойност, която една променлива от този тип може да приеме, е -Double.MAX_VALUE или

-(21024-2971) ~ -1.8×10308.

Също така, за да се обхванат случаите, в които входните данни се състоят само от едно число, проверката if (number < min) би трябвало да бъде не в else-клаузата на проверката if (number > max), а в отделен оператор if:

if (number > max) {
    max = number;
}
if (number < min) {
    min = number;
}

В противен случай, например при следния вход:

1
1

програмата ще изведе

min=179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00
max=1.00
sum=1.00
avg=1.00

Тъй като по условие броят на входните данни, n, е поне 1, друг подход, както колегата @kanchelov е предложил в предния коментар, би бил първото число от входните данни да се прочете преди началото на цикъла и то да бъде общата начална стойност на min, max, и sum. В този случай условният оператор в тялото на цикъла няма да има нужда да се разбива на два отделни.

Поздрави,
Иван

3 Likes