por favor me podrían ayudar??
tengo un problema con este ejercicio que compila, pero a la hora de hacer la recarga no se incrementa el saldo.
Tiene tambien si la localidad es igual a lanus un aumento del %1.
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
typedef struct{
int linea;
char localidad[20];
float saldo;
int recarga;
}CELULAR;
void carga(void);
void informe(void);
void recarga(void);
void main()
{
carga();
informe();
recarga();
getch();
}
void carga(void)
{
FILE *fp;
CELULAR C;
if((fp=fopen("C:\\celu.dat","rb+"))==NULL)
fp=fopen("C:\\celu.dat","wb+");
printf("Ingrese numero de linea:");
scanf("%d",&C.linea);
while(C.linea!=0)
{
printf("Ingrese localidad:");
fflush(stdin);
gets(C.localidad);
fflush(stdin);
printf("Ingrese el saldo:");
scanf("%f",&C.saldo);
fflush(stdin);
printf("Ingrese recarga:");
scanf("%d",&C.recarga);
fwrite(&C,sizeof(CELULAR),1,fp);
printf("Ingrese numero de linea:");
scanf("%d",&C.linea);
}
fclose(fp);
}
void informe(void)
{
FILE *fp;
CELULAR R;
fp=fopen("C:\\celu.dat","rb+");
fread(&R,sizeof(CELULAR),1,fp);
printf("\nInforme por pantalla:\n");
while(!feof(fp))
{
printf("\n Linea: %d\n Localidad: %s\n Recarga: %d\n Saldo: %.2f\n",R.linea,R.localidad,R.recarga,R.saldo);
fread(&R,sizeof(CELULAR),1,fp);
printf("\n\t presione una tecla para continuar...\n");
getch();
}
fclose(fp);
}
void recarga(void)
{
FILE *p;
CELULAR R;
int i,n=0;
p=fopen("C:\\celu.dat","rb+");
fseek(p,(0L)*sizeof(CELULAR),SEEK_END);
if(ftell(p)!=0)
{
n=ftell(p)/sizeof(CELULAR);
for(i=0;i<n;i++)
{
fseek(p,i*sizeof(CELULAR),SEEK_SET);
fread(&R,sizeof(CELULAR),1,p);
if (strcmpi(R.localidad,"Lanus")==0)
{
R.saldo=(float)R.recarga+(R.recarga*0.1);
}
fseek(p,(-1)*sizeof(CELULAR), SEEK_CUR);
fread(&R,sizeof(CELULAR),1,p);
}
}
fclose(p);
}
Archivos!
Moderador: Moderadores