Абсолютно правильно делит - о чём мы уже говорили.
В С++ при целочисленном делении используется округление к нулю: дробная часть вещественного деления просто отбрасывается.
Округление к минус бесконечности в Python и округление к 0 в C++ - совершенно равноценные разные варианты целочисленного деления. И тебе придётся просто запоминать, в каком из языков какой из вариантов используется.
В C++ операция деления между целочисленными операндами производит операцию целочисленного деления, которая отбрасывает дробную часть результата и возвращает только целую часть.
Таким образом, в первом примере (-7 / 2) результатом будет -3, потому что -3 * 2 = -6, что наиболее близко к -7 без превышения его значения. Во втором примере (7 / 2) результатом будет 3, потому что 3 * 2 = 6, что наиболее близко к 7 без превышения его значения.
Если вы хотите выполнить деление и получить результат в виде десятичной дроби, необходимо использовать тип данных с плавающей запятой, например: cout