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
- 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.
- C++
- C# dla Visual Studio i niektórych innych środowisk. Używając dotnetfidle użyj kompilatora .NET 6 rc2..
- 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.



