parcial 1 2015 qa108 solucion
DESCRIPTION
Examen de informática (Etsidi) resueltoTRANSCRIPT
Examen de Informática – Primer Parcial Q108-‐A108 (A)
Nombre y apellidos:
Grupo: Nº. Matrícula:
Ejercicio 1 (2.5 puntos, 20 minutos) Escribir en el lugar reservado bajo cada programa lo que cada uno de ellos mostraría exactamente en la pantalla. Si hubiese algún error, indicarlo brevemente. #include <stdio.h> struct hora { int h; int m; }; int main(void) { struct hora; hora.h=3;hora.m=23; printf("Hora:%d:%d",hora.h,hora.m); }
#include <stdio.h> void main(){ int i=5, j=7, k=3, a=1, s1; s1 = ((j/k)%2)+2; s1 -= a; s1 %= --i; printf("s1=%d\n", s1); }
Error: Falta definir una variable del tipo struct hora
s1=1
#include <stdio.h> #include <math.h>
void main() { int i, s=0; vector[4]={4,9,16}; for(i=1;i<=2;i++) { s=sqrt(vector[i]); printf("%d ", s); }
}
#include <stdio.h> int main(void) { char verdadero = 0; char falso = 12; if (verdadero) printf("%d\n", verdadero); else printf("Algo ha fallado!\n"); if (falso) printf("Algo ha fallado!\n"); else printf("%d\n", falso); return 0;
} Error: falta el tipo de vector[4] Algo ha fallado!
Algo ha fallado! #include<stdio.h>
int main(void) { int i=0; char var[]="Perro"; while(var[i]!= '\0') { printf("%c", var[i++]-1); }
}
Odqqn
Ejercicio 2 (2.5 puntos, 20 minutos) Escribir un programa que pida un número al usuario (mayor que 1) y: 1. Devuelva el primer número de la sucesión de Fibonacci que sea mayor al número dado. 2. Devuelva el número más cercano (ya sea mayor o menor al dado). El número entero introducido por el teclado debe ser mayor que 1: el programa comprobará esta condición y pedirá de nuevo el número si ésta no se cumple. Ejemplo: >Introduzca un número (mayor que 1 ): -‐3 > Introduzca un número (mayor que 1 ): 6 Numero de Fibonacci: 5 > Introduzca un número (mayor que 1 ): 7 Numero de Fibonacci: 8 Nota.-‐ La sucesión de Fibonacci comienza con los números 1 y 1, y a partir de estos, «cada término es la suma de los dos anteriores». 1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,… Solución #include <stdio.h> void main() { int fib1=1; int fib2=2; int aux=0; int n; //BUCLE "CENTINELA" do { printf("Introduzca n (mayor o igual que 1): "); scanf("%d", &n); } while(n<1); //BUCLE "PRINCIPAL" for(int i=1;;i++) { aux=fib1; fib1=fib2; fib2+=aux; if (fib2>n) { if ((fib2-n)<(n-fib1)) printf("Fib num=%d\n", fib2); else printf("Fib num=%d\n", fib1); break; } } }
Ejercicio 3 (2,5 puntos, 25 minutos) Se pide hacer un programa que lea una frase por teclado (máximo 100 caracteres) y una palabra y diga: 1. Si esa palabra se encuentra en la frase o no. 2. El número de veces que esa palabra está en la frase. Nota. No se permite el uso de la librería “string.h” Solución #include <stdio.h> void main() { char frase1[20], frase2[20]; int i=0, j=0, k, encontrado=0, numveces=0, longitud2=0; printf("Introduzca la frase: "); gets(frase1); printf("Introduzca la palabra: "); gets(frase2); while(frase2[longitud2] != '\0') { longitud2++; } while (frase1[i]!='\0') { if (frase1[i]==frase2[0]) //Si coincide la 1ª letra seguimos buscando { encontrado=1; k=i; // k es un nuevo índice para buscar a partir de i j=0; // j es el índice para recorrer frase2 while (frase2[j]!='\0') { if (frase1[k]!=frase2[j]) { encontrado=0; break; } j++; k++; } if (j==longitud2) { numveces++; } } i++; } if (encontrado) printf("\nEncontrado %d veces\n", numveces); else printf("\nNo Encontrado\n"); }
Ejercicio 4 (2,5 puntos, 25 minutos)
En una biblioteca se quiere implementar un sistema de gestión de préstamos de libros. Para ello se crea la siguiente estructura con los campos código para almacenar el numero de identificación del libro y email para almacenar el email de la persona que lo tiene prestado: struct Prestamo { int codigo; char email[20]; }; Se pide escribir un programa que: 1. Cree un vector de 100 Prestamo (llamado “ListaPrestamos”) y lo inicialice con 2 valores. 2. Permita al usuario introducir nuevos préstamos (todos los que quiera) 3. Permita al usuario buscar el código del libro que tiene prestado una persona dado su
email. Si no hay ninguna persona con ese email en la “ListaPrestamos” el programa debe indicarlo.
Nota: se puede usar la librería <string.h> Solución #include <stdio.h> #include <stdlib.h> #include <string.h> #define NUM_MAX_PRESTAMOS 100 struct Prestamo { int codigo; char email[20]; }; int main(){ struct Prestamo ListaPrestamos[NUM_MAX_PRESTAMOS]={{1234,"[email protected]"},{5445,"[email protected]"}}; char opcion='y', encontrado=0; char emailbusqueda[50]; int index=1; while(opcion!='n'){ index++; printf("Introduzca codigo:"); scanf("%d",&ListaPrestamos[index].codigo); printf("\nIntroduca email:"); gets(ListaPrestamos[index].email); printf("\nIntroducir otro contacto(s/n)?\n"); scanf("%c",&opcion); } printf("Introduzca email de busqueda\n"); gets(emailbusqueda); for(int i=0;i<NUM_MAX_PRESTAMOS; i++){ if (strcmp(ListaPrestamos[i].email,emailbusqueda)==0){ printf("Libro=%d\n",ListaPrestamos[i].codigo); encontrado=1; } } if (encontrado==0) printf("Email no encontrado\n"); }