Ваша проблема, вероятно, связана с тем, что вы используете cin.ignore() в неправильных местах, что может приводить к пропуску ввода. Когда вы вызываете cin.ignore() после ввода с cin >>, это может очистить буфер ввода, пропуская следующий ввод.
Попробуйте изменить функцию addfon следующим образом:
https://www.onlinegdb.com/fork/pN3wrzEwL