RETO10A - Código Barras
Códigos de barras
En el lejano 1952, tres norteamericanos patentaron lo que termino llamándose código de barras.
Consiste en una técnica para representar números (y, en menos ocasiones, letras) mediante una serie de líneas verticales paralelas, con diferentes grosores y separaciones entre ellas. Si bien el primer uso sirvió para idéntica de manera automática los vagones de un ferrocarril, hoy los códigos de barras se utilizan en infinidad de lugares, siendo la catalogación de productos la más habitual.
La manera concreta de codiciar mediante barras los números y las letras puede ser muy variada, lo que ha llevado a la aparición de diferentes estándares. De todos ellos, el EAN (European Article Number) resulta ser el más extendido. De _este, hay principalmente dos formatos, que se diferencian en el ancho.
Existe así el llamado EAN-8, que codifica 8 números, y el EAN-13, que, naturalmente, codifica 13.
El _ultimo dígito del código se utiliza para detección de errores, y se calcula a partir de los demás.
Para eso:
_ Empezando por la derecha (sin contar el dígito de control que se está calculando), se suman los dígitos individuales, multiplicados por un factor:
-Los dígitos en posiciones impares (empezando a contar por la derecha saltándonos el de Control) se multiplican por 3.
-Los dígitos en posiciones pares se multiplican por 1.
Por ejemplo, para el código EAN-8 de la _gura la operación a realizar es:
2 _ 3 + 5 _ 1 + 9 _ 3 + 3 _ 1 + 8 _ 3 + 5 _ 1 + 6 _ 3 = 88
_ El dígito de comprobación es el número que hay que sumar al resultado anterior para llegar a un valor múltiplo de 10. En el ejemplo de EAN-8, para llegar al múltiplo de 10 más cercano por encima del número 88 hay que sumar 2 (y llegar al 90). Ten en cuenta que si la suma resulta ser ya múltiplo de 10, el dígito de control será 0.
En EAN-13, los primeros dígitos se usan además para idéntica al país. A continuación se indica una tabla (parcial) de esos códigos de país.
Código |
País |
0 |
EEUU |
380 |
BULGARIA |
50 |
INGLATERRA |
539 |
IRLANDA |
560 |
PORTUGAL |
759 |
VENEZUELA |
Input
La entrada estará formada por una serie de casos de prueba. Cada uno contendrá una sucesión de
números pertenecientes a un código de barras EAN-8 o EAN-13, incluyendo el dígito de control. Si el número de dígitos es inferior a 8, se asumirá que es un código EAN-8; si es superior a 8 pero inferior a 13,se asumirá EAN-13. En ambos casos, se completaran el resto de dígitos colocando ceros a la izquierda.
El _último caso de prueba es seguido por una línea con un 0 que no provoca salida.
Output
Para cada caso de prueba, el programa indicará si el dígito de control es correcto o no. Si lo es,
escribirá \SI". En otro caso, escribirá \NO".
Si el código de barras es EAN-13 y correcto, el programa escribirá además el país al que pertenece
utilizando la tabla anterior (separado por un espacio). Si el código no aparece en la tabla, el programa
mostrará \Desconocido". Ten cuidado al escribir los países; deberás respetar el uso de mayúsculas y minúsculas de la tabla.
Example
Input:6583952265839521841453304384765839522 65839521 8414533043847 5029365779425 5129365779425 0502936577942551293657794250Output: SI NO SI Desconocido SI Inglaterra NO
Added by: | MaratónAFDM |
Date: | 2017-10-06 |
Time limit: | 1s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | C NCSHARP CSHARP C++ 4.3.2 JAVA JULIA NODEJS PHP PYTHON PYPY3 VB.NET |