Sprawdzenie poprawności PESELu - program w C++

Witam, muszę napisać program weryfikujący poprawność PESELu…

Program musi być napisany w C++.

Niewiem jak się do tego zabrać, może moglibyście mnie naprowadzić?

ps. nieproszę o zrobienie wszystkiego za mnie tylko o wyjaśnienie co i jak.

z góry dziękuje za pomoc :slight_smile:

Na Wikipedii masz opisany numer PESEL i to z czego się składa, a więc masz cały algorytm, wystarczy przelać go na kod, co trudne nie jest.

:arrow: http://pl.wikipedia.org/wiki/PESEL#Numer_PESEL

Wczytujesz liczbę do stringu, potem funkcją składową substr wyciągasz sobie odpowiednie części, wysyłasz do strumienia istringstream jako argument konstruktora i zaczynasz wczytywać do zmiennych, a potem już zwykłe porównania czy coś jest większe/mniejsze od maksymalnej wartości i odpowiednia reakcja na błąd.

kompletnie Was nierozumiem ;d

nic nieumiem z C++ a musze to oddać do szkoły ;p

No to poszukaj najpierw jakiegoś kursu C/C++.

nie ma tak prosto że dostaniesz gotowy program…chodzi o to że musisz obliczyć sume kontrolną dla wszystkich liczb oprocz ostatniej, i sprawdzic czy ta suma jest taka jak ostatnia cyfra. tak to chyba wyglądało z tego co pamiętam:)

Aha…

I myślisz, że ktoś będzie za darmo siedział i rozwiązywał Ci zadanie, bo ty C++ nie umiesz “bo byłeś chory/bo nauczyciel jest głupi/bo itp.” :?: Coraz bardziej mnie takie posty denerwują delikatnie mówiąc.

nie powiedziałem że jestem chory ani że nauczyciel jest głupi ale proszę o wytłumaczenie wszystkiego od a do z bo nieczaję tego wcale ;p

Skoro nic nie umiesz z C++, to nie wytłumaczy Ci nikt w jednym poście (nie pisząc gotowca) jak napisać program wykorzystujący zagadnienia z klas itp…

Kolejny gość który chcę dokładną instrukcję przesadki serca na jednej stronie, tak aby przeczytać i już umieć robić ten zabieg.

Mozesz pesel rozbic na cyfry i zamapietac je w tablicy potem podstawiasz pod wzor z wikipedii kazda cyfre.

źródło www.algorytm.org

dobra, to już wiem.

ale jak to wprowadzić do programu?

Najogólniej tak:

a = PESEL[0]*1 + PESEL[1]*3 + PESEL[2]*7 + PESEL[3]*9 + PESEL[4]*1 + PESEL[5]*3 + PESEL[6]*7 + PESEL[7]*9 + PESEL[8]*1 + PESEL[9]*3;

b = a % 10;

c = 10 - b;

d = c % 10;

Ale jak masz kłopoty z opakowaniem tego w program, to może lepiej daj sobie spokój. Postawą roszczeniową tak tutaj, jak i w życiu nigdy nic nie osiągniesz.

Właściwie takie sprawdzenie jest zbyt prymitywne, ponieważ wyjdzie że pesel:

90023019286

jest poprawny, ale nie jest ponieważ data 30 lutego 1990 roku nie istnieje, należy jeszcze sprawdzić poprawność zakodowanej daty.

Pewnie że tak, ale jak tak dalej pójdzie, to napiszemy za niego algorytm.