Sunteți pe pagina 1din 3

Laborator 5 1.

Implementeaz o funcie isPalindrome(x) care returneaz true, dac i numai dac x este un string care este un palindrome (A man, a plan, a canal, Panama!) 2. Implementeaz o funcie checkISBN(id) care primete ca input un string (id) i returneaz true, dac i numai dac id este un numr ISBN valid.
Algoritmul de validare al unui cod ISBN - 10 Pasul preliminar: Se elimina spatiile si cratimele. Ultimul caracter se ignora (este caracterul de control). Pasul 1: Se inmulteste fiecare cifra cu ponderea asociata ei. Ponderile se atribuie pentru fiecare cifra, incepand cu prima cifra, sub forma (11-pozitia cifrei) Ponderi 10 ISBN 0 Valori 0 9 9 81 8 4 32 7 0 0 6 0 0 5 1 5 4 6 24 3 6 18 2 1 2

Pasul 2: Se aduna valorile obtinute Pasul 3: Se imparte suma obtinuta la 11 si se extrage restul (MODULO 11). Pasul 4: Daca restul este 0 atunci caracterul de control trebuie sa fie 0.Daca restul este 10 atunci caracterul de control este 'X'. Daca restul este diferit de 0, atunci se scade restul obtinut din 11. Rezultatul reprezinta caracterul de control. Pentru un ISBN-10 valid caracterul de control rezultat va trebui sa fie egal cu ultimul caracter al codului (caracterul 10).

3. Implementeaz o funcie checkCNP(no) care primete ca input un string (no) i returneaz true, dac i numai dac no este un CNP valid.
Algoritmul de validare al unui cod CNP Pas preliminar: Se testeaza daca codul respecta formatul unui cod CNP. Adica prima cifra sa fie cuprinsa in intervalul 1 - 6 sau sa fie 9 pentru straini. Urmatoarele sase cifre trebuie sa constituie o data calendaristica valida in formatul AALLZZ. Pas 1: Se foloseste cheia de testare "279146358279". Primele douasprezece cifre se inmultesc pe rand de la stanga spre dreapta cu cifra corespunzatoare din cheia de testare. Pas 2: Cele douasprezece produse obtinute se aduna si suma obtinuta se imparte la 11.

Daca restul impartirii la 11 este mai mic ca 10, atunci acesta va reprezenta cifra de control. Daca restul impartirii este 10 atunci cifra de control este 1.

Pentru un CNP valid cifra de control va trebui sa coincida cu cifra de pe pozitia treisprezece din CNP-ul initial.

4. Implementeaz o funcie checkCard(no) care primete ca input un string(no) i returneaz true, dac i numai dac no este un numar de Card valid.

Algoritmul Luhn de validare al unui cod de card Pas 1: Se inmulteste fiecare cifra din codul de card cu ponderea sa. Daca un card are un numar par de cifre, prima cifra are o pondere de 2, daca nu, cifra are o pondere de 1. Dupa aceea , ponderile cifrelor alterneaza 1,2,1,2. Pas 2: Daca orice cifra are o valoare ponderata mai mare decat 9, se scade 9 din valoarea ei. Pas 3: Se aduna toate valorile ponderate si se calculeaza restul impartirii la 10 (MODULO 10). Pas 4: Un cod de card este valid daca rezultatul operatiei MODULO 10 este 0.

5. Implementeaz o funcie checkIBAN(no) care primete ca input un string(no) i returneaz true, dac i numai dac no este un numar IBAN valid.
Algoritmul de validare al unui cod IBAN Pas preliminar: In cazul n care codul IBAN este prezentat pe suport hartie, se converteste formatul acestuia la formatul electronic prin stergerea spatiilor de separare. EXEMPLU: un cod IBAN de tipul RO49 AAAA 1B31 0075 9384 0000 devine RO49AAAA1B31007593840000. Pasul 1: Se muta primele patru caractere (simboliznd codul de tara si caracterele de verificare) la dreapta codului IBAN. EXEMPLU: RO49AAAA1B31007593840000 devine AAAA1B31007593840000RO49. Pasul 2: Se face conversia literelor n numere, conform tabelei urmatoare :

A = 10

G = 16

M = 22

S = 28

Y = 34

B = 11 C = 12 D = 13 E = 14 F = 15

H = 17 I = 18 J = 19 K = 20 L = 21

N = 23 O = 24 P = 25 Q = 26 R = 27

T = 29 U = 30 V = 31 W = 32 X = 33

Z = 35

EXEMPLU: AAAA1B31007593840000RO49 devine 1010101011131007593840000272449 Pasul 3: Se aplica algoritmul MOD 97-10 (conform ISO 7064). Pentru ca cele 2 caractere de verificare sa fie corecte (codul IBAN sa fie corect), restul impartirii numarului astfel obtinut la 97 trebuie sa fie 1. EXEMPLU: Restul impartirii lui 1010101011131007593840000272449 la 97 este 1.