Clase 6
Menu Principal | VIM | Clase 2 | Clase 3 | Clase 4 | Clase 5
Generando archivos para escritura.
A continuación realizaremos un set de programas los que a partir de ciertas funciones generan ficheros con información.
Datos de una función en un fichero.
Vamos a graficar un lanzamiento de dos dados, y realizaremos un conteo de cuántas veces se repiten en el conteo.
Sabemos que los dados dan un mínimo de 2 y un máximo de 12, para almacenar ese valor utilizaremos las letras
a,b,c,d,e,f,g,h,i,j,k
Comenzamos el programa declarando las librerías necesarias para trabajar con números al azar entre 2 y 12.
#include <stdlib.h> #include <stdio.h> #include <time.h> #include <unistd.h> int main() { int a=0,b=0,c=0,d=0,e=0,f=0; int g=0,h=0,i=0,j=0,k=0;
Ahora necesitamos lanzar los dados y contar para el valor obtenido en el lanzamiento, vamos a probar una primera estadística inicial para 100 lanzamientos.
int z=0; for(z=0;z<100;z=z+1) { srand(time(NULL)*z*z + getpid()*z); int w = 2 + (rand()%11); if ( w == 2 ) a = a + 1; else if ( w == 3 ) b = b + 1; else if ( w == 4 ) c = c + 1; else if ( w == 5 ) d = d + 1; else if ( w == 6 ) e = e + 1; else if ( w == 7 ) f = f + 1; else if ( w == 8 ) g = g + 1; else if ( w == 9 ) h = h + 1; else if ( w == 10 ) i = i + 1; else if ( w == 11 ) j = j + 1; else if ( w == 12 ) k = k + 1; else { printf("Error en lanzamiento de dados.!!\n"); return -1; } }
Listo hemos realizado los cien lanzamientos y almacenado la estadística en las distintas variables, ahora definimos un archivo de salida y guardaremos la información en él.
FILE * pfile; pfile = fopen("statistics.dat","w"); if(!pfile) { printf("No se pudo abrir el archivo para grabar en el."); return -1; } fprintf(pfile, "#Valor \t Ocasiones\n"); fprintf(pfile, "2 \t %d\n",a); fprintf(pfile, "3 \t %d\n",b); fprintf(pfile, "4 \t %d\n",c); fprintf(pfile, "5 \t %d\n",d); fprintf(pfile, "6 \t %d\n",e); fprintf(pfile, "7 \t %d\n",f); fprintf(pfile, "8 \t %d\n",g); fprintf(pfile, "9 \t %d\n",h); fprintf(pfile, "10 \t %d\n",i); fprintf(pfile, "11 \t %d\n",j); fprintf(pfile, "12 \t %d\n",k); return 0; }
Compile, ejecute y grafique los resultados. Genere distintos datos para 110, 1000, 10000, 100000 lanzamientos.
Manejo de dos ficheros de forma simultánea
Ejercicio simple.
A continuaci\'on usted debe realizar un programa que itere desde 1 a 1000.
El objetivo es que guarde los números pares en un archivo pares.dat y los impares en un archivo impares.dat.
Para llevar a cabo el problema debe declarar dos FILE y dentro de la iteración verificar la paridad del número, para, según eso escribir en uno u otro archivo.
Leyendo información desde un fichero
A continuación deberá realizar usted mismo un programa para leer archivos desde un fichero, y con eso generar un nuevo fichero con los valores previos y una función evaluada.
Entrada desde un fichero de datos
Del fichero generado previamente "impares.dat", usted deberá generar un nuevo fichero que evalúa la función
f(x) = x*x*x + sin(x)*cos(x) - exp(-x)
en los números impares y guarda ambas columnas en un nuevo archivo.
Por ejemplo el fichero de entrada tiene un valor 1, entonces el fichero de salida deberá mostrar
1 0.45465
y así para los siguientes números. Una vez finalizado grafique los resultados.