"установить ширину поля 30 и символы заполнения ^, проверить какие флаги потока ввода-вывода установлены, и заменить попарноЖ левое выравнивание на правое выравнивание (и наоборот)"
Ну это легче простого: юзай
cout.width(30)
cout.fill('^')
long flags = cout.flags()
бщем сюда глянь
http://ad.cctpu.edu.ru/cpp/glava27_4.htm