Pytanie dotyczy fragmentu kodu napisanego na potrzeby zadania "Pesel" ze spoja. Dla przykładu "44051401458" kod przekształca prawidłowo wszystkie cyfry oprócz piątej i dziewiątej, które powinny zostać niezmienione, lecz program zamienia 1 na 7, a 4 na 28. Pozostałe niezmieniane cyfry czyli pierwsza i ostatnia zgadzają się. Nie mam pojęcia dlaczego tak się dzieje.
Program ma pobrać 11-cyfrowy pesel, następnie na każdej cyfrze ma wykonać następujące operacje:
Pierwszą cyfrę mnożymy przez 1,
drugą cyfrę mnożymy przez 3,
trzecią cyfrę mnożymy przez 7,
czwarta cyfrę mnożymy przez 9,
piątą cyfrę mnożymy przez 1,
szóstą cyfrę mnożymy przez 3,
siódmą cyfrę mnożymy przez 7,
ósmą cyfrę mnożymy przez 9,
dziewiątą cyfrę mnożymy przez 1,
dziesiątą cyfrę mnożymy przez 3,
jedenastą cyfrę mnożymy przez 1.
Następnie ma to zsumować i sprawdzić czy ostatnia cyfra to 0.
#include <iostream>
using namespace std;
int main()
{
unsigned long long pesel, n=1;
cin>>pesel;
int pesel2[11];
for(int i=0; i<11; i++)
{
pesel2[i]=(pesel/n)%10;
n=n*10;
}
int suma=0;
for(int i=0; i<11; i++)
{
switch(i)
{
case 1:
case 5:
case 9:
pesel2[i]=pesel2[i]*3;
break;
case 2:
case 6:
pesel2[i]=pesel2[i]*7;
break;
case 3:
case 7:
pesel2[i]=pesel2[i]*9;
break;
}
cout<<pesel2[i]<<" ";
}
return 0;
}