Why Hannibal was defeated?
Answer from: Olesya Igorevna Vasilyeva:
Briefly, because at a certain point in the war he lost the support of the ruling elites. Hannibal's army was deep in the enemy camp, and being deprived of reinforcements and supplies, and the Roman lands were already devastated by the war, and one of the aims of the Romans was not to let the conquerors replenish the supplies, suffered an inevitable defeat in such circumstances. But, of course, one can read about these events in more detail, and more importantly, interestingly, in Polybius - it reads as well as the fiction of the 19th and 20th centuries.