Algorismes fitxers
De franhpWiki
- Escriure un algorisme que ens digui quina és la longitud en bytes (o caràcters), d’un fitxer en format text desat en el disc (anomenat dades.txt).
var
enter contador<-0;
FITXER *pf;
caràcter c;
fvar
si ((pf=obrir("dades.bin", "rt"))==NULL) aleshores escriure ("error d'obertura de fitxer");
sino
mentre(EOF(pf)=0) fer
llegir(pf,c);
contador++;
fmentre
tancar(pf);
escriure(contador)
fsi
- Crear un algorisme que obri dos fitxers de tipus text, i en creï un tercer amb els continguts dels dos fitxers inicials.
var
FITXER *po1,*po2, *pd;
caràcter c;
fvar
po1=obrir("fitxer1.txt", "rt");
po2=obrir("fitxer2.txt", "rt");
pd=obrir("fitxer1.txt","wt");
si ((po1=NUL)||(po2=NUL)||(pd=NUL)) escriure(error!)
sino
mentre(!EOF(po1)) fer
llegir(po1,c);
escriure(pd,c);
fmentre
tancar(po1);
mentre(!EOF(po2)) fer
llegir(po2,c);
escriure(pd,c);
fmentre
tancar(po2);
tancar(pd);
fsi
falgorisme
- Crear un algorisme que obri un fitxer binari on hi ha desades parelles de valors que corresponen al voltatge i intensitat, en calculi les resistències corresponents, i ho desi en un altre fitxer binari.
Algorisme
var
FITXER *pf,*pd;
estructura valors{
real v,i;
}p;
real resistencia;
fvar
si((pf=fopen("parelles.bin","rb"))=NUL) escriure (caca)
sino
pd=fopen("resistencies.bin","wb");
mentre(!EOF(pf))
llegir(p,pf)
resistencia=p.v/p.i;
escriure(resistencia,pd);
fmentre
tancar(pf);
tancar(pd);
falgorisme
- Fer un algorisme que gestioni un fitxer que conté punts de coordenades (que hauran d’estar desats en una estructura de dos membres). L’algorisme haurà de permetre desar, recuperar, modificar i afegir dades al fitxer.
algorisme
const N <- 20 fconst
var
estructura coordenades{
real x,y;
}punts[N],afegit;
FITXER *pf;
fvar
//desar
per(i<-0;i<N;i++)
llegir(punts[i].x,punts[i].y);
fper
si ((pf=fopen("coordenades.bin", "wb"))==NULL) escriure(caca)
sino
fwrite(&punts,sizeof(estructura coordenades)*N,1,pf);
tancar(pf);
fsi
//recuperar
si ((pf=fopen("coordenades.bin", "rb"))==NULL) escriure(caca)
sino
fread(&punts,sizeof(estructura coordenades)*N,1,pf);
tancar(pf);
fsi
//modificar
si ((pf=fopen("coordenades.bin", "r+b"))==NULL) escriure(caca)
sino
fread(&punts,sizeof(estructura coordenades)*N,1,pf);
llegir(i);
llegir(punts[i].x,punts[i].y);
fwrite(&punts,sizeof(estructura coordenades)*N,1,pf);
tancar(pf);
fsi
//afegir
si ((pf=fopen("coordenades.bin", "ab"))==NULL) escriure(caca)
sino
llegir(afegit.x,afegit.y);
fwrite(&afegit,sizeof(estructura coordenades),1,pf);
tancar(pf);
fsi
- Escriure un algorisme que compari 2 arxius de text, ens haurà de dir quines són aquestes diferències i en quina posició estan.
algorisme compara
FITXER *p1, *p2;
caràcter c1,c2;
p1=fopen("arxiu.txt", "rt");
p2=fopen("arxiu2.txt", "rt");
si(p1=NUL o p2=Nul) escriure (caca);
sino
mentre(!EOF(p1) i !EOF(p2))
si(llegir(c1,p1)!=llegir(c2,p2))
escriure("canvi a %d, %s per %s " , posicio(pf), c1, c2);
fsi
fmentre
tancar(p1,p2);
fsi
fsi
falgorisme
