У меня есть проблема с этой задачей
В этой задаче мы должны вывести длину самой длинной последовательности четных чисел, не деленных на 3, и чисел, не деленных на 7. Мы получаем элементы size_a (0<size_a<1000) в векторе. Каждый элемент (-1000 < Xi < 1000).
Ответ должен быть одним целым числом.
#include <iostream> #include <vector> using namespace std; int main() { int size_a; cin >> size_a; int num = 1, num_max = 0; vector <int> v (size_a); for (auto i = 0; i < size_a; i++) cin >> v[i]; //--------------------------------- for (auto i = 1; i < size_a; i++) { if ((v[i - 1] % 7 != 0) && (v[i] % 7 != 0)) { num++; if (num_max < num) num_max = num; } else if ((v[i - 1] % 2 == 0) && (v[i] % 2 == 0)) { if ((v[i - 1] % 3 != 0) && (v[i] % 3 != 0)) { num++; if (num_max < num) num_max = num; } } else num = 1; } cout << num_max << endl; }
Пример ввода данных:
5
100 53 23 19 31
Выход:
5
--
Пример ввода данных:
7
87 3 36 63 78 68 44
Выход:
3
------------------
В моей программе есть ошибка, которую я не могу найти - она работает на нескольких тестах, но в онлайн-проверке программ нашего колледжа она не проходит тест 7. Я не знаю, пример входных данных. Несколько человек в моей группе выполнили эту задачу, но не говорят мне, как это сделать.
Я ИСПОЛЬЗОВАЛ НА НЕМ ОТЛАДЧИК!!! НЕ ПРЕДЛАГАЙТЕ ЭТО КАК РЕШЕНИЕ!!!
Мне нужен фрагмент кода, содержащий ошибку и решение, как изменить ее, чтобы исправить.
Что я уже пробовал:
-пытался отладить мою программу;
-спрашивал у некоторых других студентов моей группы, но они мне ничего не говорят;
-посмотрел эту проблему в интернете
phil.o
Вы использовали отладчик, так что же вы узнали из него? Отладчик-это не волшебная палочка, это инструмент, который позволяет вам проверить значения ваших переменных на каждом шаге, так что вы можете определить, когда виновник происходит, понять, почему, и принять соответствующие корректирующие меры.
Member 13527256
Я проверил много значений, и на каждом из них все работает правильно. Может быть, есть какие-то другие значения, которые не работают с этим кодом, но я не могу их найти.
Member 13527256
Отладчик не поможет вам найти ошибки с ответом в том случае, когда конкретное значение не задано, и вам придется думать о миллиарде причин. Вот такая ситуация. У меня нет списка ценностей; и поверьте мне: я пытался преодолеть эту проблему около двух недель, когда наконец нашел этот сайт.
phil.o
На первый взгляд, я вижу первую проблему. В вашем первом if
утверждение, Вы не проверяете на четность значения, вы только проверяете, делится ли оно на 7. Ваш тест на ровность приходит только после того, как в else if
заявление. В то время как ваш вопрос, по-видимому, состоит в том, чтобы найти самую длинную последовательность даже числа, не делящиеся на 3 и не делящиеся на 7.
Поэтому запишите некоторые тестовые случаи с четными числами, некоторые другие с нечетными числами, отладьте свой код с этими тестовыми случаями, и вы обнаружите, что он не будет вести себя в соответствии с требованием для нечетных значений, кратных 7.
Dave Kreskowiak
Отладчик предназначен для отладки вас и вашего понимания кода. Это ничего не говорит вам о вашем коде. Вы используете его как инструмент проверки, чтобы показать вам, какие данные, какие значения использует код, чтобы вы могли лучше понять, что он делает.
Вы должны понять, что эти данные означают для кода, следовать за кодом на каждом шаге, чтобы увидеть, что он делает и с чем работает.
CPallini
Ваши требования мне не совсем ясны. Не могли бы вы их подробно описать?
Member 13527256
Вы вводите размер массива. Затем вы вводите числа - элементы этого массива. Среди этих элементов вы должны найти самую длинную последовательность чисел, не разделенных на 7, и четных чисел, не разделенных на 3. Вы должны вывести длину этой последовательности.
CPallini
Таким образом, каждая последовательность должна иметь следующие 3 свойства
(1) каждый пункт должен быть точно разделен на 7
(2) каждый пункт должен быть точно разделен на 2
(3) каждый пункт не должен точно делиться на 3
?
Member 13527256
Да, но не делится на 7.
Так:
(1) каждый пункт не должен быть точно разделен на 7
(2) каждый пункт должен быть точно разделен на 2
(3) каждый пункт не должен быть точно разделен на 3
CPallini
Тогда результат вашего первого примера неверен (только 100 точно делится на 2).
Member 13527256
Тогда я, возможно, не понял вас правильно. Все элементы не должны быть разделены на 7; Кроме того, все четные числа не должны быть разделены на 3. Таким образом, могут быть неравные числа, и они не должны быть разделены на 7.
CPallini
Ладно, это понятно.
CPallini
Однако с таким определением пример секунд был бы неправильным. Какова удовлетворительная последовательность?