fluffMedlem sedan juli 200268 inlägg God morgon ! :birp
Jag hittade den här tråden -> http://www.webforum.nu/showthread.php?s=&threadid=37525
Och tänkte att jag skulle roa mig med att försöka översätta den till c++ (eftersom jag just börjat med det), trodde att det inte skulle vara sååå stor skillnad på php / c++.
Hursomhelst så lyckades jag inte alls, snöade bara in på säkert helt fel saker.. :-I
Iaf, Hur gör man? :)
ViktorMedlem sedan aug. 20021 752 inlägg Det var ju roligt att börja med C++ igen efter några månader utan, svårt var det också att kom in i det :)
Men tillslut så gick det och här är resultatet, provat med 2 riktiga och många felaktiga personnummer och då fungerar den,
void CPnrDlg::OnBnClickedButton1()
{
if(checkPnr("7505051234"))
{
MessageBox("Korrekt personnummer");
}
else
{
MessageBox("Felaktigt personnummer");
}
}
bool CPnrDlg::checkPnr(char* pnr)
{
if(strlen(pnr)==10)
{
int n(2);
int tmp(0);
int sum(0);
char ch;
for(int i=0;i<9;i++)
{
ch=pnr[i];
tmp=atoi((char*)&ch)*n;
tmp>9?sum+=1+(tmp%10):sum+=tmp;
n==2?n=1:n=2;
}
return!((sum + atoi(&pnr[9]))% 10);
}
return false;
}
/Viktor
Viktor skrev:
ch=pnr[i];
tmp=atoi((char*)&ch)*n;
Det där är farliga saker som ger svårhittade buggar
bättre att skriva så här:
tmp = ch - '0';
eller om 100% portabilitet önskas
char ch[2];
ch[1] = '\0';
....
ch[0] = pnr[i];
tmp = atoi(ch)*n;