P4. Diseño de funciones elementales

Anuncio
Programación 1
Tema II – Clase de problemas
Diseño de funciones elementales
1
Problema 1º. Diseñar esta función
/*
* Pre: anyo >= 1600
* Post: Devuelve [true] si y solo si [anyo] es un año * bisieto
*/
bool esBisiesto (int anyo) {
... completar la escritura de su código ...
}
2
Diseño C++ de la función esBisiesto(anyo)
/*
* Pre: anyo >= 1600
* Post: Devuelve [true] si y solo si [anyo] es un año * bisieto
*/
bool esBisiesto (int anyo) {
// Un año es bisiesto si es múltiplo de 400 o, siendo
// múltiplo de 4, no lo es de 100. En caso contrario
// no es bisiesto
return (anyo % 4 == 0 && anyo % 100 != 0) || (anyo % 400 == 0);
}
3
Problema 2º. Diseñar esta función
/*
* Pre: anyo >= 1600
* Post: Devuelve el número de días del año [anyo]
*/
int diasDelAnyo (int anyo) {
... completar la escritura de su código ...
}
4
Diseño C++ de la función diasDelAnyo(anyo)
/*
* Pre: anyo >= 1600
* Post: Devuelve el número de días del año [anyo]
*/
int diasDelAnyo (int anyo) {
// Si el año es bisiesto tiene 366 días y,
// si no lo es, tiene 365 días
if (esBisiesto(anyo)) { return 366; }
else { return 365; }
}
5
Problema 3º. Diseñar esta función
/*
* Pre: mes >= 1 y mes <= 12 y anyo >= 1600
* Post: Devuelve el número de días del mes [mes] * del año [anyo]
*/
int diasDelMes (int mes, int anyo) {
... completar la escritura de su código ...
}
6
Diseño C++ de la función diasDelMes(mes,anyo)
/*
* Pre: mes >= 1 y mes <= 12 y anyo >= 1600
* Post: Devuelve el número de días del mes [mes] del año [anyo]
*/
int diasDelMes (int mes, int anyo) {
// Los meses 1, 3, 5, 7, 8, 10 y 12 tienen 31 días, los // meses 4, 6, 9 y 11 tienen 30 días y el mes 2 tiene 28
// días los años no bisiestos y 29 días los años bisiestos
if (mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12) { return 31; }
else if (mes==4 || mes==6 || mes==9 || mes==11) { return 30; }
else if (esBisiesto(anyo)) { return 29; } else { return 28; }
}
7
Problema 4º. Diseñar esta función
/*
* Pre: [fecha] escrita en base 10 tiene la forma
* aaaammdd donde los dígitos aaaa representan
* el año, los dígitos mm el mes y los dígitos dd
* el día de una fecha
* Post: Devuelve el valor del día (entre 1 y 31) * correspondiente a la fecha del calendario * representada por el entero [fecha]
*/
int dia (int fecha) {
... completar la escritura de su código ...
}
8
Diseño C++ de la función dia(fecha)
/*
* Pre: [fecha] escrita en base 10 tiene la forma
* aaaammdd donde los dígitos aaaa representan
* el año, los dígitos mm el mes y los dígitos dd
* el día de una fecha
* Post: Devuelve el valor del día (entre 1 y 31) * correspondiente a la fecha del calendario * representada por el entero [fecha]
*/
int dia (int fecha) {
return fecha % 100;
}
9
Problema 5º. Diseñar esta función
/*
* Pre: [fecha] escrita en base 10 tiene la forma
* aaaammdd donde los dígitos aaaa representan
* el año, los dígitos mm el mes y los dígitos dd
* el día de una fecha
* Post: Devuelve el valor del mes (entre 1 y 12) * correspondiente a la fecha del calendario * representada por el entero [fecha]
*/
int mes (int fecha) {
... completar la escritura de su código ...
}
10
Diseño C++ de la función mes(fecha)
/*
* Pre: [fecha] escrita en base 10 tiene la forma
* aaaammdd donde los dígitos aaaa representan
* el año, los dígitos mm el mes y los dígitos dd
* el día de una fecha
* Post: Devuelve el valor del mes (entre 1 y 12) * correspondiente a la fecha del calendario * representada por el entero [fecha]
*/
int mes (int fecha) {
return fecha / 100 % 100;
}
11
Problema 6º. Diseñar esta función
/*
* Pre: [fecha] escrita en base 10 tiene la forma
* aaaammdd donde los dígitos aaaa representan
* el año, los dígitos mm el mes y los dígitos dd
* el día de una fecha
* Post: Devuelve el valor del año correspondiente
* a la fecha del calendario representada * por el entero [fecha]
*/
int anyo (int fecha) {
... completar la escritura de su código ...
}
12
Diseño C++ de la función mes(fecha)
/*
* Pre: [fecha] escrita en base 10 tiene la forma
* aaaammdd donde los dígitos aaaa representan
* el año, los dígitos mm el mes y los dígitos dd
* el día de una fecha
* Post: Devuelve el valor del año correspondiente
* a la fecha del calendario representada * por el entero [fecha]
*/
int anyo (int fecha) {
return fecha / 10000;
}
13
Problema 7º. Diseñar esta función
/*
* Pre: [fecha] escrita en base 10 tiene la forma
* aaaammdd donde los dígitos aaaa representan
* el año, los dígitos mm el mes y los dígitos dd
* el día de una fecha
* Post: Asigna a [elDia], [elMes] y [elAnyo] los valores * del día, del mes y del año, respectivamente,
* que corresponden a la fecha del calendario * representada por el entero [fecha]
*/
void descomponer (int fecha, int& elDia, int& elMes, int& elAnyo) {
... completar la escritura de su código ...
}
14
Diseño C++ de la función descomponer(…)
/*
* Pre: [fecha] escrita en base 10 tiene la forma
* aaaammdd donde los dígitos aaaa representan
* el año, los dígitos mm el mes y los dígitos dd
* el día de una fecha
* Post: Asigna a [elDia], [elMes] y [elAnyo] los valores * del día, del mes y del año, respectivamente,
* que corresponden a la fecha del calendario * representada por el entero [fecha]
*/
void descomponer (int fecha, int& elDia, int& elMes, int& elAnyo) {
elDia = dia(fecha); elMes = mes(fecha);
elAnyo = anyo(fecha); }
15
Problema 8º. Diseñar esta función
/*
* Pre: los valores [dia]/[mes]/[anyo] definen una fecha * del calendario
* Post: Asigna a [fecha] un valor que defina la fecha * [dia]/[mes]/[anyo] sabiendo que [fecha], cuando
* sea escrito en base 10, tiene la forma aaaammdd,
* donde los dígitos aaaa representan el año, * los dígitos mm el mes y los dígitos dd el día * de la fecha que representa
*/
void componer (int dia, int mes, int anyo, int& fecha) {
... completar la escritura de su código ...
}
16
Diseño C++ de la función componer(…)
/*
* Pre: los valores [dia]/[mes]/[anyo] definen una fecha * del calendario
* Post: Asigna a [fecha] un valor que defina la fecha * [dia]/[mes]/[anyo] sabiendo que [fecha], cuando
* sea escrito en base 10, tiene la forma aaaammdd,
* donde los dígitos aaaa representan el año, * los dígitos mm el mes y los dígitos dd el día * de la fecha que representa
*/
void componer (int dia, int mes, int anyo, int& fecha) {
fecha = dia + 100 * mes + 10000 * anyo;
}
17
18
Descargar