Napisałem taki kod, który działa dobrze dla roku < 2000. Nie mogę sobie jednak poradzić z napisaniem poprawnym pobierania roku (właściwie ilości lat) dla ludzi urodzonych po 2000 roku. Np dla peselu 00280209533 pokazuje mi 116, zamiast 16 :( Ale dla 89050505476 działa dobrze:
#include <iostream>
#include <sstream>
#include <cstdlib>
#include <string>
#include <string.h>
using namespace std;
int main()
{
int wiek, lata;
string pesel("89020911288");
pesel = "00280209533";
string rokString = pesel.substr(0, 2);
string liczbaString = pesel.substr(2, 2);
stringstream konwersja1( rokString );
stringstream konwersja2( liczbaString );
int rok, liczba;
konwersja1 >> rok;
konwersja2 >> liczba;
if(liczba < 33)
{
wiek = 1900;
}
else if(liczba < 53)
{
wiek = 2100;
}
else if(liczba < 73)
{
wiek = 2200;
}
else if(liczba < 93)
{
wiek = 1800;
}
lata = 2016 - (wiek + rok);
cout << lata << "\n";
return 0;
}