2014

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.

University

Personal

edit SideBar