Criterios de correcci´ on Encontrar los errores: Cada dos ERRORES marcados en l´ıneas v´ alidas se descontar´ a un ERROR correcto. C´ alculo de la funci´ on f : 1. Escribir perfectamente la estructura del programa (variables, entrada y salida de datos), (1 ptos). Errores sint´ acticos, sem´anticos o la no declaraci´on de todas las variables necesarias descontar´an 0.25 ptos/elto. 2. Escribir perfectamente las ´ordenes que aproximan el valor de la funci´on f mediante la suma de la sucesi´on descrita en el enunciado del ejercicio, (3.5 ptos). Cada error sint´actico o sem´antico descontar´ a 0.7 ptos/elto.
1.
Encontrar los errores (3 ptos)
Dado el siguiente c´odigo, encontrar los cinco errores presentes en ´el. Los errores pueden ser sint´ acticos o sem´ anticos. #include <stdio.h> #include <stdlib.h> float calcula_media (int *datos, int x) { int i; float media=0.0; for (i=0;i<x; i++){ media += (float) datos[i]; } return media/x; } int main() { int a[15]={1,2,3,4,5,6,7,8,9,0,11,12,13,14,15}; int b[5]; int i=-10; float x, y; printf("Introduzca un numero entero: "); scanf("%d",&z); for (i=0;i<10; i++) { printf ("Introducir dato: "); scanf ("%f", &b[i]); } x = calcula_media ( b[5], 5); y = calcula_media ( a, 8 ); print("Media del vector1: %f\n", x); printf("Media del vector2: %f\n", y); return 0; } 1
Programa X (2.5 ptos)
2.
Dado el siguiente c´odigo: #include <stdio.h> #include <stdlib.h> int main() { int i, j, k, m, n; printf("Introduzca un valor: "); scanf("%d", &n); m = n%2; if (m != 0) { k = (n-1)/2; for (i=0; i<k+1; i++) { for (j=i; j<k; j++) { printf(" "); } for (j=0; j<(2*i+1); j++) { printf("*"); } printf("\n"); } } return 0; } ¿Qu´e informaci´on se mostrar´a por pantalla cuando n=4?. (1 pto) ¿Qu´e informaci´on se mostrar´a por pantalla cuando n=5?. (1.5 pto)
3.
C´ alculo de la funci´ on f (4.5 ptos)
Realizar un programa que calcule el valor de una funci´on f (x) mediante su aproximaci´on por el polinomio 0 de Taylor de grado n. Este valor se puede calcular mediante la siguiente sucesi´on: f (x) = f (a) + f 1!(a) (x − a) + f 00 (a) 2! (x
− a)2 +
f 000 (a) 3! (x
− a)3 + ... +
f 0n) (a) n! (x
− a)n .
Los valores de x, n y a ser´an introducidos por teclado. Disponemos de una librer´ıa llamada matematica.h en la que tenemos implementada las siguientes funciones: • factorial: int factorial(int x) que devuelve el valor del factorial del n´ umero introducido por par´ametro. • evalf: float evalf(int grado, int x) que devuelve el valor de la funci´on f en el punto x. El par´ametro grado indica si se trata de la funci´on o de alguna de sus derivadas, es decir, grado=0 significa que estamos evaluando la funci´on f . Si el grado=1 estamos evaluando la primera derivada de f y as´ı sucesivamente.
2