FPjunio Con Solucion
FPjunio Con Solucion
FPjunio Con Solucion
NOMBRE...................................................................................................................................
NÚM. de MATRÍCULA...............................................................................................................
1. [0.5 puntos por cada apartado] Dado un formato de representación binaria de un valor numérico real en
coma flotante normalizada con 9 bits, 5 para mantisa y 4 para exponente, ambos en complemento a 2:
a) representar en este formato binario el valor decimal -0.25 y 11000 1111
b) indicar, en el sistema numérico decimal, el valor positivo más
grande (el de mayor valor absoluto) que se puede representar. 0.9375· 27 = 120.00
2. Construir una función para que, dado un void deBinaDec(int n, int *d) {
parámetro entero que sólo tiene cifras de int i = 1;
ceros y unos (como un número representado *d = 0;
do {
en el sistema binario), calcule y guarde el *d = *d + (n % 10)*i;
valor decimal correspondiente en la variable i = i * 2;
entera cuya dirección de memoria se indica n = n / 10;
en el segundo parámetro. Por ejemplo, la } while (n>0);
}
llamada a la función deBinaDec(1110, &a)
deberá guardar el valor 14 en a.
3. Escribir una función crecientes que, al ejecutarse, pida al usuario introducir por teclado valores
estrictamente positivos que sean asignados a los n primeros elementos de un array v de datos de tipo
double. La petición de valor para su asignación a cada elemento del array se debe repetir si el valor
introducido no es estrictamente mayor que el anterior. Por lo tanto, al terminar la ejecución de la función
los n primeros valores del array deben tener valores estrictamente positivos en orden estrictamente
creciente. v y n son los dos parámetros de la función. Nota: se supone que n es siempre mayor que 0.
#include <stdio.h>
#define DIM 5
int neg(double a[][DIM], int n) { /* Funcion ya codificada por Juan */ }
int main () {
int ok;
if ( ok )
printf("Funciona BIEN en los tres casos\n");
else
printf("NO funciona bien\n");
return 0;
}
5. Construir una función contiene que indique si todos los caracteres de una cadena s1 se encuentran en
otra s2. En este caso, la función debe retornar el valor 1 y, en caso contrario, debe retornar el valor 0.
s1 y s2 son los parámetros de la función. Si s1 está vacía la función debe retornar el valor 1. Por ejemplo,
la llamada a contiene("ella", "clave") debe retornar el valor 1, mientras que contiene("bola",
"pelota") debe retornar el valor 0. Nota: puede emplearse la librería string.h.
int contiene(char *s1, char *s2) {
int i, j, distintos;
for (i=0; i<strlen(s1); i++) {
distintos = 0;
for (j=0; j<strlen(s2); j++)
if (s1[i]!=s2[j])
distintos++;
if (distintos==strlen(s2))
return 0;
}
return 1;
}
6. Escribir una función equals para que retorne 1 si los valores de todos los struct item {
campos respectivos de dos parámetros de tipo struct item son iguales y char id[9];
char clase;
0 en caso contrario. La declaración del tipo de dato struct item se facilita int un[10];
a la derecha. Nota: puede emplearse la librería string.h. };
8. Construir una función que retorne el elemento que almacene la hora más
tardía de los n primeros elementos de un array t formado con elementos de /* Declaracion
del tipo de
tipo struct hora. El campo hh puede almacenar valores entre 0 y 11, el dato: */
campo mm guarda valores entre 0 y 59 y el campo ap puede almacenar el valor
"AM" (Ante Meridiem) o "PM" (Post Meridiem). t y n son los dos parámetros de la struct hora {
función. Nota 1: Como ejemplo de comparación, la hora {0, 0, "PM"} es int hh;
int mm;
posterior a la hora {11, 59, "AM"}. Nota 2: Si n vale 0 entonces debe char ap[3];
retornar un elemento con el valor {0, 0, "AM"}. Nota 3: si es necesario };
puede emplearse la librería string.h.
#include <string.h>
void monitorizar(char * ruta, char * empleado, char * mac){
int menos = 9999, aux, tiempo;
FILE * f;
char emplAux[21];
char macAux[18];
strcpy(empleado, "");
strcpy(mac, "");
f = fopen(ruta, "r");
if (f!=NULL) {
do {
aux = fscanf(f, "%20s %17s %d\n", emplAux, macAux, &tiempo);
if ((aux==3) && (tiempo<menos)) {
strcpy(empleado, emplAux);
strcpy(mac, macAux);
menos = tiempo;
}
} while (aux==3);
fclose(f);
} else {
printf("Archivo no encontrado\n");
}
return;
}
10. Escribir una función nAleatorias para que genere un archivo de texto,
cuyo nombre se indica como parámetro, con dos calificaciones numéricas
reales aleatorias (dentro del intervalo entre 0 y 10), separadas por
caracteres de coma, para cada uno de los 100 alumnos con nº de matrícula
entre 22900 y 22999 (ambos incluidos), como, a modo de ejemplo, se
muestra en la figura de la derecha para las primeras siete líneas de texto.
Además la función debe retornar el valor 1 si ha conseguido generar el
archivo correctamente y 0 en caso contrario.
NÚM. de MATRÍCULA...............................................................................................................
1. [0.5 puntos por cada apartado] Dado un formato de representación binaria de un valor numérico real en
coma flotante normalizada con 9 bits, 5 para mantisa y 4 para exponente, ambos en complemento a 2:
a) representar en este formato binario el valor decimal -0.125 y 11000 1110
b) indicar, en el sistema numérico decimal, el valor positivo más
grande (el de mayor valor absoluto) que se puede representar. 0.9375· 27 = 120.00
2. Construir una función para que, dado un void aDecimal(int n, int *d) {
parámetro entero que sólo tiene cifras de int i = 1;
ceros y unos (como un número representado *d = 0;
do {
en el sistema binario), calcule y guarde el *d = *d + (n % 10)*i;
valor decimal correspondiente en la variable i = i * 2;
entera cuya dirección de memoria se indica n = n / 10;
en el segundo parámetro. Por ejemplo, la } while (n>0);
}
llamada a la función aDecimal(1110, &d)
deberá guardar el valor 14 en d.
3. Escribir una función asignaCreciente que, al ejecutarse, pida al usuario introducir por teclado valores
estrictamente positivos que sean asignados a los n primeros elementos de un array v de datos de tipo
double. La petición de valor para su asignación a cada elemento del array se debe repetir si el valor
introducido no es estrictamente mayor que el anterior. Por lo tanto, al terminar la ejecución de la función
los n primeros valores del array deben tener valores estrictamente positivos en orden estrictamente
creciente. v y n son los dos parámetros de la función. Nota: se supone que n es siempre mayor que 0.
#include <stdio.h>
#define DIM 5
int nega(double a[][DIM], int n) { /* Funcion ya codificada por Luis */ }
int main () {
int ok;
if ( ok )
printf("Funciona BIEN en los tres casos\n");
else
printf("NO funciona bien\n");
return 0;
}
5. Construir una función incluidos que indique si todos los caracteres de una cadena s1 se encuentran
en otra s2. En este caso, la función debe retornar el valor 1 y, en caso contrario, debe retornar el valor
0. s1 y s2 son los parámetros de la función. Si s1 está vacía la función debe retornar el valor 1. Por
ejemplo, la llamada a incluidos("ella", "clave") debe retornar el valor 1, mientras que
incluidos("bola", "pelota") debe retornar el valor 0. Nota: puede emplearse la librería string.h.
int incluidos(char *s1, char *s2) {
int i, j, distintos;
for (i=0; i<strlen(s1); i++) {
distintos = 0;
for (j=0; j<strlen(s2); j++)
if (s1[i]!=s2[j])
distintos++;
if (distintos==strlen(s2))
return 0;
}
return 1;
}
6. Escribir una función identicos para que retorne 1 si los valores de todos struct item {
los campos respectivos de dos parámetros de tipo struct item son char id[9];
char clase;
iguales y 0 en caso contrario. La declaración del tipo de dato struct item int un[10];
se facilita a la derecha. Nota: puede emplearse la librería string.h. };
8. Construir una función que retorne el elemento que almacene la hora más
tardía de los n primeros elementos de un array t formado con elementos de /* Declaracion
del tipo de
tipo struct hora. El campo hh puede almacenar valores entre 0 y 11, el dato: */
campo mm guarda valores entre 0 y 59 y el campo ap puede almacenar el valor
"AM" (Ante Meridiem) o "PM" (Post Meridiem). t y n son los dos parámetros de la struct hora {
función. Nota 1: Como ejemplo de comparación, la hora {0, 0, "PM"} es int hh;
int mm;
posterior a la hora {11, 59, "AM"}. Nota 2: Si n vale 0 entonces debe char ap[3];
retornar un elemento con el valor {0, 0, "AM"}. Nota 3: si es necesario };
puede emplearse la librería string.h.
#include <string.h>
void monitorizar(char * ruta, char * empleado, char * mac){
int menos = 9999, aux, tiempo;
FILE * f;
char emplAux[21];
char macAux[18];
strcpy(empleado, "");
strcpy(mac, "");
f = fopen(ruta, "r");
if (f!=NULL) {
do {
aux = fscanf(f, "%20s %17s %d\n", emplAux, macAux, &tiempo);
if ((aux==3) && (tiempo<menos)) {
strcpy(empleado, emplAux);
strcpy(mac, macAux);
menos = tiempo;
}
} while (aux==3);
fclose(f);
} else {
printf("Archivo no encontrado\n");
}
return;
}
10. Escribir una función califica para que genere un archivo de texto, cuyo
nombre se indica como parámetro, con dos calificaciones numéricas reales
aleatorias (dentro del intervalo entre 0 y 10), separadas por caracteres de
coma, para cada uno de los 50 alumnos con nº de matrícula entre 22900
y 22949 (ambos incluidos), como, a modo de ejemplo, se muestra en la
figura de la derecha para las primeras siete líneas de texto. Además la
función debe retornar el valor 1 si ha conseguido generar el archivo
correctamente y 0 en caso contrario.
NÚM. de MATRÍCULA...............................................................................................................
1. [0.5 puntos por cada apartado] Dado un formato de representación binaria de un valor numérico real en
coma flotante normalizada con 9 bits, 5 para mantisa y 4 para exponente, ambos en complemento a 2:
a) representar en este formato binario el valor decimal -0.375 y 10100 1111
b) indicar, en el sistema numérico decimal, el valor positivo más
grande (el de mayor valor absoluto) que se puede representar. 0.9375· 27 = 120.00
2. Construir una función para que, dado un void toDecimal(int n, int *d) {
parámetro entero que sólo tiene cifras de int i = 1;
ceros y unos (como un número representado *d = 0;
do {
en el sistema binario), calcule y guarde el *d = *d + (n % 10)*i;
valor decimal correspondiente en la variable i = i * 2;
entera cuya dirección de memoria se indica n = n / 10;
en el segundo parámetro. Por ejemplo, la } while (n>0);
}
llamada a la función toDecimal(1110, &a)
deberá guardar el valor 14 en a.
3. Escribir una función avc que, al ejecutarse, pida al usuario introducir por teclado valores estrictamente
positivos que sean asignados a los n primeros elementos de un array v de datos de tipo double. La
petición de valor para su asignación a cada elemento del array se debe repetir si el valor introducido no
es estrictamente mayor que el anterior. Por lo tanto, al terminar la ejecución de la función los n primeros
valores del array deben tener valores estrictamente positivos en orden estrictamente creciente. v y n son
los dos parámetros de la función. Nota: se supone que n es siempre mayor que 0.
#include <stdio.h>
#define DIM 5
int ngt(double a[][DIM], int n) { /* Funcion ya codificada por Sara */ }
int main () {
int ok;
if ( ok )
printf("Funciona BIEN en los tres casos\n");
else
printf("NO funciona bien\n");
return 0;
}
5. Construir una función contains que indique si todos los caracteres de una cadena s1 se encuentran en
otra s2. En este caso, la función debe retornar el valor 1 y, en caso contrario, debe retornar el valor 0.
s1 y s2 son los parámetros de la función. Si s1 está vacía la función debe retornar el valor 1. Por ejemplo,
la llamada a contains("ella", "clave") debe retornar el valor 1, mientras que contains("bola",
"pelota") debe retornar el valor 0. Nota: puede emplearse la librería string.h.
int contains(char *s1, char *s2) {
int i, j, distintos;
for (i=0; i<strlen(s1); i++) {
distintos = 0;
for (j=0; j<strlen(s2); j++)
if (s1[i]!=s2[j])
distintos++;
if (distintos==strlen(s2))
return 0;
}
return 1;
}
6. Escribir una función gemelos para que retorne 1 si los valores de todos struct item {
los campos respectivos de dos parámetros de tipo struct item son char id[9];
char clase;
iguales y 0 en caso contrario. La declaración del tipo de dato struct item int un[10];
se facilita a la derecha. Nota: puede emplearse la librería string.h. };
8. Construir una función que retorne el elemento que almacene la hora más
tardía de los n primeros elementos de un array t formado con elementos de /* Declaracion
del tipo de
tipo struct hora. El campo hh puede almacenar valores entre 0 y 11, el dato: */
campo mm guarda valores entre 0 y 59 y el campo ap puede almacenar el valor
"AM" (Ante Meridiem) o "PM" (Post Meridiem). t y n son los dos parámetros de la struct hora {
función. Nota 1: Como ejemplo de comparación, la hora {0, 0, "PM"} es int hh;
int mm;
posterior a la hora {11, 59, "AM"}. Nota 2: Si n vale 0 entonces debe char ap[3];
retornar un elemento con el valor {0, 0, "AM"}. Nota 3: si es necesario };
puede emplearse la librería string.h.
#include <string.h>
void monitorear(char * ruta, char * empleado, char * mac){
int menos = 9999, aux, tiempo;
FILE * f;
char emplAux[21];
char macAux[18];
strcpy(empleado, "");
strcpy(mac, "");
f = fopen(ruta, "r");
if (f!=NULL) {
do {
aux = fscanf(f, "%20s %17s %d\n", emplAux, macAux, &tiempo);
if ((aux==3) && (tiempo<menos)) {
strcpy(empleado, emplAux);
strcpy(mac, macAux);
menos = tiempo;
}
} while (aux==3);
fclose(f);
} else {
printf("Archivo no encontrado\n");
}
return;
}
10. Escribir una función randoms para que genere un archivo de texto, cuyo
nombre se indica como parámetro, con dos calificaciones numéricas reales
aleatorias (dentro del intervalo entre 0 y 10), separadas por caracteres de
coma, para cada uno de los 80 alumnos con nº de matrícula entre 22900
y 22979 (ambos incluidos), como, a modo de ejemplo, se muestra en la
figura de la derecha para las primeras siete líneas de texto. Además la
función debe retornar el valor 1 si ha conseguido generar el archivo
correctamente y 0 en caso contrario.
NÚM. de MATRÍCULA...............................................................................................................
1. [0.5 puntos por cada apartado] Dado un formato de representación binaria de un valor numérico real en
coma flotante normalizada con 9 bits, 5 para mantisa y 4 para exponente, ambos en complemento a 2:
a) representar en este formato binario el valor decimal -0.0625 y 11000 1101
b) indicar, en el sistema numérico decimal, el valor positivo más
grande (el de mayor valor absoluto) que se puede representar. 0.9375· 27 = 120.00
2. Construir una función para que, dado un void fromBintoDec(int n, int *d) {
parámetro entero que sólo tiene cifras de int i = 1;
ceros y unos (como un número representado *d = 0;
do {
en el sistema binario), calcule y guarde el *d = *d + (n % 10)*i;
valor decimal correspondiente en la variable i = i * 2;
entera cuya dirección de memoria se indica n = n / 10;
en el segundo parámetro. Por ejemplo, la } while (n>0);
}
llamada a la función fromBintoDec(1110,
&d) deberá guardar el valor 14 en d.
3. Escribir una función ordenCreciente que, al ejecutarse, pida al usuario introducir por teclado valores
estrictamente positivos que sean asignados a los n primeros elementos de un array v de datos de tipo
double. La petición de valor para su asignación a cada elemento del array se debe repetir si el valor
introducido no es estrictamente mayor que el anterior. Por lo tanto, al terminar la ejecución de la función
los n primeros valores del array deben tener valores estrictamente positivos en orden estrictamente
creciente. v y n son los dos parámetros de la función. Nota: se supone que n es siempre mayor que 0.
#include <stdio.h>
#define DIM 5
int nvn(double a[][DIM], int n) { /* Funcion ya codificada por Laura */ }
int main () {
int ok;
if ( ok )
printf("Funciona BIEN en los tres casos\n");
else
printf("NO funciona bien\n");
return 0;
}
5. Construir una función includes que indique si todos los caracteres de una cadena s1 se encuentran en
otra s2. En este caso, la función debe retornar el valor 1 y, en caso contrario, debe retornar el valor 0.
s1 y s2 son los parámetros de la función. Si s1 está vacía la función debe retornar el valor 1. Por ejemplo,
la llamada a includes("ella", "clave") debe retornar el valor 1, mientras que includes("bola",
"pelota") debe retornar el valor 0. Nota: puede emplearse la librería string.h.
int includes(char *s1, char *s2) {
int i, j, distintos;
for (i=0; i<strlen(s1); i++) {
distintos = 0;
for (j=0; j<strlen(s2); j++)
if (s1[i]!=s2[j])
distintos++;
if (distintos==strlen(s2))
return 0;
}
return 1;
}
6. Escribir una función twins para que retorne 1 si los valores de todos los struct item {
campos respectivos de dos parámetros de tipo struct item son iguales y char id[9];
char clase;
0 en caso contrario. La declaración del tipo de dato struct item se facilita int un[10];
a la derecha. Nota: puede emplearse la librería string.h. };
8. Construir una función que retorne el elemento que almacene la hora más
tardía de los n primeros elementos de un array t formado con elementos de /* Declaracion
del tipo de
tipo struct hora. El campo hh puede almacenar valores entre 0 y 11, el dato: */
campo mm guarda valores entre 0 y 59 y el campo ap puede almacenar el valor
"AM" (Ante Meridiem) o "PM" (Post Meridiem). t y n son los dos parámetros de la struct hora {
función. Nota 1: Como ejemplo de comparación, la hora {0, 0, "PM"} es int hh;
int mm;
posterior a la hora {11, 59, "AM"}. Nota 2: Si n vale 0 entonces debe char ap[3];
retornar un elemento con el valor {0, 0, "AM"}. Nota 3: si es necesario };
puede emplearse la librería string.h.
#include <string.h>
void monitorear(char * ruta, char * empleado, char * mac){
int menos = 9999, aux, tiempo;
FILE * f;
char emplAux[21];
char macAux[18];
strcpy(empleado, "");
strcpy(mac, "");
f = fopen(ruta, "r");
if (f!=NULL) {
do {
aux = fscanf(f, "%20s %17s %d\n", emplAux, macAux, &tiempo);
if ((aux==3) && (tiempo<menos)) {
strcpy(empleado, emplAux);
strcpy(mac, macAux);
menos = tiempo;
}
} while (aux==3);
fclose(f);
} else {
printf("Archivo no encontrado\n");
}
return;
}
10. Escribir una función notas para que genere un archivo de texto, cuyo
nombre se indica como parámetro, con dos calificaciones numéricas reales
aleatorias (dentro del intervalo entre 0 y 10), separadas por caracteres de
coma, para cada uno de los 60 alumnos con nº de matrícula entre 22900
y 22959 (ambos incluidos), como, a modo de ejemplo, se muestra en la
figura de la derecha para las primeras siete líneas de texto. Además la
función debe retornar el valor 1 si ha conseguido generar el archivo
correctamente y 0 en caso contrario.
int notas(char *s) {
int i;
FILE *f;
if (NULL!=(f=fopen(s, "w"))) {
for (i=0; i<60; i++) {
fprintf(f, "%d,%.1f,%.1f\n", 22900+i,
rand() % 101 / 10.0, rand() % 101 / 10.0);
}
fclose(f);
} else
return 0;
return 1;
}