Ejemplo n.º 1
0
Familia * Crear_familia(Persona *ref,char *name,char *Pap,char *Mom){
	Familia *pers=(Familia*)malloc (sizeof(Familia));
	strcpy(pers->nomb_Familia,name);
	pers->Madre=Buscar(Mom,ref);
	pers->Padre=Buscar(Pap,ref);
	pers->sig=NULL;
	return pers;
}
Ejemplo n.º 2
0
Persona * Crear(Persona *ref,char *name,char *Pap,char *Mom){
	Persona *pers=(Persona*)malloc (sizeof(Persona));
	strcpy(pers->nombre,name);
	pers->Madre=Buscar(Mom,ref);
	pers->Padre=Buscar(Pap,ref);
	pers->sig=NULL;
	return pers;
}
Ejemplo n.º 3
0
void Reemplazar(Persona *pers,char *name,char *Pap,char *Mom){
	Persona *a=pers;
	while(a!=NULL){
		
		if(strncmp(a->nombre,name,10)==0 && a->Padre==NULL){
			pers->Madre=Buscar(Mom,pers);
			pers->Padre=Buscar(Pap,pers);
		}
		a=a->sig;
	}
}
Ejemplo n.º 4
0
int main()
{
   Lista L;
   int i, n, e;
   
   L = NULL;
   
   printf("Ingrese valor de N ");
   scanf("%d",&n);
   
   for(i=1; i<=n; i++)
      agregarIzq(&L, i);

   mostrar(L);   
  
   printf("Ingrese valor de e ");
   scanf("%d",&e);

   if(Buscar(L,e))
     printf("Se encuentra : %d\n",e);     
   else
     printf("No se encuentra : %d\n",e);     
      
   system("pause");    
}
Ejemplo n.º 5
0
void
Tabla::AsignarValor (const char *Id, Token * UnToken, unsigned *Indices, int Dim)
{

  Variable *Aux = Buscar (Id);

  if (!Aux)
    Crear (Id, UnToken, 0 /*VengoDe */ , Indices, Dim);
  else
    Aux->AsignarValor (UnToken, Indices, Dim);

  return;
}
Ejemplo n.º 6
0
Token *
Tabla::Leer (const char *Id, unsigned *Indices, int Dim)
{

  Variable *Aux = Buscar (Id);
  if (!Aux)
    {
      Buzon.SetIdentificadorAsociado (Id);
      Buzon.Error (VARIABLE_NO_EXISTE);
      return 0;
    }
  return Aux->Leer (Indices, Dim);
}
Ejemplo n.º 7
0
/*Lee el archivo y almacena todas las familias y personas contenidas */
void open_file(Persona *personas, Familia *familias){
	//~ Se define un archivo para trabajarlo
    FILE *archivo; 
    //~ Creamos dos variables de Persona Ref tiene la estructura inicial del problema y Pers indica el elemento actual
    Persona *pers,*ref=(Persona*)malloc (sizeof(Persona));
	Familia *ref_fam=(Familia*)malloc(sizeof(Familia)),*fami;
    int empieza=0,empieza_fam=0;
    char caracteres[50],aux[50],papa[50]="",hijo[50]="",mama[50]="",apellido[50],famil_nomb[50];
    //~ creo las variables de nombre que ayudaran en el proceso
    archivo = fopen("Test.txt","r");
    //~ reviso si el arhivo fue cargado o salgo del programa
    if (archivo == NULL) exit(1);
    //~ en caso de entrar al programa empieza a leer el archivo
    while (feof(archivo) ==0) {
        fgets(caracteres,50,archivo);
        //~ Revisa si la linea corresponde al padre
        if(strncmp(caracteres,"Nombre de la familia",10)==0){
			fgets(caracteres,50,archivo);
			strcpy(famil_nomb,caracteres);
		}
        else if (strncmp(caracteres,"Padre: ",7)==0) {
			//~ Corta la cadena solo con el nombre
			Recortar(caracteres,papa,7,strlen(caracteres));
			//~ Imprime el nombre para corroborar
            printf("%s ",papa);
            //~ Busca en la lista si el nombre ya fue ingresado
            if(Buscar(papa,ref)!=NULL) {
                printf("\nFue ingresado\n");
                
            }
            else if(empieza==0){
				ref=Crear(NULL,papa,"","");
				printf("  Creando.....\n");
				//~ Le indico a pers la posicion actual de ref para empezar a trabajar con el
				pers=ref;
				empieza++;
				
			}
            else{
				pers->sig=Crear(ref,papa,"","");
				pers=pers->sig;
				printf("  Creando.....\n");
			}
            int i=0;
            while(papa[i]!=' ') i++;
            i++;
            Recortar(papa,apellido,i,strlen(papa));
        }
        else if (strncmp(caracteres,"Madre: ",7)==0) {
            Recortar(caracteres,mama,7,strlen(caracteres));
            printf("%s",mama);
            if(Buscar(mama,ref)!=NULL) {
                printf("  Fue ingresado\n");
            }
            else{
				pers->sig=Crear(ref,mama,"","");
				pers=pers->sig;
				printf("  Creando.....\n");
			}
			if(empieza_fam==0){
				ref_fam=Crear_familia(ref,famil_nomb,papa,mama);
				fami=ref_fam;
				empieza_fam++;
			}
			else{
				fami->sig=Crear_familia(ref,famil_nomb,papa,mama);
				fami=fami->sig;
			}
        }
        else if (strncmp(caracteres,"Hijos: ",7)==0) {
            Recortar(caracteres,hijo,7,strlen(caracteres));
            if(strncmp(caracteres,"Hijos: sin hijos",16)==0) { 
				int x=0;
				for(x=0;x<50;x++){
					apellido[x]='\0';
					papa[x]='\0';
					caracteres[x]='\0';
					aux[x]='\0';
					hijo[x]='\0';
					mama[x]='\0';
					famil_nomb[x]='\0';
				}
				
			} 
            else {
				int len=0,num=0,verificador=0,num_hijo=0;
				while(verificador==0){
					num=0;
					while(hijo[len]!=',' && hijo[len]!='\n'&& hijo[len]!='\r'&& hijo[len]!=' ' ){
						aux[num]=hijo[len];
						len++;
						num++;
					}
					aux[num]=' ';
					aux[num+1]='\0';
					len+=2;
					printf("%s%s",aux,apellido);
					if(aux[strlen(aux)-1]!=' '){
						strcat(aux," ");
					}
					strcat(aux,apellido);
					if(Buscar(aux,ref)!=NULL) {
						printf("  Fue ingresado\n");
						Reemplazar(ref,aux,papa,mama);
						fami->Hijos[num_hijo]=Buscar(aux,ref);
						num_hijo++;
					}			
					else{
						pers->sig=Crear(ref,aux,papa,mama);
						pers=pers->sig;
						printf(" Creando.....\n");
						fami->Hijos[num_hijo]=Buscar(aux,ref);
						num_hijo++;
						
					}
					if(hijo[len-2]=='\n'|| hijo[len-2]=='\r'|| hijo[len-2]==' ' ){
						verificador=1;
						int x=0;
						for(x=0;x<50;x++){
							apellido[x]='\0';
							papa[x]='\0';
							caracteres[x]='\0';
							aux[x]='\0';
							hijo[x]='\0';
							mama[x]='\0';
							famil_nomb[x]='\0';
						}
					}
					
				}
				
				
			}            
        }
        else{
			 printf("%s",caracteres);
		}
	
    }
	
    *personas = *ref;
    *familias = *ref_fam;
   
    fclose(archivo);
	}