algorytm.org

ISBN (ISBN-13)



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

ISBN (ISBN-13)
Ocena użytkowników:***** / 132
SłabyŚwietny 
Wpisany przez Tomasz Lubiński, 24 lipca 2007 11:17

Od 1 stycznia 2007 roku książki oznaczane są wyłącznie numerem ISBN-13, który jest rozszerzeniem numeru ISBN-10, powstałym z następujących powodów:
  • zwiększenie liczby dostępnych numerów ISBN,
  • uzgodnienie numeru ISBN z systemem EAN (a dokładniej EAN-13), który jest powszechnie używany do oznaczania produktów.

Numer ISBN-13 (ang. International Standard Book Number) służy do oznaczania książek. Ma on następującą strukturę:
  • prefiks (3 znaki),
  • separator '-',
  • identyfikator kraju/języka (1-5 znaków),
  • separator '-',
  • identyfikator wydawcy (przynajmniej 1 znak),
  • separator '-',
  • identyfikator tytułu (przynajmniej 1 znak),
  • separator '-',
  • suma kontrolna ISBN (jedna cyfra),
  • dodatkowe informacje - opcjonalnie (5 cyfr).
Cały numer składać musi się z 13 cyfr (+ ewentualne 5 cyfr na dodatkowe informacje). Rozmiary poszczególnych części w identyfikatorze ISBN-13 za wyjątkiem prefiksu nie są stałe. I tak, mały wydawca będzie miał długi numer wydawcy i krótszy numer oznaczający książkę. Natomiast duży wydawca będzie miał krótszy numer wydawcy i więcej miejsca na numer książki. Jeżeli danemu wydawcy wyczerpie się pula numerów książki to przyznawany jest mu nowy numer wydawcy.
Należy zwrócić uwagę iż odseparowywanie kolejnych części numeru ISBN pozwala łatwo zorientować się, gdzie zaczynają się kolejne pola, ale nawet bez separatorów '-' możliwe byłoby wyznaczenie kodów kraju/wydawcy/książki. Dzieje się tak, gdyż raz wykorzystanego kodu nie wykorzystuje się jako prefiksu innego. I tak np numer 2 oznacza obszar francuskojęzyczny i żaden inny kod kraju nie zaczyna się na 2. Podobnie 83 oznacza Polskę, ale nie ma innych kodów kraju zaczynających się od 83.
Początkowo używany prefiks wynosi "978". Poprzez dodanie od numeru ISBN-10 prefiksu "978" i ponowne obliczenie sumy kontrolnej otrzymujemy numer ISBN-13. Prefiks "978" będzie używany tak długo, aż zużyte zostaną wszystkie dostępne kombinacje pozostałych cyfr składających się na kraj, wydawcę i tytuł. Po ich wyczerpaniu zostanie wprowadzony nowy prefiks. Oczywiście tylko numery z prefiksem "978" będą mogły być przetłumaczone z powrotem na ISBN-10, w przypadku nowych prefiksów nie będzie to już możliwe.
Dodatkowe 5 cyfr w numerze ISBN-13 może oznaczać cenę zakodowaną w następujący sposób. Pierwsza cyfra oznacza walutę (patrz tabela poniżej), 4 kolejne cyfry oznaczają cenę pomnożoną razy 100. Wynika z tego że kod: 51234 oznaczać będzie cenę: 12.34$. Kod o końcówce 9999 oznacza cenę 99.99 lub większą.

pierwsza
cyfra
waluta
0GBP - funt brytyjski
1GBP - funt brytyjski
3$ - dolar australijski
4$ - dolar nowozelandzki
5$ - dolar amerykański
6$ - dolar kanadyjski


Obliczanie cyfry kontrolnej dla identyfikatora ISBN-13 przebiega następująco. Dla identyfikatora ISBN-13 wagi przez które mnożymy kolejne cyfry wynoszą: 1 3 1 3 1 3 1 3 1 3 1 3. Następnie wynik dzielimy modulo 10, i odejmujemy go od 10. Nastepnie ten wynik dzielimy znów modulo 10. Wynik musi być zgodny z ostatnią cyfrą kodu EAN-13.

Przykład:

Sprawdźmy czy numer: 978-83-87347-42-0 jest prawidłowy.
Kolejne cyfry numeru należy zatem przemnożyć przez odpowiednie wagi i dodać do siebie.
1*9 + 3*7 + 1*8 + 3*8 + 1*3 + 3*8 + 1*7 + 3*3 + 1*4 + 3*7 + 1*4 + 3*2 = 9 + 21 + 8 + 24 + 3 + 24 + 7 + 9 + 4 + 21 + 4 + 6 = 140.
Teraz dzielimy ten wynik modulo 10.
140 mod 10 = 0.
Następnie wynik ten odejmujemy od 10.
10 - 0 = 10.
I znów dzielimy modulo 10.
10 mod 10 = 0.
Cyfra kontrolna to 0 zatem numer jest prawidłowy.

Implementacje
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Tomasz LubińskiC/C++
.cpp
.cpp
***** / 2
Tomasz LubińskiDelphi/Pascal
.pas
.pas
***** / 2
Tomasz LubińskiJava
.java
.java
***** / 3
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język
programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie



Kody krajów dla ISBN
0Obszar anglojęzyczny:
Australia, Kanada, Gibraltar, Irlandia, (Namibia), Nowa Zelandia, Puerto Rico, Republika Południowej Afryki, Swaziland, UK, USA, Zimbabwe
1Obszar anglojęzyczny:
Australia, Kanada, Gibraltar, Irlandia, (Namibia), Nowa Zelandia, Puerto Rico, Republika Południowej Afryki, Swaziland, UK, USA, Zimbabwe
2Obszar francuskojęzyczny:
Francja, Belgia, Kanada, Luksemburg, Szwajcaria
3Obszar niemieckojęzyczny:
Austria, Niemcy, Szwajcaria
4Japonia
5Federacja Rosyjska, Ukraina, Bialoruś, Estonia, Litwa, Kazahstan, Kirgistan, Mołdawia, Łotwa, Georgia, Armenia
7Chiny
80Czechy, Słowacja
81Indie
82Norwegia
83Polska
84Hiszpania
85Brazylia
86Bośnia i Hercegowina, Chorwacja, Macedonia, Słowenia
87Dania
88Obszar włoskojęzyczny:
Włochy, Szwajcaria
89Korea
90Holandia
91Holandia, Belgia, Szwecja
92Wydawcy międzynarodowi (UNESCO, UE), Organizacje Wspólnoty Europejskiej
93Indie
950Argentyna
951Finlandia
952Finlandia
953Chorwacja
954Bułgaria
955Sri Lanka
956Chile
957Tajwan, Chiny
958Columbia
959Kuba
960Grecja
961Słowenia
962Hong Kong
963Węgry
964Iran
965Izrael
966Ukraina
967Malezja
968Meksyk
969Pakistan
970Meksyk
971Filipiny
972Portugalia
973Rumunia
974Tajlandia
975Turcja
976Karaiby
977Egipt
978Nigeria
979Indonezja
980Wenezuela
981Singapur
982Południowy Pacyfik
983Malezja
984Bangladesz
985Białoruś
986Tajwan, Chiny
987Argentyna
988Hongkonga
989Portugalia
9946Korea
9947Algieria
9948Estonia
9949Palestyna
9951Kosowo
9952Azerbejdżan
9953Liban
9954Maroko
9955Litwa
9956Kamerun
9957Jordania
9958Bośnia i Hercegowina
9959Libia
9960Arabia Saudyjska
9961Algieria
9962Panama
9963Cypr
9964Ghana
9965Kazachstan
9966Kenia
9967Kirgistan
9968Kostaryka
9970Uganda
9971Singapur
9972Peru
9973Tunezja
9974Urugwaj
9975Mołdawia
9976Tanzania
9977Kostaryka
9978Ekwador
9979Islandia
9980Papua Nowa Gwinea
9981Maroko
9982Zambia
9983Gambia
9984Łotwa
9985Estonia
9986Litwa
9987Tanzania
9988Ghana
9989Macedonia
99901Bahrain
99902Gabon
99903Mauritius
99904Antyle Holenderskie
99905Boliwia
99906Kuwejt
99908Malawi
99909Malta
99910Sierra Leone
99911Lesoto
99912Botswana
99913Andora
99914Suriname
99915Malediwy
99916Namibia
99917Brunei Darussalam
99918Wyspy Faroe
99919Benin
99920Andora
99921Katar
99922Gwatemala
99923El Salvador
99924Nikaragua
99925Paragwaj
99926Honduras
99927Albania
99928Georgia
99929Mongolia
99930Armenia
99931Seszele
99932Malta
99933Nepal
99934Republika Dominikany
99935Haiti
99936Butan
99937Makao
99938Serbia
99939Gwatemala
99940Georgia
99941Armenia
99942Sudan
Poprawiony: 29 sierpnia 2012 20:15
Dodaj komentarz