10. ISO/IEC 7064, MOD 11,10

10.1. Versión para enteros

/*
 *  programa para calcular la cifra de verificación según ISO/IEC 7064, MOD 11,10 
 * 
 *  Ing. Germán Andrés Xander 2022
 */

#include <iostream>
using namespace std;

int main(int argc, char **argv){
   int numero, parcial, longitud=0, producto=10, suma=0, digito, verificador;
   cout<<"ingrese el número a evaluar"<<endl;
   cin>>numero;
   parcial=numero;
       
   while (parcial>0) {    //cuento la cantidad de dígitos
      parcial= parcial/10;
      longitud ++;
   }
   cout<<"la lungitud es: "<<longitud<<endl;

   parcial=numero;    
   for (int i=longitud;i>0;i--){
      int divisor=1;
      for (int j=1;j<i; j++){
         divisor=divisor*10;  // genero el divisor para aislar el digito
      }
      cout<<"el divisor es "<<divisor<<endl;
      digito=(parcial/divisor);
      parcial=parcial-(digito*divisor);
      cout<<"el digito es: "<<digito<<endl;  //aislo el dígito correspondiente
      
      suma= (digito + producto) % 10;
      if (suma == 0) suma=10;
      producto=(suma * 2) % 11;
   }
   verificador= 11 - producto;
   if (verificador == 10) verificador = 0;
   
   // para verificar la suam final tiene que ser 1
   
   cout<<"el digito de verificacion es: "<<verificador<<endl;
   cout<<"la suma es: "<<suma;
   return 0;
}