Final ICom-2003
Nota: Respete los prototipos de las funciones y las estructuras.
- Implemente una función que calcule y retorne el gradiente de otra
función cuyo dominio pertenece a R^n. Prototipo:
double * gradiente( double (*pf) (double *r, int n ), double *r,
int n, double eps);
Donde pf es un puntero a la función de la cual se
quiere calcular el gradiente, r es un arreglo de n
doubles (el punto donde se quiere calcular el gradiente), n
es la dimensión del dominio de la función, y eps
es un valor muy pequeño que permite calcular la derivada por diferencias
(por ejemplo dg(x)/dx = (g(x+eps)-g(x-eps)/(2*eps))). En
el código contenido en el archivo f1ej1.c enccontrará
un main que gracias a esta función calcula e imprime
el gradiente de una función (también definida en el archivo)
llamada parab.
- Implemente un programa que reciba por linea de argumentos
el nombre de un archivo que contiene texto. El programa debe leer el texto
y modificarlo de la siguiente manera: para cada palabra, la primera y la última
letra quedan como están, y el resto de las letras de esa palabra se
mezclan al azar. El texto modificado debe ser escrito en un archivo cuyo nombre
se pide al usuario.
- En el juego de los Fijos y Regulares un jugador elige un
número de n cifras todas distintas (el número
de cifras se pacta antes de empezar el juego) y el otro jugador trata de adivinarlo
diciendole números con las mismas características (n cifras
todas distintas...). A cada intento el jugador con el número secreto
responde con el número de cifras que coinciden con su número
secreto discriminadas como Fijos si estan en la misma posición
o Regulares si estan en otra posición. Por ejemplo,
si el número secreto es el 84753 y el intento de adivinarlo
fuera 38954 entonces obtendría 1F y 3R.
El programa que contiene el archivo f1ej3.c pide el
número de cifras al usuario y genera un número secreto al azar,
y le pide al usuario que lo adivine. Para que este programa funcione, ud.
deberá implementar las siguientes funciones:
- char * GenSecret (int ncifras);
/* Genera un número secreto válido al azar y lo retorna */
- char * GetLine ();
/* Lee una línea del teclado, elimina el \n del
final y la retorna */
- int IsBadNnumber(char *s);
/* retorna 1 si el número contenido en s
contiene cifras repetidas o caracteres que no sean cifras o tiene menos
de 1 cifra, y 0 en otro caso*/
- int FyR(char *secret, struct fyr * result);
/* Esta función debe verificar que el intento guess
es un número válido y compatible con el número a
adivinar (secret), calcular el número de Fijos
y de Regulares, poniendolos en result
(la definición de la estructura fyr están
en el archivo). Debe retornar 1 en caso de error y 0
si todo está correcto.*/