Sei sulla pagina 1di 3

Informática avanzada

Práctica 1

Notas importantes:
• Si no os da tiempo de terminar todos los ejercicios durante la sesión de prácticas es muy
importante que los terminéis después por vuestra cuenta.

Ejercicio 1: Cread un proyecto C++ vacío en Visual Studio. Generad e incluid en el proyecto
los siguientes ficheros:

1. Principal.cpp: en este fichero colocaremos la función main().


2. Session1.cpp: este fichero contendrá el código fuente de las funciones principales de
la sesión
3. Session1.h: este fichero contendrá los encabezados de las funciones generadas

Ejercicio 2: Implementad en el fichero Sesion1.cpp una función del tipo:


bool checkInterval(int num, int min, int max)

que retorna true si el valor de num está entre min y max, en otro caso retorna false.

Ejercicio 3: Este ejercicio consiste en solicitar a un usuario por pantalla la fecha de


nacimiento (DD/MM/AAAA). Se tiene que validar que la fecha es correcta, es decir, que los días
(DD) están dentro del rango de días que tiene el mes (MM) correspondiente al año. La fecha no
puede ser anterior a 1910.

Nota: Recordad que si un año es bisiesto el mes de febrero tiene 29 días. Un año es
bisiesto si es múltiplo de 4, pero no es múltiplo de 100 ni de 400.

Para llevar a cabo este ejercicio implementad en el fichero Session1.cpp las siguientes
funciones auxiliares:
˗ bool checkDate(int d, int m, int a) //retorna true si la fecha es correcta
˗ void showDate(int d, int m, int a) //muestra la fecha en formato(DD/MM/AAAA)

los parámetros de entrada a las funciones son los valores del día (d), mes (m) y año (a).

Una vez se han implementado las funciones anteriores, el flujo principal en la función main(),
que está en el fichero Principal.cpp, es:
void main()
{
::::::::
cout << "Fecha de Nacimiento, DD: ";
cin >> dia;
cout << " , MM: ";
cin >> mes;
cout << " , anyo: ";
cin >> anyo;

if (checkDate(dia, mes, anyo))


showDate(dia, mes, anyo);
::::::
}

Modificad el código anterior de forma que el usuario tenga un máximo de 3 intentos para
introducir una fecha correcta. Finalmente, generad una función del tipo: void Fecha(),
que contenga el flujo principal del ejercicio, de tal forma que la función main() llame a ésta
función.
Informática Avanzada
Práctica 1

Ejercicio 4: Este ejercicio consiste en solicitar a un usuario por pantalla su número de


DNI/NIE. Luego se tiene que validar si éste es correcto, si es así se imprime en pantalla con
letras mayúsculas.

Nota: Recordad que los DNI/NIE llevan una letra al final que sirve para comprobar si hay
algún error en el número asociado. El número asociado es el número del DNI o el valor del
número del NIE sustituyendo la primera X, Y o Z por 0, 1 o 2, respectivamente. La letra de
control es la que se asocia a la tabla inferior según el valor del modulo del número asociado
por 23:
% 0 1 2 3 4 5 6 7 8 9 10 11
LETRA T R W A G M Y F P D X B

% 12 13 14 15 16 17 18 19 20 21 22
LETRA N J Z S Q V H L C K E

Por ejemplo: si el número del DNI es 12345678, el módulo por 23 es 14, y, por tanto, la letra
sería la Z: 12345678Z.

Para llevar a cabo este ejercicio implementad en el fichero Session1.cpp las siguientes
funciones auxiliares:
˗ bool checkDNI(string dniC) //retorna true si el DNI/NIE es correcto
˗ char checkNIE(char letter) //letter= 'X'/'Y'/'Z' retorna '0'/'1'/'2'
˗ string stringToUpper(string strToConvert) //convierte todos los caracteres
// del string en mayúscula y retorna el nuevo string

Los parámetros de entrada a las funciones son: dniC es el DNI/NIE, letter es la primera letra
del NIE, strToConvert es el DNI/NIE.

Una vez se han implementado las funciones anteriores, el flujo principal en la función main(),
que está en el fichero Principal.cpp, es:
void main()
{
:::::::
cout << "DNI: " ;
cin >> auxDNI;

if (checkDNI(auxDNI))
{
DNI = stringToUpper(auxDNI);
cout << DNI << endl;
}

:::
system("pause");
}

Modificad el código anterior de forma que el usuario tenga un máximo de 3 intentos para
introducir un NIE/DNI correcto.
Informática Avanzada
Práctica 1

Funciones útiles:
x % y Retorna el modulo de x respecto a y
length() Retorna la longitud de un string. Es una función del tipo de dato string.
Ejm:
string s;
longitud = s.length();
c_str() Devuelve un puntero a un array que contiene una secuencia de
terminación nula de caracteres. Es una función del tipo de dato string.
Ejm:
string s;
const char *numPtr = s. c_str();
int atoi(const char *numPtr); Convierte la porción inicial de la cadena apuntada por numPtr a una
representación de int. Retorna el valor convertido.
isdigit(ch) Comprueba sin un carácter es un dígito decimal. El valor de retorno será
no nulo si ch es un dígito decimal.
Toupper(ch) Convierte un carácter a mayúscula. Devuelve el valor convertido.

Potrebbero piacerti anche