Find Largest Three Values

tasks

#1

Здравейте,

На задачата Find Largest Three Values ми се счупва един от кейсовете.

https://pastebin.com/P3JtnkaQ - това е кодър. Логиката на циклите май ми е вярна и използвах за инициация Integer.MINValue по пример от предишни задачи. Може и затова да се бъзика.


#2

Здравей Теди,

Задачата се решава с Math.Max / GetMax() в замисимост от езика, ето една идея, как да намериш максималното число:

int max = Math.Max(num1, num2);
max = Math.Max(max, num3);

Успех


#3

Това не са ли функции, които се ползват при масиви?

Задачата трябва да се реши само с луупове.


#4

Здравей Теди,

Не са функции на масива, това са функции на статичния клас Math, като цяло задачата може да бъде решена без цикъл.

Съвета ми е да видиш какво прави Math.Max, както е записано в условието.

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


#5

Това е условието в contest Loops:

Write a program that, that finds the three largest numbers in a sequence and prints them in descending order in the following format:

{largest}, {second_largest} and {third_largest} .

See the example for clarity

Никъде не се споменва за Math.Max та затова се чудя.


#6

Начини за решение на всяка задача колкото искаш. Това, че пише Loops не значи, че само така ще приеме решението.
Ако сега се готвиш за кандидатстване методите Math ще ти помогнат за много други задачи в Judge. :slight_smile:
Edit: относно дали се споменава - предполагам Мишо визираше тази задача, която на практика е почти същата, там в условието се споменава GetMax() - https://judge.telerikacademy.com/problem/02getlargestnumber


#7

Здравейте,

Тъй като в задачата се искат също второто и третото най-голямо число, имате ли идея, как Math.max може да се използва за тях? Не успях да намеря подобна възможност.

Моето решение също е с loops и минава всички мои тестове, но не и четвъртия на Judge:
judge

Числото 13 със сигурност не се въвежда от програмата, защото тествах при мен и работи правилно.

Това е основната част от кода ми (във външни if statements тествам също за нужните ограничения):

if (number > max) {
max3 = max2;
max2 = max;
max = number;
} else if (number > max2 && number != max) {
max3 = max2;
max2 = number;
} else if (number > max3 && number != max && number <= max2) {
max3 = number;
}

Ще се радвам на някакви идеи!

Благодаря предварително.

Edit 17.07.19: Решение 100/100

Грешката ми е била, че съм нямал “равно” включено в проверките за първите два loop-a. Така при написване на две равни най-високи числа, или две равни втори числа, едното изчезваше. Ето кодът с правилните ограничения (по-простичък от миналия, какъвто и обикновено трябва да бъде) :- )

if (number >= max) {
max3 = max2;
max2 = max;
max = number;
} else if (number >= max2) {
max3 = max2;
max2 = number;
} else if (number > max3) {
max3 = number;
}

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


#8

Аз лично бих препоръчал тук да разгледаш какво прави Array.Sort :wink:


#9

Пепи ако искаш да я решиш само с Math, ето един пример как може да стане това:

        int max = Math.Max(num1, num2);
        max = Math.Max(max, num3);

        int min = Math.Min(num1, num2);
        min = Math.Min(min, num3);

        int mid = num1 + num2 + num3 - min - max;

Успех


#10

Привет!
При мен също се чупи на test case #4, но изписва, че output-ът ми е 14, 12 and 11.
hFrcc7C
Кодът ми: https://pastebin.com/PZ88Uiih

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

Въпросът ми е дали има начин judge да не изкарва test case #4 като грешен, при излползане единствено на loops & conditional statements.

П.П. Тествах да симулирам case #4 като добавих и числото 13 и всичко работеше нормално в IDE-то.


#11

Здравей,

Грешката ти е в проверките. Ето едно разписано решение без масиви - https://pastebin.com/EQsnhYHL

Поздрави