Ayuda con un problema en C++
Una comunidad dispone de un fichero secuencial PERSONAS.dat con la siguiente
estructura de campos:
nombre: de tipo cadena de 30 caracteres.
anio_nac: de tipo entero. Es el año de nacimiento.
direccion: de tipo cadena de 60 caracteres.
Se deberá crear un fichero secuencial MAYORES.dat de la misma estructura con los
datos de aquellas personas, que en el año actual, son o van a ser mayores de
edad ( 18 o mas años ).
Al finalizar el proceso, se indicará el numero de personas mayores de edad que
hay en esa comunidad y que porcentaje supone respecto al total.
-----------------------
Este es el enunciado, podriais darme la solucion y a ser posible una explicacion de lo hecho paso a paso? Muchas gracias
estructura de campos:
nombre: de tipo cadena de 30 caracteres.
anio_nac: de tipo entero. Es el año de nacimiento.
direccion: de tipo cadena de 60 caracteres.
Se deberá crear un fichero secuencial MAYORES.dat de la misma estructura con los
datos de aquellas personas, que en el año actual, son o van a ser mayores de
edad ( 18 o mas años ).
Al finalizar el proceso, se indicará el numero de personas mayores de edad que
hay en esa comunidad y que porcentaje supone respecto al total.
-----------------------
Este es el enunciado, podriais darme la solucion y a ser posible una explicacion de lo hecho paso a paso? Muchas gracias
He intentado hacerlo y sin errores dandole mil repasos obtuve esto. Estoy seguro que sigo teniendo un monton de fallos...
typedef struct
{
char nombre[30];
int anio_nac;
char direccion[60];
}
registro1;
typedef struct
{
char nombre[30];
int anio_nac;
char direccion[60];
}
registro2;
void main()
{
FILE *pf1;
FILE *pf2;
registro1 registro11;
registro2 registro22;
int may_edad,porc_may_edad;
if((pf1=fopen("personas.dat","rb"))==NULL);
{
printf("Error de apertura");
}
if((pf2=fopen("mayores.dat","wb"))==NULL);
{
printf("nError de apertura");
}
do
{
may_edad=2009-registro11.anio_nac;
fread(®istro11, sizeof(registro1), 1, pf1);
if( may_edad>=18 )
{
fwrite(®istro22, sizeof(registro2),1,pf2);
may_edad++;
}
}
while(!feof(pf1));
printf("El numero de personas mayores de edad es %d", may_edad);
porc_may_edad=(may_edad/sizeof(registro11))*100;
printf("El porcentaje de mayores de edad con respecto al total es %d", &porc_may_edad);
fclose(pf1);
if(ferror(pf1))
printf("Error de cierre");
fclose(pf2);
if(ferror(pf2))
printf("Error de cierre");
getch();
}
-------------------
Aver que podeis decirme, un saludo
typedef struct
{
char nombre[30];
int anio_nac;
char direccion[60];
}
registro1;
typedef struct
{
char nombre[30];
int anio_nac;
char direccion[60];
}
registro2;
void main()
{
FILE *pf1;
FILE *pf2;
registro1 registro11;
registro2 registro22;
int may_edad,porc_may_edad;
if((pf1=fopen("personas.dat","rb"))==NULL);
{
printf("Error de apertura");
}
if((pf2=fopen("mayores.dat","wb"))==NULL);
{
printf("nError de apertura");
}
do
{
may_edad=2009-registro11.anio_nac;
fread(®istro11, sizeof(registro1), 1, pf1);
if( may_edad>=18 )
{
fwrite(®istro22, sizeof(registro2),1,pf2);
may_edad++;
}
}
while(!feof(pf1));
printf("El numero de personas mayores de edad es %d", may_edad);
porc_may_edad=(may_edad/sizeof(registro11))*100;
printf("El porcentaje de mayores de edad con respecto al total es %d", &porc_may_edad);
fclose(pf1);
if(ferror(pf1))
printf("Error de cierre");
fclose(pf2);
if(ferror(pf2))
printf("Error de cierre");
getch();
}
-------------------
Aver que podeis decirme, un saludo
