Archivos!

Cuestiones y dudas acerca de lenguajes de programación diversos.

Moderador: Moderadores

Avatar de Usuario
matiasz8
Novat@
Mensajes: 1
Registrado: Vie Jul 16, 2010 6:44 pm

Archivos!

Mensaje por matiasz8 » Vie Jul 16, 2010 7:41 pm

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);
}