Está en la página 1de 6

Examen: FUNDAMENTOS DE INFORMÁTICA

Fecha: 6 de FEBRERO de 2017


Curso: 2013/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

1
Alumno:___________________________________________________________________________________________

Pregunta 2: Disponiendo de las siguientes estructuras y declaraciones de variables, responda a las


cuestiones que se plantean(3 puntos):
struct Datos_contacto{
char email[25];
char telefono_fijo[10];
char telefono_movil[10];
};
struct Persona
{
char Nombre[35];
char Direccion[35];
char Fecha_Nacimiento[11];
char clave[10]; // clave para poder acceder a los datos
struct Datos_contacto contacto[4];// el usuario debe tener cuatro contactos
int codigo_postal;
};

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]

Propietario[50] Amigos[100] NAmigos

nombre[35] Dirección[35] contacto[4]


FechaNacimiento clave[10] codigo postal

email[25] telefono_fijo[10] telefono_movil[10]

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

#include<stdio.h> El alumno debe rellenar cómo queda la matriz


#include<stdlib.h> tras cada ejecución del bucle do-while:
Iteración 1:
#define n 3
15 16 15
void Proc( int MA[n][n], int f1, int dia);
int Fun(int MA[n][n], int d); 2 3 2

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:
}

void Proc ( int MA[n][n], int f1, int dia){


int i;
for (i=0;i<n;i++){
if (f1%2) {
MA[f1][i]=MA[f1][i]+dia;
}
else{
MA[f1][i]=MA[f1][i]+dia*2;
}
}
}

int Fun (int MA[n][n], int d){


int i, r=0;
switch(d){
case 0: for (i=0;i<n;i++) r=r+MA[i][i];
break;
case 1: for (i=0;i<n;i++) r=r+MA[i][n-i-1];
}
return r;
}

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:___________________________________________________________________________________________

Programa sin errores Programa sin errores


34 ncredisp=ncredisp-ncred; ncredisp=ncredisp-ncred;
35 printf("Credito Restante: %i\n", ncredisp) printf("Credito Restante: %i\n", ncredisp)
36 i++; i++;
37 }while(i<=4 && ncredisp>0) }while(i<=4 && ncredisp>0)
38 break; break;
39 case 2: case 2:
40 ncredisp=30;ncredmat=0;ncursos=0;i=1; ncredisp=30;ncredmat=0;ncursos=0;i=1;
41 printf("Creditos disponibles: %i\n", ncredisp); printf("Creditos disponibles: %i\n", ncredisp);
42 do{ do{
43 printf("Introd. los cred. de %i- curso: ", i); printf("Introd. los cred. de %i- curso: ", i);
44 scanf("%i", &ncred); scanf("%i", &ncred);
45 while(ncred<0||ncred>ncredisp){ while(ncred<0||ncred>ncredisp){
46 printf("Debe estar entre 0 y %i:", ncredisp); printf("Debe estar entre 0 y %i:", ncredisp);
47 scanf("%i", &ncred);} scanf("%i", &ncred);}
48 ncredmat+=ncred; ncredmat+=ncred;
49 if(ncred<0); if(ncred>0)
50 ncursos++; ncursos++;
51 ncredisp=ncredisp+ncred; ncredisp=ncredisp-ncred;
52 printf("Credito Restante: %i\n", ncredisp); printf("Credito Restante: %i\n", ncredisp);
53 i++; i++;
54 }while(i<=2 && ncredisp>0); }while(i<=2 && ncredisp>0);
55 break; break;
56 case 3: case 3:
57 printf("Hasta pronto."); printf("Hasta pronto.");
58 } }
59 if (ciclo=3){ if (ciclo!=3){
60 printf("INFORME: \n"); printf("INFORME: \n");
61 printf("Nombre del alumno: %s\n", nom); printf("Nombre del alumno: %s\n", nom);
62 printf("Ciclo del alumno: %i\n", ciclo); printf("Ciclo del alumno: %i\n", ciclo);
63 printf("Total de creditos matriculados: %i\n",ncredmat); printf("Total de creditos matriculados: %i\n",ncredmat);
64 printf("Total de creditos disponibles: %i\n",ncredisp); printf("Total de creditos disponibles: %i\n",ncredisp);
65 printf("Cursos matriculados: %i\n", ncursos);} printf("Cursos matriculados: %i\n", ncursos);}
66 }while(seguir!='N' | | seguir!='n'); } }while(seguir!='N' && seguir!='n'); }

También podría gustarte