Ayuda con la codificación
Hola alguien puede mirar este programa para ver los errores de codificación que tiene que no soy capaz de solucionar, el error tiene que estar por donde esta señalado. Gracias
#include <stdio.h>
#include <conio.h>
#define MAXPER 100
#define IMPED 1200
#define LIMING 30000
#define DIVIN 120000
#define FIN "XXXX"
/* se define la estructura del registro que mas adelante se utilizara*/
typedef struct
{
char nom[10],ape[10];
float ing;
}tPersona;
/*se definen los modulos que se van a ulilizar en el modulo principal*/
void recuperarPers(char[],tPersona[],int*);
int leerEntero(int,int);
void aniadirPers(tPersona[],int*,int);
void mostrarPers(tPersona[],int);
void eliminarPers(tPersona[],int*);
void calcImpuestos(tPersona[],int);
void grabarPers(char [],tPersona[],int);
void main()
{
tPersona pers[MAXPER];
int np,opc;
clrscr();
/*llamada al modulo recuperarPers*/
recuperarPers("PERSONAS.DAT",pers,&np);
do
{
printf("1. A¤adir personas\n2. Mostrar personas\n3. Eliminar una persona\n4. Impuestos\n5. Salir\nIntroduce una opci¢n: ");
/*Llamada al modulo leerEntero que devuelve un numero del 1 al 5 que se le asocia a la variable opc*/
opc=leerEntero(1,5);
switch(opc)
{
case 1:
{
/*llamada al modulo aniadirPers*/
aniadirPers(pers,&np,MAXPER);
/*llamada al modulo grabarPers*/
grabarPers("PERSONAS.DAT",pers,np);
}
break;
case 2:
{
/*llamada al modulo mostrarPers*/
mostrarPers(pers,np);
}
break;
case 3:
{
/*llamada al modulo eliminarPers*/
eliminarPers(pers,&np);
/*llamada al modulo grabarPers*/
grabarPers("PERSONAS.DAT",pers,np);
}
break;
case 4:
{
/*llamada al modulo calcImpuestos*/
calcImpuestos(pers,np);
}
break;
}
}
while(opc!=5);
getch();
}
/* cuerpo del modulo recuperarPers(lee el numero de personas y la lista de personas)*/
void recuperarPers(char PERSONA.DAT[],tPersona pers[],int *pnp)
{
FILE *fpers;
/*se abre el archivo para saber si ya hay algo escrito en el*/
fpers=fopen("PERSONAS.DAT","r");
if (fpers==NULL)
{
*pnp=0;
}
else
{
/*Si no esta vacío el archivo lee el numero de personas y la lista de personas y las lleva al modulo principal*/
fread(*pnp,sizeof(int),1,fpers);
fread(pers,sizeof(tPersona),*pnp,fPers);
fclose(fPers);
}
}
/* Cuerpo del modulo leerEntero(limita el intervalo de numero que el usuario puede escoger*/
int leerEntero(int MINIMO,int MAXIMO)
{
int n;
printf("\nIntroduce una opci¢n: ");
scanf("%d",&n);
while(n<MINIMO||n>MAXIMO)
{
printf("\nError, debe estar en el intervalo [%d,%d]: ",MINIMO,MAXIMO);
scanf("%d",&n);
}
/*devuelve "n" al modulo principal*/
return(n);
#include <stdio.h>
#include <conio.h>
#define MAXPER 100
#define IMPED 1200
#define LIMING 30000
#define DIVIN 120000
#define FIN "XXXX"
/* se define la estructura del registro que mas adelante se utilizara*/
typedef struct
{
char nom[10],ape[10];
float ing;
}tPersona;
/*se definen los modulos que se van a ulilizar en el modulo principal*/
void recuperarPers(char[],tPersona[],int*);
int leerEntero(int,int);
void aniadirPers(tPersona[],int*,int);
void mostrarPers(tPersona[],int);
void eliminarPers(tPersona[],int*);
void calcImpuestos(tPersona[],int);
void grabarPers(char [],tPersona[],int);
void main()
{
tPersona pers[MAXPER];
int np,opc;
clrscr();
/*llamada al modulo recuperarPers*/
recuperarPers("PERSONAS.DAT",pers,&np);
do
{
printf("1. A¤adir personas\n2. Mostrar personas\n3. Eliminar una persona\n4. Impuestos\n5. Salir\nIntroduce una opci¢n: ");
/*Llamada al modulo leerEntero que devuelve un numero del 1 al 5 que se le asocia a la variable opc*/
opc=leerEntero(1,5);
switch(opc)
{
case 1:
{
/*llamada al modulo aniadirPers*/
aniadirPers(pers,&np,MAXPER);
/*llamada al modulo grabarPers*/
grabarPers("PERSONAS.DAT",pers,np);
}
break;
case 2:
{
/*llamada al modulo mostrarPers*/
mostrarPers(pers,np);
}
break;
case 3:
{
/*llamada al modulo eliminarPers*/
eliminarPers(pers,&np);
/*llamada al modulo grabarPers*/
grabarPers("PERSONAS.DAT",pers,np);
}
break;
case 4:
{
/*llamada al modulo calcImpuestos*/
calcImpuestos(pers,np);
}
break;
}
}
while(opc!=5);
getch();
}
/* cuerpo del modulo recuperarPers(lee el numero de personas y la lista de personas)*/
void recuperarPers(char PERSONA.DAT[],tPersona pers[],int *pnp)
{
FILE *fpers;
/*se abre el archivo para saber si ya hay algo escrito en el*/
fpers=fopen("PERSONAS.DAT","r");
if (fpers==NULL)
{
*pnp=0;
}
else
{
/*Si no esta vacío el archivo lee el numero de personas y la lista de personas y las lleva al modulo principal*/
fread(*pnp,sizeof(int),1,fpers);
fread(pers,sizeof(tPersona),*pnp,fPers);
fclose(fPers);
}
}
/* Cuerpo del modulo leerEntero(limita el intervalo de numero que el usuario puede escoger*/
int leerEntero(int MINIMO,int MAXIMO)
{
int n;
printf("\nIntroduce una opci¢n: ");
scanf("%d",&n);
while(n<MINIMO||n>MAXIMO)
{
printf("\nError, debe estar en el intervalo [%d,%d]: ",MINIMO,MAXIMO);
scanf("%d",&n);
}
/*devuelve "n" al modulo principal*/
return(n);
Respuesta de razorx76
1