Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct{char CodProv[4];
- char NProv[31];
- }TProvincia;
- typedef struct {char CodProv[4];
- int Nacionalidad;
- int Cantidad;
- }TCenso;
- typedef struct {char Mod;
- char CodProv[4];
- int Nacionalidad;
- int Cantidad;
- }TMCenso;
- void cargavec (TProvincia[],int);
- int busqueda (TCenso,TProvincia[],int);
- int busqueda2 (TMCenso,TProvincia[],int);
- void ordenar (TCenso[],int);
- void mostrar (TCenso[],int);
- void busquedacod (char [],TProvincia[],int);
- int main()
- {
- char VecCod[4];
- TProvincia aux,VecProv[24];
- TCenso aux1,VecOrd[24];
- TMCenso aux2;
- int Censo[24][50]={{0}},pos,mpos,j,i,l;
- FILE*CS;
- FILE*MCS;
- CS=fopen("CENSO.dat","rb");
- if(CS==NULL)
- {
- printf("No se ha podido abrir el archivo ");
- exit(1);
- }
- MCS=fopen("MODIF_CENSO","rb");
- if(MCS==NULL)
- {
- printf("No se ha podido abrir el archivos ");
- exit(1);
- }
- cargavec(VecProv,24);
- fread(&aux1,sizeof(TCenso),1,CS);
- while(!feof(CS))
- {
- pos=busqueda(aux1,VecProv,24);
- if(pos!=-1)
- {
- Censo[pos][aux1.Nacionalidad-1]+=aux1.Cantidad;
- } else printf("No se ha podido encontrar el codigo de privincia");
- fread(&aux1,sizeof(TCenso),1,CS);
- }
- fread(&aux2,sizeof(TMCenso),1,MCS);
- while(!feof(MCS))
- {
- mpos=busqueda2(aux2,VecProv,24);
- if(mpos!=-1)
- {
- if(aux2.Mod=='A')
- {
- Censo[mpos][aux2.Nacionalidad-1]+=aux2.Cantidad;
- }else Censo[mpos][aux2.Nacionalidad-1]=aux2.Cantidad;
- }else printf("No se ha podido encontrar el Codigo de Provincia");
- fread(&aux2,sizeof(TMCenso),1,MCS);
- }
- fclose(CS);
- fclose(MCS);
- CS=fopen("CENSO.dat","wb");
- if(CS==NULL)
- {
- printf("No se ha podido abrir el archivo ");
- exit(1);
- }
- for(i=0;i<24;i++)
- {
- busquedacod(VecCod,VecProv,i);
- strcpy(aux1.CodProv,VecCod);
- aux1.Nacionalidad=j+1;
- for(j=0;j<50;j++)
- {
- aux1.Cantidad+=Censo[i][j];
- }
- fwrite(&aux1,sizeof(TProvincia),1,CS);
- }
- fclose(CS);
- CS=fopen("CENSO.dat","rb");
- if(CS==NULL)
- {
- printf("No se ha podido abrir el archivo ");
- exit(1);
- }
- for(l=0;l<24;l++)
- {
- fread(&aux1,sizeof(TCenso),1,CS);
- VecOrd[l]=aux1;
- }
- ordenar(VecOrd,24);
- mostrar(VecOrd,24);
- }
- ///////////////////////////////////////////////////
- void cargavec (TProvincia Vec[],int a)
- {
- int i;
- TProvincia aux;
- FILE*pf;
- pf=fopen("PROVINCIAS.dat","rb");
- if(pf==NULL)
- {
- printf("No se ha podido abrir el archivo ");
- exit(1);
- }
- for(i=0;i<a;i++)
- {
- fread(&aux,sizeof(TProvincia),1,pf);
- Vec[i]=aux;
- }
- fclose(pf);
- }
- ////////////////////////////////////////////////////////////////////
- int busqueda (TCenso aux,TProvincia Vec[],int a)
- {
- int i=0,pos=-1;
- while(i<a&&pos==-1)
- {
- if(aux.CodProv==Vec[i].CodProv)
- {
- pos==i;
- }else i++;
- }
- return pos;
- }
- ////////////////////////////////////////////////////////////////
- int busqueda2 (TMCenso aux,TProvincia Vec[],int a)
- {
- int i=0,pos=-1;
- while(i<a&&pos==-1)
- {
- if(aux.CodProv==Vec[i].CodProv)
- {
- pos=i;
- }else i++;
- }
- return pos;
- }
- /////////////////////////////////////////////////////////////////////////
- void ordenar (TCenso Vec[],int a)
- {
- int i,j;
- TCenso aux;
- for(i=0;i<a-1;i++)
- {
- for(j=0;j<a-1-i;j++)
- {
- if(Vec[j].Cantidad>Vec[j+1].Cantidad)
- {
- aux=Vec[j];
- Vec[j]=Vec[j+1];
- Vec[j+1]=aux;
- }
- }
- }
- }
- ////////////////////////////////////////////////////////////////////
- void mostrar (TCenso Vec[],int a)
- {
- int i;
- printf("\nCodigo Provincia\tNacionalidad\tCantidad de Habitantes");
- for(i=0;i<a;i++)
- {
- printf("\n%s\t\t%%d\t\t%d",Vec[i].CodProv,Vec[i].Nacionalidad,Vec[i].Cantidad);
- }
- }
- /////////////////////////////////////////////////////////////////////////////
- void busquedacod (char VecCod[],TProvincia Vec[],int a)
- {
- strcpy(VecCod,Vec[a].CodProv);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement