/-------------------------\ Ejercicios: Ficheros en C \-------------------------/ i. Realizar un programa que ordene vectores empleando el siguiente esquema: 1. El vector entrada se encuentra en el fichero "entrada.txt" y tiene el siguiente formato: v[10]={8,4,7,6,1,2,3,9,5,10} Es decir, habrá que analizar la entrada. Se obtiene el tamaño del vector: fscanf(fd_in,"v[%i]={",&dim); y luego se leen tantos elementos como se obtenga en 'dim'. Si el formato del vector es incorrecto, el programa debe de advertir del error. Se debe comprobar que el vector no contiene números repetidos. Nota: Como no sabemos emplear memoria dinámica, se impondrá un límite a los vectores (100 elementos, por ejemplo). 2. Se ordenará el vector con el algoritmo de la burbuja. 3. Se guardará el resultado en "salida.txt" siguiendo el mismo formato que en el punto 1. ii. Modificación del programa anterior: parámetros por linea de comando. C dispone de un mecanismo para poder pasar parámetros a la función main(). Ejemplo: $ ordenav entrada.txt salida.txt En el ejemplo el programa 'ordenav' se comporta como se describió en el ejercicio anterior, con la diferencia de que los nombres de los ficheros se proporcionan por la linea de comandos. La función main tendrá la siguiente forma: int main(int argc, char *argv[]) argc: es un entero que indica cuantos parámetros tiene la linea de comandos. Se cuenta al nombre del programa como parámetro mas. Ejemplo: $ ordenav fichero1.txt fichero2.txt -> argc vale 3 argv: es un vector de cadenas de texto con los parámetros del programa. Ejemplo: $ ordenav fichero1.txt fichero2.txt argc vale 3 argv[0] vale "ordenav",0 argv[1] vale "fichero1.txt",0 argv[2] vale "fichero2.txt",0 La forma de trabajar es la siguiente: 1. Se comprueba mediante argc que tenemos el número de parámetros necesarios (en este caso deben ser 3: el nombre del programa, el nombre del fichero de entrada y en nombre del fichero de salida). 2. Si el número de parámetros es incorrecto se muestra un mensaje de error y el programa termina (no puede trabajar). 3. Si es número de parámetros es correcto: a. Se emplea argv[1] como nombre del fichero de entrada. Ej.: fd_in=fopen(argv[1],"rt"); b. Se emplea argv[2] como nombre del fichero de salida. Ej.: fd_out=fopen(argv[2],"wt"); 24 de Febrero de 2003 *****