me podeis corregir este programa?,gracias

caittif81
24 de Febrero del 2004
#include <stdio.h>
#include <conio.h>
#include <string.h>
void introducir ();
void visualizar(char fich[]);
void buscar_codigo();
void buscar_nombre();
void edades_medias();
void jubilados();
void mostrar_jubilados(char fich[]);
//fuera del main
struct s_amigo{
int cod;
char nombre [12];
int edad;
};
struct s_amigo amigo;

//struct s_amigo amigo; en vez de ponerlos al principio
//referenciarlos amigo.cod



int main (void){
int opcion;
do{
printf("n1-Introducir datos");
printf("n2-Visualizar datos");
printf("n3-Buscar por codigo");
printf("n4-Buscar por nombre");
printf("n5-Escribir las edades medias");
printf("n6-Crear fichero de jubilados");
printf("n7-Mostrar fichero de jubilados");
printf("n9-Fin del programa");
printf("n¿QUE OPCION QUIERES?");
scanf("%d",&opcion);
switch (opcion){
case 1: printf("n1-Introducir datos");
introducir();
break;
case 2: printf("n2-Visualizar datos");
visualizar("agenda.txt");
break;
case 3: printf("n3-Buscar por codigo");
buscar_codigo();
break;
case 4: printf("n4-Buscar por nombre");
buscar_nombre();
break;
case 5: printf ("n5-Escribir las edades medias");
edades_medias();
break;
case 6: printf("n6-Crear fichero de jubilados");
jubilados();
break;
case 7: printf("n7-Mostrar fichero de jubilados");
mostrar_jubilados("jubilados.txt");
break;
case 9: printf("n9-Fin del programa");
break;
}
}while (opcion!=9);
return(1);
}
void introducir (){
struct s_amigo amigo;
FILE *pf;
pf = fopen("agenda.txt","a");
printf("nIntroduce el codigo: ");
scanf("%d",&amigo.cod);
printf("nIntroduce el nombre: ");
scanf("%s",amigo.nombre);
printf("nIntroduce la edad: ");
scanf("%d",&amigo.edad);
fprintf(pf,"n%dn%sn%d",amigo.cod,amigo.nombre,amigo.edad);
fclose(pf);
}
void visualizar(char fich[20]){
struct s_amigo amigo;
FILE *pf;
pf= fopen ("agenda.txt","r");
if(pf==NULL){
printf("nNo hay datosn");
}else{
while(!feof(pf)){
fscanf(pf,"n%d",&amigo.cod);
fscanf(pf,"n%s",amigo.nombre);
fscanf(pf,"n%d",&amigo.edad);
printf("nLeido %d,%s,%d",amigo.cod,amigo.nombre,amigo.edad);
}
fclose(pf);
}
}

void buscar_codigo(){
struct s_amigo amigo;
int codigo;
FILE *pf;
pf=fopen("agenda.txt","r");


printf ("¿Que codigo buscas?: ");
scanf ("%d",&codigo);
while (feof(pf)){
if (codigo==amigo.cod){
fscanf(pf,"%d",&amigo.cod);
printf("%d",amigo.cod);
fscanf(pf,"%s",amigo.nombre);
printf("%s",amigo.nombre);
fscanf(pf,"%d",&amigo.edad);
printf("%d",amigo.edad);

}else{
printf("nNO existe");
}
fclose(pf);

}
}
void buscar_nombre(){
struct s_amigo amigo;
FILE *pf;
char nom;
pf = fopen("agenda.txt","r");
printf("¿que nombre buscas?");
scanf("%s",nom);
while(feof(pf))
{
if(strcmp(nom,amigo.nombre)!=0)
{
fscanf(pf,"%dn", &amigo.cod);
printf("%dn",amigo.cod);
fscanf(pf,"%dn", amigo.nombre);
printf("%dn",amigo.nombre);
fscanf(pf,"%dn", &amigo.edad);
printf("%dn",amigo.edad);
}else{
printf("Nombre no encontrado");
}
}
fclose(pf);
}

void edades_medias(){
struct s_amigo amigo;
FILE *pf;
int edadmax,i,c;
pf = fopen("agenda.txt","r");
fscanf(pf,"%dn",&amigo.edad);
for(i=0;i<c;i++)
{
edadmax=edadmax+amigo.edad;
}
printf("nLa edad media es --> %d",edadmax);
}

void jubilados(){
struct s_amigo amigo;
FILE *pf,*pfj;
pf=fopen ("agenda.txt","r");
if(pf==NULL){
printf("nNo hay datos");
}else{
pfj=fopen ("jubilados.txt","w");

while(!feof (pf)){
fscanf (pf,"%d %s %d",amigo.cod,amigo.nombre,amigo.edad);
if (amigo.edad>65){
fprintf (pfj,"%d %s %d",amigo.cod,amigo.nombre,amigo.edad);
}
}
fclose (pf);
fclose (pfj);
}
}
void mostrar_jubilados(char fich[20]){
struct s_amigo amigo;
FILE *pfj;
pfj = fopen ("jubilados.txt","r");
if(pfj==NULL){
printf("nNo hay datosn");
}else{
while(!feof(pfj)){
fscanf(pfj,"n%d",&amigo.cod);
fscanf(pfj,"n%s",amigo.nombre);
fscanf(pfj,"n%d",&amigo.edad);
printf("nLeido %d,%s,%d",amigo.cod,amigo.nombre,amigo.edad);
}
fclose(pfj);
}
}

dvaccaro
24 de Febrero del 2004
Probá con estos cambios
Saludos
Daniel

#include <stdio.h>
#include <conio.h>
#include <string.h>
void introducir ();
void visualizar(char fich[]);
void buscar_codigo();
void buscar_nombre();
void edades_medias();
void jubilados();
void mostrar_jubilados(char fich[]);
//fuera del main
struct s_amigo
{
int cod;
char nombre [12];
int edad;
};

struct s_amigo amigo;

//struct s_amigo amigo; en vez de ponerlos al principio
//referenciarlos amigo.cod



int main (void)
{
int opcion;
do
{
printf("n1-Introducir datos");
printf("n2-Visualizar datos");
printf("n3-Buscar por codigo");
printf("n4-Buscar por nombre");
printf("n5-Escribir las edades medias");
printf("n6-Crear fichero de jubilados");
printf("n7-Mostrar fichero de jubilados");
printf("n9-Fin del programa");
printf("n¿QUE OPCION QUIERES?");
scanf("%d",&opcion);
switch (opcion)
{
case 1: printf("n1-Introducir datos");
introducir();
break;
case 2: printf("n2-Visualizar datos");
visualizar("agenda.txt");
break;
case 3: printf("n3-Buscar por codigo");
buscar_codigo();
break;
case 4: printf("n4-Buscar por nombre");
buscar_nombre();
break;
case 5: printf ("n5-Escribir las edades medias");
edades_medias();
break;
case 6: printf("n6-Crear fichero de jubilados");
jubilados();
break;
case 7: printf("n7-Mostrar fichero de jubilados");
mostrar_jubilados("jubilados.txt");
break;
case 9: printf("n9-Fin del programa");
break;
}
}
while (opcion!=9);
return(1);
}

void introducir ()
{
struct s_amigo amigo;
FILE *pf;
pf = fopen("agenda.txt","a");
printf("nIntroduce el codigo: ");
scanf("%d",&amigo.cod);
printf("nIntroduce el nombre: ");
scanf("%s",amigo.nombre);
printf("nIntroduce la edad: ");
scanf("%d",&amigo.edad);
fprintf(pf,"%dn%sn%dn",amigo.cod,amigo.nombre,amigo.edad);
fclose(pf);
}

void visualizar(char fich[20])
{
struct s_amigo amigo;
FILE *pf;
pf= fopen ("agenda.txt","r");
if( pf==NULL )
{
printf("nNo hay datosn");
}
else
{
while( !feof(pf) )
{
fscanf(pf,"%dn",&amigo.cod);
fscanf(pf,"%sn",amigo.nombre);
fscanf(pf,"%dn",&amigo.edad);
printf("nLeido %d,%s,%d",amigo.cod,amigo.nombre,amigo.edad);
}
fclose(pf);
}
}

void buscar_codigo()
{
struct s_amigo amigo;
int codigo;
FILE *pf;
pf=fopen("agenda.txt","r");


printf ("¿Que codigo buscas?: ");
scanf ("%d",&codigo);
while (!feof(pf))
{
fscanf(pf,"%dn",&amigo.cod);
fscanf(pf,"%sn",amigo.nombre);
fscanf(pf,"%dn",&amigo.edad);
if ( codigo==amigo.cod )
{
printf("n%d",amigo.cod);
printf("n%s",amigo.nombre);
printf("n%d",amigo.edad);
fclose(pf);
return;
}
}
printf("nNO existe");
fclose(pf);
}

void buscar_nombre()
{
struct s_amigo amigo;
FILE *pf;
char nom[13];
pf = fopen("agenda.txt","r");
printf("¿que nombre buscas?");
scanf("%s",nom);
while(!feof(pf))
{
fscanf(pf,"%dn", &amigo.cod);
fscanf(pf,"%sn", amigo.nombre);
fscanf(pf,"%dn", &amigo.edad);
if( !strcmp(nom,amigo.nombre))
{
printf("%dn",amigo.cod);
printf("%sn",amigo.nombre);
printf("%dn",amigo.edad);
fclose(pf);
return;
}
}
printf("Nombre no encontrado");
fclose(pf);
}

void edades_medias()
{
struct s_amigo amigo;
FILE *pf;
int i, c = 0, edadmax = 0;
pf = fopen("agenda.txt","r");
while( !feof(pf))
{
fscanf(pf,"%dn%sn%d",&amigo.cod,amigo.nombre,&amigo.edad);
edadmax+=amigo.edad;
c++;
}
printf("nLa edad media es --> %d",edadmax/c);
}

void jubilados()
{
struct s_amigo amigo;
FILE *pf,*pfj;
pf=fopen ("agenda.txt","r");
if(pf==NULL)
{
printf("nNo hay datos");
}
else
{
pfj=fopen ("jubilados.txt","w");

while(!feof (pf))
{
fscanf (pf,"%dn%sn%dn",&amigo.cod,amigo.nombre,&amigo.edad);
if (amigo.edad>65)
{
fprintf (pfj,"%dn%sn%dn",amigo.cod,amigo.nombre,amigo.edad);
}
}
fclose (pf);
fclose (pfj);
}
}
void mostrar_jubilados(char fich[20])
{
struct s_amigo amigo;
FILE *pfj;
pfj = fopen ("jubilados.txt","r");
if(pfj==NULL)
{
printf("nNo hay datosn");
}
else
{
while(!feof(pfj))
{
fscanf(pfj,"%dn",&amigo.cod);
fscanf(pfj,"%sn",amigo.nombre);
fscanf(pfj,"%dn",&amigo.edad);
printf("nLeido %d,%s,%d",amigo.cod,amigo.nombre,amigo.edad);
}
fclose(pfj);
}
}