16. Zadanie z OOP podsumowujące dotychczasowe tematy.


Stwórz klasę, która będzie „rozkodowywała” nr PESEL podany przez użytkownika. Szczegóły ad tworzenia tego nr dostępne są tutaj.

Wykorzystaj konstruktor, gdzie jako argument będzie pobierany ciąg znaków PESEL.

  • za pomocą funkcji wbudowanej is_numeric sprawdź czy podany pesel jest liczbą. Jeżeli nie jest liczbą, to wyświetl: „podaj same liczby”, jeżeli jest liczbą to:
  • sprawdź czy ciąg zawiera 11 znaków, jeżeli zostanie podana inna niż 11 ilość znaków wygeneruj komunikat o błędzie, jeżeli zostanie podana odpowiednia ilość znaków to rozkoduj informacje zawarte w nim:
    • data urodzenia (pamiętaj, że numer miesiąca dla urodzonych po 1999r. zmienia się na liczbę 20, gdzie styczeń to 21, luty, 22, marzec 23, itd. Pierwsze sześć cyfr numeru PESEL dla dziecka urodzonego np. 23 stycznia 2012 roku będzie wyglądało tak: 122123.)
    • płeć (płeć to przedostatnia cyfra – parzysta = kobieta, nieparzysta = mężczyzna).

Funkcja substr z wyciętego fragmentu tworzy string, aby otrzymać miesiąc i rok w odpowiednim formacie należy zmienić string na int. Zmianę można dokonać następująco: 1900+(int)$rok_z_PESEL;

(polecenia wykonane do tego miejsca – ocena 2)

  • Informacje te zapisz w tablicy, utwórz instancję klasy i wyświetl. (polecenia wykonane do tego miejsca – ocena 3).

Wyświetl dane z tablicy w następującym formacie.

Np. Mężczyzna urodzony w piątek 13go grudnia 1970 roku. Do urodzin pozostało: … dni, czyli … godzin, czyli … minut, czyli … sekund.
Np. Kobieta urodzona w środę 11 czerwca 1997 roku. Do urodzin pozostało: … dni, czyli … godzin, czyli … minut, czyli … sekund.

(polecenia wykonane do tego miejsca:

  • wyświetlenie samych numerów i dnia w j. ang. – 4
  • wyświetlenie z nazwą dnia tyg. w j. polskim i nazwą słowną miesiąca oraz licznikiem – 5

Polecenie rozszerzające poprzedni kod na ocenę 6

Numer pesel składa się z 11 cyfr. Pierwsze 10 cyfr to cyfry informacyjne. Ostatnia z nich to cyfra kontrolna.

Sprawdź, czy cyfra kontrolna została prawidłowo wpisana. Sposób obliczania cyfry kontrolnej:

W 3 prostych krokach opiszemy poniżej, w jaki sposób można obliczyć cyfrę kontrolną w numerze PESEL. Jako przykład posłuży nam numer 0207080362.

  1. Pomnóż każdą cyfrę z numeru PESEL przez odpowiednią wagę: 1-3-7-9-1-3-7-9-1-3. 0 * 1 = 0
    2 * 3 = 6 
    0 * 7 = 0
    7 * 9 = 63
    0 * 1 = 0
    8 * 3 = 24 
    0 * 7 = 0
    3 * 9 = 27
    6 * 1 = 6
    2 * 3 = 6
  2. Dodaj do siebie otrzymane wyniki. Uwaga, jeśli w trakcie mnożenia otrzymasz liczbę dwucyfrową, należy dodać tylko ostatnią cyfrę (na przykład zamiast 63 dodaj 3).
    0 + 6 + 0 + 3 + 0 + 4 + 0 + 7 +6 + 6 = 32
  3. Odejmij uzyskany wynik od 10. Uwaga: jeśli w trakcie dodawania otrzymasz liczbę dwucyfrową, należy odjąć tylko ostatnią cyfrę (na przykład zamiast 32 odejmij 2). Cyfra, która uzyskasz, to cyfra kontrolna. 10 – 2 = 8
    pełny numer PESEL: 02070803628

Wszystkie obliczenia muszą być częścią klasy.

Zadanie bez OOP podsumowujące dotychczasowe tematy.


Napisz funkcję jednoargumentową, gdzie jako argument będzie pobierany ciąg znaków PESEL:

za pomocą funkcji wbudowanej is_numeric sprawdź czy podany pesel jest liczbą. Jeżeli nie jest liczbą, to wyświetl: „podaj same liczby”, jeżeli jest liczbą to:
sprawdź czy ciąg zawiera 11 znaków, jeżeli zostanie podana inna niż 11 ilość znaków wygeneruj komunikat o błędzie, jeżeli zostanie podana odpowiednia ilość znaków to:
rozkoduj informacje zawarte w nim:
data urodzenia (pamiętaj, że numer miesiąca dla urodzonych po 1999r. zmienia się na liczbę 20, gdzie styczeń to 21, luty, 22, marzec 23, itd. Pierwsze sześć cyfr numeru PESEL dla dziecka urodzonego np. 23 stycznia 2012 roku będzie wyglądało tak: 122123.)
płeć (płeć to przedostatnia cyfra – parzysta = kobieta, nieparzysta = mężczyzna).

Funkcja substr z wyciętego fragmentu tworzy string, aby otrzymać miesiąc i rok w odpowiednim formacie należy zmienić string na int. Zmianę można dokonać następująco: 1900+(int)$rok_z_PESEL;

(polecenia wykonane do tego miejsca – ocena 2)

Informacje te zapisz w tablicy i wyświetl ją (polecenia wykonane do tego miejsca – ocena 3).

Wyświetl dane z tablicy w następującym formacie.

Np. Mężczyzna urodzony w piątek 13go grudnia 1970 roku. Do urodzin pozostało: … dni, czyli … godzin, czyli … minut, czyli … sekund.
Np. Kobieta urodzona w środę 11 czerwca 1997 roku. Do urodzin pozostało: … dni, czyli … godzin, czyli … minut, czyli … sekund.

(polecenia wykonane do tego miejsca:

  • wyświetlenie samych numerów i dnia w j. ang. – 4
  • wyświetlenie z nazwa dnia tyg. w j. polskim i nazwą słowną miesiąca – 5
  • wyświetlenie z licznikiem 6

)