Examen 3
Examen 3
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 } }