Está en la página 1de 5

TALLER DE PROGRAMACIÓN Práctica 1

Esta práctica está diseñada para ejercitar el uso de scanf, if else (o switch), como indica
claramente el nombre de la práctica. Por lo tanto, y como es obvio, NO ESTÁ PERMITIDO el
uso de bucles (while, do while, for), ni arrays (o strings).

La fórmula para calcular la letra del DNI y obtener el NIF es la siguiente:


Tomamos el número completo de hasta 8 cifras de nuestro DNI, lo dividimos entre 23 y
nos quedamos con el resto de dicha división, o dicho de otro modo, calculamos el
módulo 23 del DNI.

El resultado anterior es un número entre 0 y 22. A cada uno de estos posibles números
le corresponde una letra, según la siguiente tabla:

RES 1 1 1 1 1 1 1 1 1 1 2 2 2
TO 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2

LET
RA T R W A G M Y F P D X B N J Z S Q V H L C K E

Sólo queda poner el número completo junto a la letra obtenida en el paso anterior y ya
tienes el NIF con su letra correspondiente.

En esta práctica se debe leer por teclado el DNI, carácter a carácter, y generar un
unsigned integer correspondiente a los caracteres leídos. El DNI puede comenzar por
ceros. Una vez generado el DNI se obtendrá la letra, según el algoritmo descrito
anteriormente.

Figura 1. Ejemplo de ejecución del programa


TALLER DE PROGRAMACIÓN Práctica 1

#include <stdio.h>
#include <stdlib.h>

main()
{ int n,n1,n2,n3,n4,n5,n6,n7,n8,r,s;

do{
printf("Dni digito 1: ");
scanf("%u",&n1);
} while (n1<0||n1>9);

do{
printf("Dni digito 2: ");
scanf("%u",&n2);
} while (n2<0||n2>9);

do{
printf("Dni digito 3: ");
scanf("%u",&n3);
} while (n3<0||n3>9);

do{
printf("Dni digito 4: ");
scanf("%u",&n4);
} while (n4<0||n4>9);

do{
printf("Dni digito 5: ");
scanf("%u",&n5);
} while (n5<0||n5>9);

do{
printf("Dni digito 6: ");
scanf("%u",&n6);
} while (n6<0||n6>9);

do{
printf("Dni digito 7: ");
scanf("%u",&n7);
} while (n7<0||n7>9);

do{
printf("Dni digito 8: ");
scanf("%u",&n8);
} while (n8<0||n8>9);

n=n1*10000000+n2*1000000+n3*100000+n4*10000+n5*1000+n6*100+n7*10+n8;
TALLER DE PROGRAMACIÓN Práctica 1

printf("El numero de dni es %08d: \n",n);

r=n%23;

printf(" \n El resto del dni es %u",r);

printf("\n Introduzca el resto calculado: ");


scanf("%u",&s);

printf("El DNI completo es:%08d",n);


switch(s)
{
case 0: printf("T \n");
break;
case 1: printf("R \n");
break;
case 2: printf("W \n");
break;
case 3: printf("A \n");
break;
case 4: printf("G \n");
break;
case 5: printf("M \n");
break;
case 6: printf("Y \n");
break;
case 7: printf("F \n");
break;
case 8: printf("P \n");
break;
case 9: printf("D \n");
break;
case 10:printf("X \n");
break;
case 11: printf("B \n");
break;
case 12: printf("N \n");
break;
case 13: printf("J \n");
break;
case 14: printf("Z \n");
break;
case 15: printf("S \n");
break;
case 16: printf("Q \n");
break;
case 17: printf("V \n");
break;
case 18: printf("H \n");
break;
TALLER DE PROGRAMACIÓN Práctica 1

case 19: printf("L \n");


break;
case 20: printf("C \n");
break;
case 21: printf("K \n");
break;
case 22: printf("E \n");
break;
default:printf("Día erróneo\n");

}
TALLER DE PROGRAMACIÓN Práctica 1

También podría gustarte