Przypisz otrzymane duże litery w zamian za małe:
for (i = 0; i < lancuch.size(); i++)
lancuch[i] = char(toupper(lancuch[i]));
Źle dołączasz biblioteki. Poprawnie:
#include <iostream
#include <string> // dla std::string, std::getline
#include <cctype> // dla std::toupper
Możesz od razu wypisać odwrócony i zamieniony łańcuch:
void wspak(const string& wyraz) {
std::size_t size = wyraz.size();
for (std::size_t i = 0; i < size; ++i) {
std::cout << static_cast<char>(std::toupper(wyraz[size - i - 1]));
}
}
Możesz też użyć STL:
void wspak(string& wyraz) {
std::transform(wyraz.begin(), wyraz.end(), wyraz.begin(), ::toupper);
std::reverse(wyraz.begin(), wyraz.end());
}