parcial 1 2015 qa108 solucion

4
Examen de Informática – Primer Parcial Q108A108 (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

Upload: alejandro-delarubia

Post on 16-Jan-2016

7 views

Category:

Documents


0 download

DESCRIPTION

Examen de informática (Etsidi) resuelto

TRANSCRIPT

Page 1: Parcial 1 2015 QA108 Solucion

 

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

Page 2: Parcial 1 2015 QA108 Solucion

 

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

Page 3: Parcial 1 2015 QA108 Solucion

 

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"); }      

Page 4: Parcial 1 2015 QA108 Solucion

 

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"); }