Другие языки программирования и технологии

Помогите с д. з, сижу уже 2 день

#include < iostream >
#include < windows.h >
#include < sstream >
#include < string >
#include < sstream >
#include < fstream >
#include < map >

using namespace std;

void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("color 0A");

ifstream fin("input.txt");

int old;
bool b = true;
if (!fin.is_open())
{
cout << "Файл с данными не может быть открыт! \n";
for (;;)
{
cout << "Введите возраст ";
cin >> old;
if (cin.rdbuf()->in_avail() != 1)
{
if (!cin) cin.clear();
cin.ignore(cin.rdbuf()->in_avail(), '\n');
cout << "Ошибка. Введено не число. Попробуйте ещё раз" << endl;
}
else
break;
}
}
else
{
cout << "Файл с данными успешно открыт! \n";
string str;
getline(fin, str);
fin.close();
stringstream ss(str);
ss >> old;
if (ss.rdbuf()->in_avail() != 0)
{
cout << "Ошибка. Введено не число. Измените содержимое файла" << endl;
b = false;
}
}

if (b)
{
map < int, string > mp;
mp.insert(pair < int, string >(0, "лет"));
mp.insert(pair < int, string >(1, "год"));
mp.insert(pair < int, string >(2, "года"));
mp.insert(pair < int, string >(3, "года"));
mp.insert(pair < int, string >(4, "года"));
mp.insert(pair < int, string >(5, "лет"));
mp.insert(pair < int, string >(6, "лет"));
mp.insert(pair < int, string >(7, "лет"));
mp.insert(pair < int, string >(8, "лет"));
mp.insert(pair < int, string >(9, "лет"));

cout << "Вам " << old << " " << mp[old % 10] << endl;
}

cin.get(); cin.get();
}
ВЛ
Владимир Ледяев
8 552
Лучший ответ
int x = 56;

char vars[][10] = {"год", "года", "лет"};

int v = 0;

switch(x%10)
{
case 1: v = (x%100 == 11)? 2 : 0; break;
case 2:
case 3:
case 4: v = (x%100 - x%10 == 10)? 2 : 1; break;
case 0:
case 5:
case 6:
case 7:
case 8:
case 9: v = 2; break;
}

printf("Вам %d %s", x, vars[v]);
Георгий Zam
Георгий Zam
80 138