You are actually getting the right result. But you are only printing the major version:
std::cout << osvi.dwMajorVersion << "\n";
Instead try using:
if (osvi.dwMinorVersion >= 1) {
std::cout << osvi.dwMajorVersion << "." << osvi.dwMinorVersion << std::endl;
} else {
std::cout << osvi.dwMajorVersion << std::endl;
}