bancuri, glume, imagini, video, fun, bancuri online, bancuri tari, imagini haioase, videoclipuri haioase, distractie online Pe HaiSaRadem.ro vei gasi bancuri, glume, imagini, video, fun, bancuri online, bancuri tari, imagini haioase, videoclipuri haioase, distractie online. Nu ne crede pe cuvant, intra pe HaiSaRadem.ro ca sa te convingi.

Structura codului ISBN-10

Codul de 10 cifre este impartit in patru parti variabile ca lungime :

Structura codului ISBN-13

Codul ISBN-10 va fi prefixat cu 978 si i se va recalcula cifra de control. Dupa ce se vor epuiza toate codurile ISBN-10 , urmatoarele coduri ISBN-13 se vor prefixa cu 979.

 

Algoritmul de validare al unui cod ISBN - 13

Pasul preliminar: Se elimina spatiile si cratimele. Ultima cifra se ignora (este cifra de control).

Pasul 1: Se inmulteste fiecare cifra cu ponderea asociata ei. Ponderile se atribuie pentru fiecare cifra, incepand cu prima cifra, sub forma 1,3,1,3...

Ponderi 1 3 1 3 1 3 1 3 1 3 1 3 1
ISBN 9 7 8 0 9 0 1 6 9 0 6 6 1
Valori 9 21 8 0 9 0 1 18 9 0 6 18 1

Pasul 2: Se aduna valorile obtinute

Pasul 3: Se imparte suma obtinuta la 10 si se extrage restul (MODULO 10).

Pasul 4: Daca restul este 0 atunci cifra de control trebuie sa fie 0.Daca restul este diferit de 0, atunci se scade restul obtinut din 10. Rezultatul reprezinta cifra de control. Pentru un ISBN-13 valid cifra de control rezultata va trebui sa fie egala cu ultima cifra a codului (cifra 13).

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 9 8 7 6 5 4 3 2
ISBN 0 9 4 0 0 1 6 6 1
Valori 0 81 32 0 0 5 24 18 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).

#include<conio.h>
#include<iostream.h>
#include<stdio.h>
void elimina(int poz,char *isbn)
{
       int i;
       for(i=poz;isbn[i+1]!=NULL;i++)
              isbn[i]=isbn[i+1];
       isbn[i]=NULL;
}
void ignora(char *isbn)
{
       int i;
       for(i=0;isbn[i+1]!=NULL;i++);
       isbn[i]=NULL;
}
int cifra(char *isbn)
{
       int i;
       for(i=0;isbn[i+1]!=NULL;i++);
       return isbn[i]-'0';
}
void preliminar(char *isbn)
{
       int i;
       for(i=0;isbn[i]!=NULL;i++)
       {
              if(isbn[i]==' ' || isbn[i]=='-')
                     elimina(i,isbn);
       }
}
int lungime(char *isbn)
{
       int i;
       for(i=0;isbn[i]!=NULL;i++);
       return i;
}
void depla3(char *isbn)
{
       int n=lungime(isbn);
       int i;
       for(i=n+2;i>=3;i--);
       isbn[i]=isbn[i-2];
}
void prefix10(char *isbn)
{
       depla3(isbn);
       isbn[0]='9';
       isbn[1]='7';
       isbn[2]='8';

}
void prefix13(char *isbn)
{
       depla3(isbn);
       isbn[0]='9';
       isbn[1]='7';
       isbn[2]='9';
}
int isbn13(char *isbn)
{
       int p=1;
       int s=0;
       int c=cifra(isbn);
       for(int i=0;isbn[i+1]!=NULL;i++)
       {
              s=(s+(isbn[i]-'0')*p)%10;
              p=-p+4;
       }
       if(s==0)
       {
              if(s==c)
                     return 1;
              else
                     return 0;
       }
       else
       {
              s=10-s;
              if(s==c)
                     return 1;
              else
                     return 0;
       }

}
int isbn10(char *isbn)
{
       int s=0;
       int c=cifra(isbn);
       int p=10;
       int i;
       for(i=0;isbn[i+1]!=NULL;i++)
       {
              s=(s+(isbn[i]-'0')*p)%11;
              p--;
       }
       if(s==0)
      {
              if(s==c)
                     return 1;
              else
                     return 0;
       }
       else
       {
              if(s==10)
              {
                     if(isbn[9]=='X')
                            return 1;
                     else
                            return 0;
              }
              else
              {
                     s=11-s;
                     if(s==c)
                            return 1;
                     else
                            return 0;
              }
       }
}
void main()
{
       char *isbn;
       cout<<"ISBN";gets(isbn);
       preliminar(isbn);
       if(lungime(isbn)==10)
       {
              cout<<"\n este un ISBN10";
              if(isbn10(isbn))
                     cout<<"\nISBN valid";
              else
                     cout<<"\nISBN invalid";
       }
       else
       {
              if(lungime(isbn)==13)
              {
                     cout<<"\n este un ISBN13";
                     if(isbn13(isbn))
                            cout<<"\nISBN valid";
                     else
                            cout<<"\nISBN invalid";
              }
             else
              {
                     cout<<"\nNu exista un ISBN de aceasta lungime";
              }
       }

}