Ваш код, как написано, должен выдавать этот вывод (если он даже соответствует ...) g ++ не скомпилирует его, потому что вы подсчитываете число ссылок после l oop, в котором он был создан. Count ограничен этим l oop поэтому он не существует снаружи. В любом случае, я предполагаю, что вы используете некоторые переключатели компилятора или компилятор, который позволяет это.
Вы фактически составляете один список чисел и через него l oop проверяете закодированное математическое отношение (ie, когда два сложенных числа совпадают с их умножением.) Ваш первый l oop переходит от первого значения ко второму последнему значению (потому что вы проверяете равенство с end () - 1) Я не уверен, действительно ли вы этого хотели или нет. Ваш второй l oop начинается со второго значения, а затем продолжается до последнего значения. Итак, во втором тестовом примере ваше второе число 2 и 2 будет использоваться для параметра * y, а затем это первое значение во втором l oop, поэтому вы выполняете проверку с помощью 2, 2 и 2 + 2. == 4 == 2 * 2, чтобы проверка прошла успешно и счет увеличился. Попробуйте приведенный ниже код, чтобы получить представление о том, что вы делаете (обратите внимание, что я удалил декларацию count из l oop и переместил ее чуть выше объявления y и z, что было необходимо для его компиляции с помощью моя система):
{
cout << "y:" << *y <<" z:" << *z << endl;
if (*y + *z == *y * (*z)){
cout << "match " << *y << " " << *z << endl;
count++;
}
}