-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsl-nic-decoder.cpp
64 lines (57 loc) · 1.81 KB
/
sl-nic-decoder.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
using namespace std;
struct Birthday{
int year;
string month;
int day;
};
struct Person{
Birthday b;
string gender;
} person;
struct MD{
string m;
int d;
} md;
MD monthAndDate(int val){
if(val <= 31) return {"January", val};
else if(val <= 60) return {"February", val - 31};
else if(val <= 91) return {"March", val - 60};
else if(val <= 121) return {"April", val - 91};
else if(val <= 152) return {"May", val - 121};
else if(val <= 182) return {"June", val - 152};
else if(val <= 213) return {"July", val - 182};
else if(val <= 244) return {"August", val - 213};
else if(val <= 274) return {"September", val - 244};
else if(val <= 305) return {"October", val - 274};
else if(val <= 335) return {"November", val - 305};
else if(val <= 366) return {"December", val - 335};
else return {"Wrong NIC Number", -1};
}
Person _nic(string nic,int n = 0){
int year = atoi(nic.substr(0, 2 + n).c_str());
person.b.year = n ? year: 1900 + year;
int gen = atoi(nic.substr(2 + n, 3).c_str());
person.gender = (gen < 500) ? "Male": "Female";
gen = (gen > 500) ? gen - 500: gen;
md = monthAndDate(gen);
person.b.month = md.m;
person.b.day = md.d;
return person;
}
int main(){
string nic;
cout << "[?] Valid for all(old + new) SL NICs." << endl;
cout << "[i] Enter NIC No(without V): ";
cin >> nic;
cout << "----------------------------------------" << endl;
if((nic.length() == 9 || nic.length() == 12)){
int n = (nic.length() == 9) ? 0: 2;
person = _nic(nic, n);
if(person.b.day != -1){
cout << "[*] Birth Day: " << person.b.year << " " << person.b.month << " " << person.b.day << endl;
cout << "[*] Gender: " << person.gender << endl;
} else cout << "[x] Wrong NIC Number" << endl;
} else cout << "[x] Wrong NIC Number" << endl;
return 0;
}