C:\Users\Jose\Documents\Cuadernos\UTN Año Lectivo 2016

Anuncio
//--------------------------------------------------------------------------#include <stdio.h>
#include <stdlib.h>
#pragma hdrstop
/*
UTILIZACION DE ESTRUCTURAS EN ARCHIVOS
*/
//--------------------------------------------------------------------------struct punto
{
double x, y;
};
struct registro
{
int serie;
punto a, b;
};
#pragma argsused
double generarvalor(void)
{
/*
esta función genera un número real aleatorio con dos decimales
positivo o negativo
*/
int n;
double x = random(10000)+1;
x /= 100.00;
n = random(100);
if( n%2 == 0 )
{//determinamos el signo del número segun el número sea par o impar
x *= -1.0;
}
return x;
}
main()
{
FILE * f;
int r, i= 0,n, srn;
registro rg;
randomize();
f = fopen("lecturas", "a+b");
if( f != NULL )
{
//buscamos el ultimo numero de serie
fseek(f, (sizeof(registro)*-1 ), SEEK_END );
//OBSERVAR QUE VA MULTIPLICADO POR -1 AUN UTILIZANDO SEEK_END
r = fread( &rg, sizeof(rg), 1, f );
srn = 1; //valor de la serie si no hay datos cargados
if( r != 0 )
{//ya hay datos cargados en el archivo
srn = rg.serie + 1;
}
fseek(f, 0, SEEK_END ); //nos vamos al fin del archivo
//seleccionamos una cantidad aleatoria de valores a generar
n = random(200) + 1;
for( i = 0; i < n; i++ )
{
rg.serie = srn;
rg.a.x = generarvalor();//ver funcion generarvalor
rg.a.y = generarvalor();
rg.b.x = generarvalor();
rg.b.y = generarvalor();
fwrite(&rg, sizeof(rg), 1, f );
//con un solo fwrite se guardan los valores de la estructura
}
fclose(f);
}
}
//---------------------------------------------------------------------------
//--------------------------------------------------------------------------#include <stdio.h>
#include <stdlib.h>
/*
UTILIZACION DE ESTRUCTURAS EN ARCHIVOS
(Lectura de Datos)
*/
//--------------------------------------------------------------------------struct punto
{
double x, y;
};
struct registro
{
int serie;
punto a, b;
};
//--------------------------------------------------------------------------#pragma hdrstop
//--------------------------------------------------------------------------#pragma argsused
main()
{
FILE* f;
registro rg;
int n = 0;
f = fopen( "lecturas", "rb" );
if( f != NULL )
{
while( !feof(f) )
{//feof() funcion que devuelve 0 si no se alcanzó el fin de archivo
// y 1 si lo hizo
fread(&rg, sizeof(rg), 1, f );
printf( "secuencia: %d Punto a (%lf, %lf ), b (%lf, %lf)\n",
rg.serie, rg.a.x, rg.a.y, rg.b.x, rg.b.y );
//OBSERVAR QUE UNA SOLA LECTURA LEVANTA TODOS LOS DATOS A LA
//ESTRUCTURA EN LA OPERACION DE LECTURA
n++;
}
fclose(f);
printf( "\n\nFueron leidos %d juegos de valores", n );
}
}
//---------------------------------------------------------------------------
Descargar