Skorzystaj z algorytmu obliczania sumy kontrolnej i uzupełnij brakująca cyfrę w numerze pesel 90210100()22
ps. () to brakująca liczba


Odpowiedź :

Odpowiedź

Programy w załącznikach.

Napisałam je w różnych językach programowania, przy czym funkcja sprawdzająca poprawność numeru PESEL jest praktycznie taka sama.

Załącznik

  1. Python wraz z wynikiem działania programu. Wynik działania jest taki sam, niezależnie od użytego języka programowania, więc załączyłam go tylko jeden raz.
  2. C++
  3. C# dla Visual Studio i niektórych innych środowisk. Używając dotnetfidle użyj kompilatora .NET 6 rc2..
  4. C# wersja dla innych środowisk niż Visual Studio, gdyby ta z załącznika 3. nie działała.

Wyjaśnienia

We wszystkich językach do przechowywania współczynników użyłam listy, bo to jest naturalne, że się ma listę współczynników.

  • Uwaga: w starszych implementacjach C# (np. ideone, replit) należy zamienić "new ()" na "new List<int>()".

W C# oraz C++ do przechowywania wartości numeru PESEL użyłam 64-bitowej liczby całkowitej. Python ma dynamiczny rozmiar liczb całkowitych i nie ma w nim rozróżnienia na 16-bitowe, 32-bitowe i 64-bitowe liczby całkowite. Możliwe byłoby zapisanie numeru jako zmiennej łańcuchowej, ale powstały kod byłby brzydki (i dłuższy...).

Ale i tak w pytonie oraz C++ musiałam użyć zmiennej łańcuchowej ponieważ w tych językach nie ma możliwości zapisania dziesiętnych liczb całkowitych mających wiodące zera. Wyobraziłam sobie, że ktoś chciałby przetestować program na innych numerach PESEL, a numery PESEL osób urodzonych w latach 1800, 1900, 2000, 2100 oraz 2200 rozpoczynają się od co najmniej dwóch zer. Natomiast numery PESEL osób urodzonych w latach 1801, ... oraz 2209 rozpoczynają się od co najmniej jednego zera. Z tej samej przyczyny są dziwnie wyglądające parametry funkcji wyjścia (print, printf, oraz WriteLine). Służą one do tego aby drukowana liczba miała zawsze 11 cyfr. Nawet jeśli z przodu będą zera.

Niektóre środowiska uruchomieniowe C++ maja ograniczenia nie wynikające ze standardów języka. Jeśli miałabyś / miałbyś problemy z kompilacją w używanym przez Ciebie środowisku uruchomieniowym C++, to zmień nazwę zmiennej  współczynniki  na taką bez polskich liter np.  wspolczynniki.  Jeżeliby byłyby problemy z wydrukiem polskich liter, to zamień  ą  na  a.

Algorytm sprawdzania wzięłam z artykułu PESEL w polskiej W ikipedii.

Zobacz obrazek 0AB
Zobacz obrazek 0AB
Zobacz obrazek 0AB
Zobacz obrazek 0AB