Помогите написать программу ** паскале. Федя с клавиатуры последовательность натуральных...

0 голосов
19 просмотров

Помогите написать программу на паскале. Федя с клавиатуры последовательность натуральных чисел. Он хочет получить и вывести на экран максимально возможную сумму трех чисел из последовательности, каждое из которых оканчивается на цифру 3. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, оканчивающееся на 3. Количество чисел не превышает 10 в 6. Введённые числа не превышают 30000. Программа должна вывести одно число - максимальную сумму трех чисел, каждое из которых оканчивается на цифру 3. Если чисел, отвечающих условия не нашлось, выводится 0.Пример: вход: 6 7 13 15 3 23 103вывод: 139


Информатика (22 баллов) | 19 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

PascalABC.NET 3.4.2, сборка 1814 от 02.10.2018


begin

 var a := ReadArrInteger(ReadInteger).Where(t -> t mod 10 = 3)

                                                                 .SortedDescending;

 Println(a.Count >= 3 ? a.Take(3).Sum : 0)

end.


image
(5.8k баллов)
0

а где проверка на то что n не больше 10 в 6 степени и что числа не больше 30000?

0

Это гарантируется условием

0

Нет слова типа "должно", нет условия "иначе" что делать, если вдруг число будет больше? Нет такого пункта как запросить заново ввод

0

begin var n := ReadInteger('n ='); var a := ReadArrInteger(n); if a.Where(x -> x mod 10 = 3).Count >= 3 then a.Where(x -> x mod 10 = 3).SortedDescending.Take(3).Sum.Println else Print(0)end.

0

Способов много, n необязательно отдельно получать, она дальше же у вас нигде не используется

0

это чтоб человек не путался при вводе, а вообще это все должно оговариваться, наверное

0

А, единсвенное забыл написать, когда элементов мало будет, завтра исправлю

0 голосов

Федя с клавиатуры последовательность PascalABC.NET


image
(2.5k баллов)
0

Я не могу быть на 100% уверен, но при n=7 и наборе чисел 13 23 33 14 23 33 43 результат должен быть 99, а не 109

0

33+33+43=109

0

Условие не так понял.. думал нужна сумма именно из последовательности чисел оканчивающихся на 3)

0

Тогда можно все гораздо проще написать

0

И у вас ввод не соответствует вводу в условии.

0

что не так с вводом?

0

Там просто вводятся числа, без текстовых подсказок и проверок, из-за ввода в 1 ряд в вашем коде могут возникнуть проблемы при проверке в тестовой системе

0

не написано что нужно вводить одной строкой

0

Вам пример ввода предоставили