после 10 странно возвращается в 1 и продолжает печатать 1 как квадратное число
Вы сказали это:
if (totalamount>1000)
squarenumber=neededrice1000;
Это не имеет ничего общего с окном команд Visual Studio; это заявленная логика вашей программы.
Я предлагаю вам шаг за шагом пройти по нему карандашом и бумагой, чтобы понять, что вы написали.
когда c ++ отказался от вычислительных мощностей
Он не "сдался"; вы переполнили int
огромными числами, поэтому ваша программа имеет неопределенное поведение .
Для вас это привело к низким значениям, достаточно низким, чтобы ранее указанная ошибка больше не появлялась, и squarenumber
снова можно увеличивать на каждой итерации.
В этом примере достаточно 64-битного типа (поэтому рассмотрим uint64_t
).