C/C++

Почему код дает неправильный ответ? Где я ошибся?

Входные данные

5
40
1000
7
28
55

Правильный ответ
28000

код
https://pastebin.com/w001T5Y0

в цикле на cout << x << endl;
не обращайте внимания
им я просто хотел проверить правильно ли считывается число
пока вы плохо ориентируетесь во вложенности if else вам не стоит истользовать конструкцию } else if {
т. к. вы не понимаете что когда выполняется и из-за этого повторяете свою конструкцию ветвления 2 раза и делаете лишние проверки.
Вот код - модификация вашего, который работает как надо.
https://onlinegdb.com/Ke6i1Rf2o
там в комментариях куча замечаний и пояснений, изучайте.
Но предложенные вам варианты с использованием массивов читаются и реализуются проще и понятней.
А ваш код анализирует данные по мере входа. Время выполнения не анализировал, потому не стану утверждать, что лучше.
и да, первое считанное число не выводится, если нужно - cout << m << endl; перед циклом
И заведите привычку - открыли файл - закройте файл.
Александр Логинов
Александр Логинов
5 910
Лучший ответ
Программа работает так, как ты ее написал. Если она дает неожиданный результат, по-видимому, твой код не соответствует тому заданию, которое ты не потрудился нам изложить...

>Дополнен 10 минут назад
Я бы вводил последовательность в массив, сортировал его по убыванию, а потом искал, которое из первых произведений делится на 14 - это бы и было искомым наибольшим числом. А у тебя как-то слишком сложно все, вплоть до того, что делимость на 14 ты проверяешь двойным делением...
АО
Амир Ораков
94 779
int n;
cin >> n;
long *t = new long[n];
for (int i = 0; i < n; ++i) { cin >> t[i]; }
long x = 0;
for (int i = 0; i < n - 1; ++i) {
for (int j = i + 1; j < n; ++j) {
long c = t[i] * t[j];
if (c % 14 == 0 && c > x) { x = c; }
}
}
cout << x;
ПБ
Павел Быков
76 305