Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1.- Selecciona la respuesta correcta, rodeándola con un círculo. (2.5 puntos, 0,25 puntos por apartado)
a) 2
b) 1
c) 0
d) Ninguna de las anteriores
a) 1 vez
b) 2 veces
c) 0 veces
d) Ninguna de las anteriores
Si tenemos la siguiente variable: int Numeros[7][4]; y la queremos rellenar con datos, debemos
utilizar el siguiente código:
float p;
p=++5;
printf(“%f”, p);
a) 5
b) 6.0
c) 5.0
d) Dicho programa provocará un error.
a) Siempre Falso.
b) Siempre Verdadero
c) Falso, si p es falso.
d) Ninguna de las anteriores.
a) 12
b) 17
c) 9
d) Ninguna de las anteriores.
a) ningún atributo que forme parte de la clave primaria de una relación puede tomar un valor nulo.
b) Si en una relación hay una referencia a una tupla de otra relación, ésta deberá referenciar a una
tupla existente en la relación referenciada
c) En ciertos atributos no se permite valores nulos.
d) el valor de todos los atributos de una tupla no se puede repetir en ninguna otra.
Alumno:_______________________________________________ DNI:_________________ Especialidad:____________
2.- Dadas las siguientes llamadas a funciones indica cómo serían sus respectivos prototipos.
(2 puntos, 0.5 puntos por prototipo)
#include <stdio.h>
struct embarcación
{ char matricula[12]
char nombre[20];
float eslora;
float zona;
};
int main()
{
//Declaración de variables
struct embarcacion *pinta, nina;
int par1, par2;
float re_a, re_b;
float vre_1[3], vre_2[4][2];
int *pi;
float *pr;
fun_pro1(pinta->eslora, 3, re_b);
par1=fun_pro2(pinta, re_b, pr);
pr=fun_pro3(nina.nombre[0],*pi,re_b);
vre_1[2]=fun_pro4(“legendario”,”4.6”,5.0);
...
return 0;
}
Alumno:_______________________________________________ DNI:_________________ Especialidad:____________
3.- Disponiendo de las siguientes estructuras y declaración de variable, responda a las cuestiones que se
plantean: (2 puntos)
struct tripulante {
char nombre[30];
char categoría[15];
int edad;
};
struct embarcación{
char matricula[12];
char nombre[20];
float eslora;
float zona;
struct tripulante trip[10];
int n_tripulante; // número de tripulantes de la embarcación
};
struct empresa {
char nombre[25];
struct embarcación barcos[15];
char NIF[10];
float facturación;
int n_embarcaciones; // número de embarcaciones de la empresa
};
int main() {
a) Queremos mostrar el nombre del último tripulante de la segunda embarcación de la tercera empresa.
a)
ultimo=empresas_hu[2].barcos[1].n_tripulante-1;
printf(“%s”, empresas_hu[2].barcos[1].trip[ultimo].nombre)
b) Queremos mostrar los nombres de todos los tripulantes de la última embarcación, de la segunda
empresa de cuya edad sea menor de 30 años.
b)
ultima_emb=empresas_hu[1].n_embarcaciones-1;
ultimo=empresas_hu[1].barcos[ultima_emb].n_tripulante;
for(i=0;i<ultimo;i++){
if(empresas_hu[1].barcos[ultima_emb].trip[i].edad<30)
puts(empresas_hu[1].barcos[ultima_emb].trip[i].nombre);
}
Alumno:_______________________________________________ DNI:_________________ Especialidad:____________
4.- Indicar cómo queda la matriz del ejemplo una vez que se ejecuta el siguiente programa:
(1.5 puntos, 0.5 puntos por fila correcta)
1 2 3 1 2 3
4 5 6 4 5 21
7 8 9 6 9 9
case 7:
case 9: rdo = a+(--b);
break;
default: for (i=1; i<=a; i++)
rdo= rdo*b;
}
return rdo;
}
Examen: FUNDAMENTOS DE INFORMÁTICA
Fecha:
Curso:
Especialidad: Mecánica
Apellidos y nombre:_________________________________________________________________
Test. Selecciona la respuesta correcta, rodeándola con un círculo (3 puntos, 0.2 puntos por apartado)
1. Cuántos números diferentes es posible representar con 5 bits.
a) 16
b) 15
c) 7
d) 32
2. Cuál es el mayor número binario con signo que es posible representar con 10 bits
a) 255
b) 511 *
c) 256
d) 512
3. Indicar cuál de las siguientes listas de diferentes tipos de memorias está en orden decreciente de
velocidad (de más rápidas a más lentas):
a) disco, registros, memoria central, caché.
b) memoria central, caché, disco, registros.
c) registros, memoria central, disco, caché.
d) registros, caché, memoria central, disco. *
4. Si tenemos la siguiente llamada a una función cambia(&4):
a) En la propia función debemos recibir un puntero a entero como parámetro;
b) El parámetro en la función podría ser float;
c) La llamada a la función debería ser cambia(*4);
d) Ninguna de las respuestas anteriores es correcta. *
5. Señale cuál de las siguientes palabras no es una palabra reservada en el lenguaje C
a) enum
b) goto
c) size *
d) continue
e) signed
6. ¿Cuál es el motivo por el que el siguiente código sería incorrecto, si queremos que p apunte a x?
int *p;int x;
p = NULL;
p = *x;
a) En la última asignación el operador correcto no es el *, sino el & *
b) Para que el código fuese totalmente correcto, x debería tener algún valor.
c) A p no se le puede asignar ningún valor pues apunta a nulo
d) Tanto la a) como la c) son correctas.
1
Alumno:___________________________________________________________________________________________
a) z=3
b) z=2
c) z=1 *
d) z=0
10. Tras la ejecución del siguiente código escrito en C.
int main() {
int t[3] = {3, 2, 1}, a = 0, z;
z = t[a++]--;
return 3;
}
a) z=1,a=1yt[]={1,1,2}
b) z=2,a=1yt[]={1,2,2}
c) z=3,a=1yt[]={2,2,1} *
d) z=2,a=0 yt[]={2,2,1}
11. Cuál de las siguientes afirmaciones relacionadas con la sentencia switch es correcta.
a) La expresión entre paréntesis que siempre acompaña al switch y que nos permite seleccionar entre los
diferentes casos, puede ser de tipo int, char o float.
b) Los valores que acompañan a los diferentes casos deben estar ordenados de menor a mayor.
c) Por razones de usabilidad en el código se aconseja que toda sentencia switch tenga un apartado
default.
d) El código que se ejecutaestá comprendido entre los dos puntos (:) del case en cuestión y la primera
sentencia break que haya tras los dos puntos, o bien hasta la llave que cierra el switch, en el caso de
no encontrar dicho break. *
2
Alumno:___________________________________________________________________________________________
3
Alumno:___________________________________________________________________________________________
2. Disponiendo de las siguientes estructuras y declaración de variable, responda a las cuestiones que se
plantean(2 puntos):
struct provincia {
char nombre[12];
char gentilicio[15];
char fiesta_patronal[15];
int concejales;
};
struct region{
char nombre[12];
int habitantes;
float dimension;
struct provincia prov[60];
int n_provincias // indica el número de provincias por región
};
struct pais {
char nombre[25];
struct region reg[51];
char bandera[15];
int n_regiones; // indica el número de regiones de cada país
};
int main(void) {
struct país union_europea[28];
a) Queremos mostrar la suma de concejales de todas las provincias de la segunda región del último país
de la unión europea.
Int n, i, suma=0;
n=unión_europea[27].reg[1].n_provincia-1;
for(i=0; i<n; i++)
suma+=unión_europea[27].reg[1].prov[i].concejales;
printf(“El número de concejales es %i:”, suma);
system(“pause”);
b) Queremos saber qué región de la unión europea tiene mayor número de habitantes.
int mayor=unión_europea[0].reg[0].habitantes;
char nombre_mayor[12];
strcpy(nombre_mayor, unión_europea[0].reg[0].nombre);
for(i=0;i<28;i++){
n= unión_europea[i].n_regiones;
for(j=0;j<n;j++){
if (mayor< unión_europea[i].reg[j].habitantes){
mayor= unión_europea[i].reg[j].habitantes;
strcpy(nombre_mayor, unión_europea[i].reg[j].nombre);}
}
}
printf(El nombre de la región con más habitantes es %s”, nombre_mayor);
4
Alumno:___________________________________________________________________________________________
3.- Indicar cómo queda la matriz del ejemplo al ejecutar el siguiente programa. (3 puntos)
1 1 1
2 2 2
3 3 3
#include<stdio.h> El alumno debe rellenar cómo queda la matriz
#include<stdlib.h> tras cada ejecución del bucle do-while del
void procedimiento(int M[3][3], inti, int m);
int funcion(int M[3][3],inti,int m); programa principal:
Iteración 1:
int main()
{ 1 1 3
int M[3][3]= {1,1,1,2,2,2,3,3,3};
int m=0; 2 2 2
int i;
for (i=2; i>=0; i--){
switch(m){ 1 3 3
case 1:
procedimiento(M,i,m); Iteración 2:
break;
case 2: 1 1 3
M[i][m]=funcion(M,i,m);
break; 2 2 7
case 3:
M[m][i]=funcion(M,i,m);
break; 1 3 3
default:
procedimiento(M,i,m); Iteración 3:
break; 1 2 3
}
m=i%3;
} 1 2 7
return 1;
} 1 3 3
void procedimiento(int M[3][3], int i, int m){ Iteración 4:
int aux;
aux=M[i][m];
M[i][m]=M[m][i];
M[m][i]=aux;}
5
Alumno:___________________________________________________________________________________________
El siguiente programa pide un número por teclado para que a continuación sea descompuesto en sus
cifras, mediante divisiones sucesivas entre la base. Despues se imprime cifra a cifra el número con el
uso del bucle for.Sin embargo se han cometido ciertos errores que impiden la ejecución y el correcto
funcionamiento del mismo.
Código original
1 #include<stdio.h>
2 #include<stdlib.h>
3 #define BASE=10
4 int main() {
5 const int TAM==12;
6 int n,m,i;
7 int d[TAM];
8
9 printf("ingrese el numero\n%d");
10 scanf("%d",n);
11 while(n<=0)
12 {
13 printf("el numero debe ser positivo:\n");
14 scanf("%d",n);
15 }
16 i=0;
17 while(n)
18 {
19 d[i]=n%BASE;
20 n=n/BASE;
21 i++;
22 }
23 int j;
24 for(j=0;j<i;j+1)
25 {
26 printf("\ndigito de orden %d \n",j+1,d[j]");
27 }
28 system(pause);
29 return 1;
30 }
Reescriba a continuación, sólo aquellas líneas que contengan errores sintácticos, indicando su número.
6
Examen: FUNDAMENTOS DE
INFORMÁTICA
Apellidos y
nombre:_________________________________________________________________
1. Test. Selecciona la respuesta correcta, rodeándola con un círculo (3 puntos, 0.2 puntos por apartado)
1.Señale la afirmación correcta
a) La memoria RAM es de sólo lectura mientras que la ROM es de lectura y escritura.
b) Tanto la memoria RAM como la memoria ROM son volátiles.
c) La principal diferencia entre la memoria RAM y la memoria ROM es que la ROM es más rápida.
d) La memoria ROM suele usarse como buffer de almacenamiento temporal del procesador.
e) La principal diferencia entre las memoria RAM y ROM es que la RAM almacena el Sistema Operativo y
aplicaciones y la ROM almacena la BIOS.
2.Cuántos números diferentes es posible representar con 4 bits.
a) 16 b) 15 c) 7 d) 4
3.Cuál es el mayor número binario con signo que es posible representar con 8 bits
a) 255 b) 127 c) 256 d) 128
4. La diferencia fundamental entre un compilador y un intérprete es
a) que el intérprete genera código objeto entendible por el microprocesador.
b) que el compilador genera código objeto entendible por el microprocesador.
c) que el compilador a usar depende de la BIOS del ordenador concreto.
d) no hay diferencias ya que ambos son traductores.
e) Todas las respuestas anteriores son ciertas.
5. Los modificadores de los tipos de datos básicos en lenguaje C son
a) int y char.
b) int, char, float y double.
c) int, char, float, double y void.
d) unsigned, signed, long y short.
e) unsigned, signed, long, short y boolean.
e) auto, extern, static y register
6. ¿Cuál de las siguientes instrucciones de C es correcta?
a) int edad; scanf("%d",edad);
b) float nota; scanf("%f",nota);
c) char nombre[20]; scanf("%s",nombre);
d) char sexo; scanf("%c",sexo);
e) Ninguna es correcta
f) Todas son correctas
7.¿Qué escribe el siguiente programa si se teclea mecanica?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void) {
1
Alumno:___________________________________________________________________________________________
#include<stdio.h>
#define MAX 5
int main(void)
{
int matriz[MAX][MAX], A, B, i=0, j=0;
printf("\n A:"); scanf("%d", &A);
printf("\n B:"); scanf("%d", &B);
for(i = 0;i < B;i++) {
for(j = 0;j < A;j++){
printf("Introduzca valor ", i+1, j+1);
scanf("%d", &matriz[i][j]);
} }
printf("\n\n");
for(i = 0;i < B;i++){
printf("\n\t\t");
for(j = 0;j < A;j++){
printf(" %6d ", matriz[i][j]);
} }
printf("\n\n");
for(j = 0;j < A;j++){
printf("\n\t\t");
for(i = 0;i < B;i++){
printf(" %6d ", matriz[i][j]);
} }
system("pause"); return 0;
}
3
Alumno:___________________________________________________________________________________________
2. Disponiendo de las siguientes estructuras y declaración de variable, responda a las cuestiones que se
plantean(2 puntos):
struct motor {
char modelo[30];
char combustible[15];
char tipoInyeccion[15];
int num_cilindros;
int potencia_CV;
int cubicaje_CC;
};
struct vehiculo{
char matricula[12];
float peso;
float dimension;
struct motor motores[4];
int num_motores;
};
struct empresa_logistica {
char nombre[25];
struct vehiculo vehiculos[15];
char NIF[10];
int n_vehiculos;
};
int main(void) {
struct empresa_logistica empresas_hu[10];
a) Queremos mostrar el modelo del úlLmo motor del segundo vehículo de la tercera empresa.
ultimo=empresas_hu[2].vehiculo[1].num_motores;
printf("%s", empresas_hu[2].vehiculo[1].motores[ultimo].modelo)
b) Queremos calcular la suma de todos los cubicajes de todos los motores, de todos los vehículos cuyo
peso se encuentre entre 1000 y 3000Kg. de la segunda empresa.
int acum_cubicaje=0;
for(i=0; i<empresas_hu[1].n_vehiculos; i++)
if(empresas_hu[1].vehiculos[i].peso>1000 && empresas_hu.vehiculos[i].peso<3000)
For(j=0; j< empresas_hu[1].vehiculos[i].num_motores; j++)
Acum_cubicaje+=empresas_hu[1].vehiculo[i].motores[j].cubicaje_CC;
printf("%d%",acum_cubicaje);
4
Alumno:___________________________________________________________________________________________
3.- Indicar cómo queda la matriz del ejemplo una vez a que se ejecuta el siguiente programa. ( puntos)
9 8 7 9 3 1
6 5 4 1 3 1
3 2 1 2 2 2
itr++; 1 3 1
}while(itr<3); 2 2 2
return 0;
} Iteración 4:
5
Alumno:___________________________________________________________________________________________
4.- Programa que realiza una definición de tipo, así como una función que muestra los valores de variables de dicho tipo. Sin
embargo se han cometido ciertos errores. Se pide escribir correctamente cada una de las líneas en las que detecte algún error
(ya sea de tipo sintáctico, o un error que hace que la ejecución del programa no sea la esperada).
1 #include <stdio.h> #include <stdio.h>
2 #include <string.h> #include <string.h>
3 #include <stdlib.h> #include <stdlib.h>
4 tipedef struct t_libro{ typedef struct t_libro{
5 char titulo[30]; char titulo[30];
6 char autores[30]; char autores[30];
7 int edicion; int edicion;
8 int anio; int anio;
9 } };
10 int ImpLibro(t_libro p_libro); void ImpLibro(t_libro p_libro);
11 int main(){ int main(){
12 t_libro libro1; t_libro libro1, libro2;
13 printf("\n\nESTRUCTURA LIBRO.\n"); printf("\n\nESTRUCTURA LIBRO.\n");
14 /* asignaci¢n de valores a libro1 /* asignaci¢n de valores a libro1 */
15 strcpy(libro1.titulo,"Leng. de Programaci¢n C");*/ strcpy(libro1.titulo,"Leng. de Programaci¢n C");
16 strcpy("Kernighan y Ritchie", libro1.autores); strcpy(libro1.autores,"Kernighan y Ritchie");
17 libro1.edicion = 2; libro1.edicion = 2;
18 libro1.anio = 1991; libro1.anio = 1991;
19 printf("DATOS Libro 1:\n"); printf("DATOS Libro 1:\n");
20 ImpLibro(libro1); ImpLibro(libro1);
21 /* imprimir datos libro2 sin inicializar */ /* imprimir datos libro2 sin inicializar */
22 printf("DATOS Libro2 sin inicializar:\n"); printf("DATOS Libro2 sin inicializar:\n");
23 ImpLibro(libro2); ImpLibro(libro2);
24 /* asignaci¢n de valores a libro2 */ /* asignaci¢n de valores a libro2 */
25 strcpy(libro2.titulo,ibro2.titulo); strcpy(libro2.titulo,ibro2.titulo);
26 strcpy("libro2->autores, libro1->autores); strcpy("libro2.autores, libro1.autores);
27 libro2.edicion = 1; libro2.edicion = 1;
28 libro2.anio = 1978; libro2.anio = 1978;
29 printf("DATOS Libro 2:\n"); printf("DATOS Libro 2:\n");
30 ImpLibro(t_libro libro2); ImpLibro(libro2);
31 system("pause"); system("pause");
32 return 1; return 1;
33 } }
34 void ImpLibro(struct p_libro t_libro) void ImpLibro(struct t_libro p_libro)
35 { printf("Titulo: %s\n",p_libro.titulo); { printf("Titulo: %s\n",p_libro.titulo);
36 printf("Autores: %c\n",p_libro.autores); printf("Autores: %s\n",p_libro.autores);
37 printf("Anio: %d\n\n",p_libro.anio);} printf("Anio: %d\n\n",p_libro.anio);}
38 } }
6
Examen: FUNDAMENTOS DE INFORMÁTICA
Fecha: 1 de Septiembre de 2017
Curso: 2016/2017
Especialidad: Mecánica
Apellidos y nombre:_________________________________________________________________
Duración estimada del examen: 1,5 horas
Instrucciones:
1. Los móviles deben estar apagados
2. Es necesario disponer de un documento de identificación (DNI, pasaporte, …)
3. Los apuntes, libros y cualquier otro material deben estar debidamente guardados
Pregunta 1 - Test. Selecciona la respuesta correcta, rodeándola con un círculo. (Valor 2 puntos)
1).- Indique qué valor alcanza la variable a tras finalizar el siguiente trozo de código:
int a=-1, x, i=3;
for (;i<5;i=i+2)
{ for (x=1; x<4; x++);
a=a*(-2);}
a) 8
b) 16
c) 4
d) -1
e) Ninguna de las respuestas anteriores es correcta
3) Si no sabemos de qué tipo son las variables a, b y queremos garantizar que el resultado es un float tendremos que
usar la siguiente expresión:
a) (float)a / b;
b) (float)a / (int)b;
c) (float)(a / b);
d) Tanto la a) como la c) son correctas
e) Tanto la a) como la b) son correctas
f) Todas son correctas
4) Tras la ejecución del siguiente código escrito en C, qué valores toman la variables.
int main( )
{ int t[3] = {5, 1, 2}, a = 0, z;
z = t[a++]++;
return 0;
}
a) z = 5, a = 1 y t[] = {4, 1, 2}
b) z = 5, a = 1 y t[] = {6, 1, 2}
c) z = 2, a = 1 y t[] = {5, 2, 2}
d) z = 6, a = 1 y t[] = {6, 1, 2}
1
Alumno:___________________________________________________________________________________________
5) El valor que devuelve la expresión b+(float)(7/(a%3)), teniendo int a=11 y int b=4 es:
a) 6.33
b) 7.0
c) 7.5
d) 6.5
6) El valor que devuelve la expresión d+=a-b/c++; teniendo float a=7.0; int b=7; int c=2; float d=1;
es:
a) 3.0
b) 4.0
c) 3
d) 5.0
7) Indique qué valor alcanza la variable a tras finalizar el siguiente trozo de código:
int x, a=4;
for (x=1; x<=3; x++) {
if (x % 2 != 0)
a*2;
}
a) 8
b) 16
c) 4
d) Ninguna de las respuestas anteriores es correcta
8) Si disponemos del siguiente array de caracteres char nombre[50], para asignar la cadena “HOLA” en
dicho array, la instrucción correcta es:
a) nombre = HOLA;
b) strcmp(nombre, HOLA);
c) strcpy(nombre, HOLA);
d) Ninguna de las respuestas anteriores es correcta.
struct Agenda
{
struct Persona Amigos[100];
char Propietario[50];
int NAmigos;
};
int main(){
struct Agenda agenda_personal[5];}// se supone que el usuario tiene 5 agendas
a) Cambiar la clave de la tercera agenda del amigo cuyo nombre es "Antonio" . (1.2 ptos)
int i;
char clave_nueva[10];
for(i=0; i<agenda_personal[2].NAmigos;i++)
if(strcmp(agenda_personal[2].Amigos[i].Nombre, "Antonio")==0){
cout << "Introduzca la nueva clave:";
cin >> clave_nueva;
puts(agenda_personal[2].Amigos[i].clave, "clave_nueva
}
//solución optima
int i=0, encontrado=1;
char clave_nueva[10];
do{
if(strcmp(agenda_personal[2].Amigos[i].Nombre, "Antonio")==0){
cout << "Introduzca la nueva clave:";
cin >> clave_nueva;
puts(agenda_personal[2].Amigos[i].clave, "clave_nueva
encontrado=0;}
i++;
3
Alumno:___________________________________________________________________________________________
b) Mostrar el nombre de todos los amigos que han nacido en septiembre, mes 9. (1.8 ptos).
int i, j;
for(i=0;i<5;i++){
n_a=agenda_persona [i].nAmigos;
for(j=0;j<n_a ;j++){
if(agenda_personal[i].Amigos[j].Fecha_nacimiento.mes==9)
cout<< agenda_persona[i].Amigos[j].nombre);}}
agenda_personal[5]
email[25] telefono_movil[10]
telefono_fijo[10] dia mes año
4
Alumno:___________________________________________________________________________________________
Pregunta 3.- El siguiente programa pretende leer una matriz de 10 x 5 enteros y calcular el valor mayor
y menor de la filas comprendidas entre A y B (ambas inclusive), siendo A y B dos valores distintos
introducidos por teclado que hacen referencia a los índices (según el usuario) de las filas. Sin embargo
se han cometido ciertos errores que impiden la ejecución y el correcto funcionamiento del mismo. Se
pide al alumno escribir correctamente cada una de las líneas en las que detecte algún error (ya sea de
tipo sintáctico, o bien un error que hace que la ejecución del programa no sea la esperada). (Valor 2
puntos).
1 #include <stdlib.h>
2 #include <studio.h> #include <stdio.h>
3 #define filas=10; #define filas 10
4 #define col=5; #define col 5
5 int main(void)
6 { int T[fil][col] { int T[filas][col];
7 int i, j; int i, j, A, B, mayor,
menor;
8 for (i=0, i==filas, i++) for (i=0; i<filas; i++)
9 for (j=0; j<=col-1; j++)
10 printf("M[&i,&i]: ", i+1;j+1); { printf("M[%i,%i]: ",
i+1, j+1);
11 scanf("%i%i", T[i][j]); scanf("%i", &T[i][j]); }
12 do
13 { printf("\nIndique los índices de 2 filas: ");
14 scanf("&i &i", %a %b); scanf("%i %i", &A, &B);
15 if (A<0 || B<0) || (A>filas || B>filas) if (A<1 || B<1 || A>filas
|| B>filas)
16 printf("\n\nLos índices son Incorrectos)"; printf("\n\nLos índices
son Incorrectos");
17 if (A=B) if (A==B)
18 printf("\n\nLos índices deben ser diferentes.");
19 } while (A<0 && B<0) || (A>filas && B>filas) || } while (A<1 || B<1 ||
(A<>B) A>filas || B>filas ||
A>=B);
20 mayor=T[0][0]; mayor=T[A-1][0];
21 menor=T[0][0]; menor=T[A-1][0];
22 for (i=0; j<fil; i++) for (i=A-1; i<B; i++)
23 for (j=0; j<col; j++); for (j=0; j<col; j++)
(sobra ;)
24 { if (T[fil][col]) > mayor; { if (T[i][j] > mayor)
(sobra ;)
25 mayor=T[fil,col];
26 else
27 menor=T[fil,col];
28 }
29 printf("El mayor es %s", mayor, " y el menor es
%i", menor);
30 system("pause");
31 return 0;
32 }
5
Alumno:___________________________________________________________________________________________
Pregunta 4.- Indicar cómo va variando la siguiente matriz a cada iteración del bucle while(i<2). (3 puntos)
9 8 7
6 5 4
3 2 1
#include <stdlib.h> El alumno debe rellenar cómo queda la matriz
#include <iostream> tras cada ejecución del bucle do-while:
using namespace std; Iteración 1:
int main()
6 8 7
{
int T[3][3]= {9,8,7,6,5,4,3,2,1};
int itr, f1, f2; 6 3 4
int i=0;
while(i<2){ 3 2 6
itr=0; Iteración 2:
if(i) {
f2=0; 5 8 7
f1=2;
do{ 6 3 4
if (f1%2 == 0)
{ 3 2 6
T[f1][f2]=T[f2][f1]%2+5;
Iteración 3:
f1--;
f2=f2+1;
}
else {
T[f2][f1]=T[f2][f1]%2+2;
f1--;
f2=f2-1;
} Iteración 4:
itr++;
}while(itr<3);
}
else {
f1=2;
f2=2;
do{
if (f1%2 == 0)
{
T[f1][f2]=T[f2][f1]%2+5;
f1--;
f2=f2-1;
}
else {
T[f2][f1]=T[f2][f1]%2+2;
f1--;
f2=f2-1;
}
itr++;
}while(itr<3);
}
i++;
}
return 0;
}
6
Examen: FUNDAMENTOS DE INFORMÁTICA
Fecha: 6 de FEBRERO de 2017
Curso: 2013/2017
Especialidad: Mecánica
Apellidos y nombre:_________________________________________________________________
1
Alumno:___________________________________________________________________________________________
struct Agenda
{
struct Persona Amigos[100];
char Propietario[50];
int NAmigos;
};
int main(){
struct Agenda agenda_personal[5];}// se supone que el usuario tiene 5 agendas
a) Pedir una clave por teclado y comprobar si la clave del último Amigo de la primera agenda coincide con la
pedida por teclado. (1.2 ptos)
char c[10];
cout << "Introduzca la clave: ";
u=agenda_personal[
if(strcmp(c,Agenda_personal.Amigos[u].clave)==0)
cout << "clave correcta";
else
cout << "clave incorrecta";
b) Mostrar el número fijo de todos los Amigos de todas las agendas. (1.8 ptos).
int i, j, k;
for(i=0;i<5;i++){
n_a=agenda_persona [i].nAmigos;
for(j=0;j<n_a ;j++){
for(k=0;k<4; k++){
cout<< agenda_persona[i].Amigos[j].contacto[k].telefono_fijo);
}
}
}
2
Alumno:___________________________________________________________________________________________
agenda_personal[5]
3
Alumno:___________________________________________________________________________________________
Pregunta 3: Indicar cómo va quedando la matriz del ejemplo tras cada iteración si se ejecuta el siguiente
programa. (3 puntos)
1 2 1
2 3 2
3 0 3
int main() 3 0 3
{ Iteración 2:
int M[n][n]= {1,2,1,2,3,2,3,0,3};
int j,d; 15 16 15
j=0;
do{ 23 24 23
if (j%2){
d=Fun(M,0); 3 0 3
}
Iteración 3:
else{
d=Fun(M,1); 15 16 15
}
Proc (M, j, d); 23 24 23
j++;
}while(j<n); 87 84 87
system(“Pause”);
return 0; Iteración 4:
}
4
Alumno:___________________________________________________________________________________________
4.- Programa que calcula el número de créditos y la cantidad de curso que un alumno está matriculado. Sin embargo se han
cometido ciertos errores. Se pide escribir correctamente cada una de las líneas en las que detecte algún error (ya sea de tipo
sintáctico, o un error que hace que la ejecución del programa no sea la esperada)(2 ptos)
Programa con errores Programa sin errores
1 #include<iostream> #include<iostream>
2 #include<string> #include<string>
3 #include <conio.h> #include <conio.h>
4 int main() int main()
5 { {
6 int ncredisp, ncred, ncursos=0,ciclo; int ncredisp, ncred, ncredmat=0, ncursos=0,ciclo;
7 char i, nom[25], seguir; char i, nom[25], seguir;
8 do{ do{
9 printf("Quiere introducir nuevo alumno (S/N): "); printf("Quiere introducir nuevo alumno (S/N): ");
10 getche(seguir); seguir=getche();
11 while(seguir!='S' | | seguir!='s' | | seguir!='N' | | seguir!='n'){ while(seguir!='S' && seguir!='s' && seguir!='N' &&
seguir!='n'){
12 printf("\nOp. erroena, (S/N): "); printf("\nOp. erroena, (S/N): ");
13 seguir=getche();} seguir=getche();}
14 if (seguir== 'N' || seguir== 'n') if (seguir== 'N' || seguir== 'n')
15 ciclo=3; ciclo=3;
16 else{ else{
17 printf("Nombre del alumno: "); printf("Nombre del alumno: ");
18 nom=gets(); gets(nom);
19 printf("Introd. el ciclo (1.-grado 2.- master): "); printf("Introd. el ciclo (1.-grado 2.- master): ");
20 scanf("%i",&ciclo);}//1.- grado 2.- master scanf("%i",&ciclo);}//1.- grado 2.- master
21 switch(ciclo){ switch(ciclo){
22 case 1: case 1:
23 ncredisp=60;ncredmat=0;ncursos=0;i=1; ncredisp=60;ncredmat=0;ncursos=0;i=1;
24 printf("Creditos disponibles: %f\n", ncredisp); printf("Creditos disponibles: %i\n", ncredisp);
25 do{ do{
26 printf("Intr. los creditos de %i- curso: ", i); printf("Intr. los creditos de %i- curso: ", i);
27 scanf("%i", &ncred); scanf("%i", &ncred);
28 while(ncred<0||ncred>ncredisp){ while(ncred<0||ncred>ncredisp){
29 printf("Debe estar entre 0 y %i:", ncredisp); printf("Debe estar entre 0 y %i:", ncredisp);
30 scanf("%i", &ncred);} scanf("%i", &ncred);}
31 ncredmat+=ncred; ncredmat+=ncred;
32 if(ncred>0) if(ncred>0)
33 ncursos+1; ncursos++;
5
Alumno:___________________________________________________________________________________________
6
Examen: FUNDAMENTOS DE
INFORMÁTICA
Fecha: 6 de FEBRERO de 2015
Curso: 2014/2015Duración del
examen: 2 horas
Especialidad: MecánicaDuración del
examen: 2 horas
Apellidos y nombre:______________________________________________________
Duración estimada del examen: 1,5 horas
Instrucciones:
1. Los móviles deben estar apagados
2. Es necesario disponer de un documento de identificación (DNI, pasaporte, …)
3. Los apuntes, libros y cualquier otro material deben estar debidamente guardados
Pregunta 1: Selecciona la respuesta correcta, rodeándola con un círculo. (2 puntos) (0.2 puntos por
apartado)
3) ¿Cuál de las siguientes No es una característica que deben cumplir las relaciones?
a) Cada relación tiene un nombre distinto al del resto de las relaciones
b) Los valores de los atributos son atómicos: en cada tupla, cada atributo toma un solo valor
c) No puede haber dos atributos con igual nombre en una relación. Además, el orden de los atributos no es
relevante.
d) No puede haber tuplas repetidas y deben estar ordenadas
1
Alumno:___________________________________________________________________________________________
int a=0;
switch (a+1){
case 1: a+1;
case 2: a+1;
case 3: a-1
default: a+1;
}
a) 2
b) 3
c) 0
d) 1
8) Si quisiera recorrer el siguiente array int matriz[7][3] desde el último elemento al primero, usaría el siguiente
código.
a) for(i=0; i<7;i++)
for(j=0;j<3;j++)
matriz[i][j];
b) for(i=6; i>=0;i--)
for(j=2;j>=0;j--)
matriz[i][j];
c) for(i=6; i>0;i--)
for(j=2;j>0;j--)
matriz[i][j];
d) for(i=0; i<7;i++)
for(j=0;j<3;j++)
matriz[j][i];
2
Alumno:___________________________________________________________________________________________
#define PI 3.14
#define N "2"
struct punto{
float coordX;
float coordY;
};
struct punto Figuras[10], *F1;
char *p, colores[10][15];
float datos[20][10];
int T[15], N1;
3
Alumno:___________________________________________________________________________________________
int i; int i;
int mayor=0, int pos; int mayor=0, char nombre2[10];
for(i=0;i<10;i++) for(i=0;i<10;i++)
if(festival[i].presupuesto>mayor){ if(festival[i].presupuesto>mayor){
mayor= festival[i].presupuesto; mayor= festival[i].presupuesto;
pos=i; strcpy(nombre, festival[i].nombre) ;
} }
printf("El nombre es %s", festival[i].nombre); printf("El nombre es %s",nombre2);//puts(nombre2);
// puts(festival[i].nombre);
b) Mostrar el nombre del segundo componente del grupo con mayor honorarios. (1.8 ptos)
int i,j;
int mayor=0, char nombre2[50];
for(i=0;i<10;i++){
n=festival[i].n_grupos-1;
for(j=0;j<n;j++)
if(festival[i].grupos[j].honorarios>mayor){
mayor= festival[i].grupo[j].honorarios;
strcpy(nombre2, festival[i].grupos[j].componentes[1].nombre) ;
}
printf("El nombre es %s",nombre2); //puts(nombre2);
4
Alumno:___________________________________________________________________________________________
Indicar cómo queda la matriz del ejemplo una vez a que se ejecuta el siguiente programa. (3 puntos)
2 5 7 6 2 6 8 12
1 3 5 4 8 9 5 4
0 1 1 6 15 15 5 4
7 6 0 0 17 21 13 16
#include<stdlib.h> El alumno debe rellenar cómo queda la
#include<stdio.h> matriz tras cada ejecución del bucle do-
while:
#define n 4 Iteración 1:
int main() 1 3 5 4
{
int it; 0 1 1 6
int M[4][4]={2,5,7,6,1,3,5,4,0,1,1,6,7,6,0,0};
7 6 0 0
it=1;
Iteración 2:
do
{
2 6 8 12
if (M[it-1][it-1]%2 == 0) Proc(M,n-4,n-2,it-1);
else Proc(M,n-3,n-1,it-1); 8 9 5 4
it++;
} 0 1 1 6
while (it<=n);
system("Pause"); 7 6 0 0
return 0; Iteración 3:
}
2 6 8 12
void Proc(int MA[n][n],int f1, int f2, int f3)
{
int i; 8 9 5 4
for (i=0;i<n;i++) 15 15 5 4
{
MA[f3][i]=MA[f1][i]+MA[f2][i]; 7 6 0 0
}
Iteración 4:
}
2 6 8 12
8 9 5 4
15 15 5 4
17 21 13 16
5
Alumno:___________________________________________________________________________________________
4.- Programa que visualiza la media, el valor más pequeño, el valor más grande y la cantidad de números positivos de un vector,
llamando a una función que realiza dichos cálculos. Sin embargo se han cometido ciertos errores. Se pide escribir correctamente
cada una de las líneas en las que detecte algún error (ya sea de tipo sintáctico, o un error que hace que la ejecución del programa
no sea la esperada) (2 ptos)
Programa con errores Programa sin errores
1 #include <stdio.h> #include <stdio.h>
2 #include <stdlib.h> #include <stdlib.h>
3 #define tamax 20; #define tamax 20
4 void calculos (float vect[tamax], int celdas, float *media, void calculos (float vect[tamax], int celdas, float *media,
float *min, float *max, int *npos) float *min, float *max, int *npos);
5 int main (){ int main (){
6 float vect [celdas]={3.4, 4.5, 7.0, 8.0, 1.0, 0.0, 3.0, 1.0, 10.0, float vect [tamax]={3.4, 4.5, 7.0, 8.0, 1.0, 0.0, 3.0, 1.0,
5.0}; 10.0, 5.0};
7 int celdas=10; int npos,celdas=10;
8 float min, max, media; float min, max, media;
9 calculos (vect, celdas, media, min, max, npos); calculos (vect, celdas, &media, &min, &max, &npos);
10 printf ("\nLa media del vector es: %f",media); printf ("\nLa media del vector es: %f",media);
11 printf ("\nEl valor mas bajo es: %f",min); printf ("\nEl valor mas bajo es: %f",min);
12 printf ("\nEl valor mas alto es: %f",max); printf ("\nEl valor mas alto es: %f",max);
13 printf ("\nHay %f numeros positivos\n",npos); printf ("\nHay %d numeros positivos\n",npos);
14 system("pause"); system("pause");
15 } }
16 void calculos (float vect[tamax], int celdas, float *media, void calculos (float vect[tamax], int celdas, float *media,
float *min, float *max, int *npos) { float *min, float *max, int *npos) {
17 int suma; float suma;
18 int i; int i;
19 suma=0; *min=-999999.0; *max=999999.0; *npos=0; suma=0; *min=999999.0; *max=-999999.0; *npos=0;
20 for (i=0;i<=celdas;i++){ for (i=0;i<celdas;i++){
21 suma=suma+vect[i]; suma=suma+vect[i];
22 if (vect[i]< *min) *min=vect[i]; if (vect[i]< *min) *min=vect[i];
23 if (vect[i]> *max) *max=vect[i]; if (vect[i]> *max) *max=vect[i];
24 if (vect[i]>= 0) *npos=*npos+1; if (vect[i]>= 0) *npos=*npos+1;
25 } }
26 *media=celdas/suma; *media=suma/celdas;
27 } }