ADVERTENCIA: LOS SIGUIENTES ALGORITMO SE ENTREGA "COMO SON" ("AS IS") SiN GARANTIA DE NINGUN TIPO. DEBE REALIZAR LAS VERIFICACIONES CORRESPONDIENTES ANTES DE EMPLEARLOS PARA CUALQUIER FIN. SOLO TIENEN UNA FINALIDAD EDUCATIVA.

viernes, 9 de noviembre de 2012

Ejemplo de algoritmo en PseInt para la revisión de la validez del ISBN-13


Proceso checkISBN

 Definir ISBN como cadena;
 Definir multiplicando como entero;
 Definir no_es_numero como Logico;
 Definir continuar como logico;
 Definir suma como entero;
 Definir dig como caracter;
 Definir check como entero;
 Definir check_i como entero;
 Definir i como entero;

 continuar <- verdadero;
 Mientras continuar Hacer



 Escribir "Ingrese ISBN de 13 digitos (solo primeros 12 digitos):";
 Leer ISBN;
 Escribir "Ingrese el ultimo digito";
 Leer check_i;


 Dimension array [12];
 Dimension array_n[12];

 Para i<-0 Hasta 11 Con Paso 1 Hacer
  dig <- Subcadena(ISBN,i,i);
  no_es_numero <- ~(dig = "1" | dig = "2" | dig = "3" | dig = "4" | dig = "5" | dig = "6" | dig = "7" | dig = "8" | dig = "9" |  dig = "0");
  dig <- Subcadena(ISBN,i,i);
  Si no_es_numero Entonces
   Escribir "Error: ",dig," no es numero";
   i <- i + 16;
  FinSi
 FinPara

 Si no_es_numero Entonces
 
  continuar <- verdadero;
 
 Sino
  continuar <- falso;
 
 FinSi

 FinMientras

 multiplicando <- 1;

 suma <- 0;


 Para i<-0 Hasta 12 Con Paso 1 Hacer
  dig <- Subcadena(ISBN,i,i);
  Si dig = "1" Entonces
   suma <- suma + multiplicando;
  FinSi
  Si dig = "2" Entonces
   suma <- suma + 2*multiplicando;
  FinSi
  Si dig = "3" Entonces
   suma <- suma + 3*multiplicando;
  FinSi
  Si dig = "4" Entonces
   suma <- suma + 4*multiplicando;
  FinSi
  Si dig = "5" Entonces
   suma <- suma + 5*multiplicando;
  FinSi
  Si dig = "6" Entonces
   suma <- suma + 6*multiplicando;
  FinSi
  Si dig = "7" Entonces
   suma <- suma + 7*multiplicando;
  FinSi
  Si dig = "8" Entonces
   suma <- suma + 8*multiplicando;
  FinSi
  Si dig = "9" Entonces
   suma <- suma + 9*multiplicando;
  FinSi
  Si multiplicando = 3 Entonces
   multiplicando <- 1;
  Sino
   multiplicando <- 3;
  FinSi
 FinPara

 check <- suma % 10;



 Si 10 - check_i = check Entonces
  Escribir "El ISBN es Valido";
 Sino
  Escribir "El ISBN es invalido \n El utimo digito deberia ser: ", (10 - check_i);
 
 FinSi


FinProceso

No hay comentarios:

Publicar un comentario