예제 #1
0
파일: tlista.cpp 프로젝트: oranyero/Task-It
 void insertarOrdenado (tlista &l, telemento e){

    tposicion p;
    tposicion pant;
    tnodo *nn;
    nn=new tnodo;
    nn->elemento=e;
    
    if (esVacia(l)){
    
        nn->sig=NULL;
        l=nn;
    
        
    }else{
        
        for (p=l->sig,pant=l; ((p!=NULL)&&(!((comparar(e, pant->elemento)==1)&&(comparar(e, p->elemento)==2)))) ; p=p->sig,pant=pant->sig) {
        
        }
        
        nn->sig=p;
        pant->sig=nn;
        
    
    }
    
    
}
예제 #2
0
int buscaryEliminarDeListaDoble(t_lista* pl,t_info* d)
{
    t_nodo*act=*pl,*ant,*aux;
    if(act)
    {
        while(act->sig&&(comparar(d,&act->info))>0)
            act=act->sig;
        while(act->ant&&(comparar(d,&act->info))<0)
            act=act->ant;
        if((comparar(d,&act->info))==0)
        {
            aux=act;
            *d=aux->info;
            ant=act->ant;
            act=act->sig;
            if(ant)
                ant->sig=act;
            if(act)
                act->ant=ant;
            if((act&&!ant)||(act&&ant)) //act&&ant podria ponerlo dentro, pero para descartar mas rapido lo uso aca
                *pl=act;
            else
            {
                if((!act&&ant))
                    *pl=ant;
                else // !act &&!ant)
                    *pl=NULL;
            }
            free(aux);
            return 1;
        }
    }
    return 0;
}
예제 #3
0
/* Prueba que la funcion comparar se ejecute correctamente. */
void prueba_comparar() {

	/* Declaro los vectores a utilizar. */
	int vacio[] = {};
	int unico[] = { 5 };
	int vec1[] = { 1, 2, 3, 4, 5 };
	int vec2[] = { 1, 2, 5 };
	int vec3[] = { 5, 8, 9 };
	/* Declaro los largos de los vectores */
	int nvacio = 0;
	int nunico = 1;
	int nvec1 = 5;
	int nvec2 = 3;
	int nvec3 = 3;

	print_test("Prueba comparar vacio, unico", 
		comparar(vacio, nvacio, unico, nunico) == -1);
	print_test("Prueba comparar unico, vec3", 
		comparar(unico, nunico, vec3, nvec3) == -1);
	print_test("Prueba comparar vec1, vec1", 
		comparar(vec1, nvec1, vec1, nvec1) == 0);
	print_test("Prueba comparar vec2, vec1", 
		comparar(vec2, nvec2, vec1, nvec1) == 1);
	print_test("Prueba comparar vec3, vec2", 
		comparar(vec3, nvec3, vec2, nvec2) == 1);

}
예제 #4
0
파일: D.c 프로젝트: jpbat/aed2013
void quick_sort(rota *a, int m, int n)
{
	rota key;
	int i, j, k;

	if (m < n)
	{
		k = (m + n) / 2;
		swap(&a[m], &a[k]);
		key = a[m];
		i = m + 1;
		j = n;

		while(i <= j)
		{
			while(i <= n && comparar(a[i], key) <= 0)
				i++;
			while(j >= m && comparar(a[j], key) > 0)
				j--;
			if( i < j)
				swap(&a[i], &a[j]);
		}
		swap(&a[m], &a[j]);
		quick_sort(a,m,j-1);
		quick_sort(a,j+1,n);
	}
}
예제 #5
0
int insertarPorFechaVentaYdescripcion(Lista *p,const tInfo *d,int (*comparar)(const tInfo*,const tInfo*))
{
    while(*p && comparar(&(*p)->info,d) < 0)
        p = &(*p)->sig;
    if(*p && comparar(&(*p)->info,d) == 0)
        return CLA_DUP;
    tNodo *nue = (tNodo*) malloc(sizeof(tNodo));
    if(nue == NULL)
        return SIN_MEM;
    nue->info = *d;
    nue->sig = *p;
    *p = nue;
    return O_K;
}
예제 #6
0
void *hiloPlanificador(void *parametro)
{
	char variable[6];
	variable[5]='\0';
	reg estrucRegistro;

	printf("Nuevo hilo \n");

	recv((int)parametro, variable, 5, 0);

    while(1)
    {

		if (comparar(variable,"REGIS"))
		{
			printf("Recibiendo datos de registro \n");
			recv((int)parametro, &estrucRegistro, sizeof(reg), 0);

			//////////////////////////////////////////////////////////////////////////////
			strcpy(niveles[estrucRegistro.nroNivel].ipNivel,estrucRegistro.ip);
			strcpy(niveles[estrucRegistro.nroNivel].ipPlanificador,"127.0.0.1");
			niveles[estrucRegistro.puerto].puertoNIvel=estrucRegistro.puerto;
			niveles[estrucRegistro.nroNivel].puertoPlanificador=16000;
			//////////////////////////////////////////////////////////////////////////////

			send((int)parametro,"REGISTRADO", 11, 0);
			printf("Nivel registrado exitosamente \n");
		}
		recv((int)parametro, variable, 5, 0);
    }
    printf("%s\n", variable);
    return NULL;
}
예제 #7
0
int insertarEnOrden  (t_lista *p, const t_info *d, int (*comparar)(const t_info *, const t_info *))
{
	t_nodo *nue;
	while (*p && comparar(d, &(*p)->info)>0)
		p = &(*p)->sig;
	if(*p && comparar(d,&(*p)->info)==0)
	{
		acumular(&(*p)->info,d);
		return CLA_DUP;
	}
	nue=(t_nodo *)malloc(sizeof(t_nodo));
	if(nue==NULL)
		return SIN_MEM;
	nue->info = *d;
	nue->sig = *p;
	*p=nue;
	return TODO_BIEN;
}
예제 #8
0
ArrayPaginas inserirPagina(ArrayPaginas paginas, Pagina pagina) {
	int ordem;
	int index = getIndex(pagina);
	Pagina aux = paginas->paginas[index];
	Pagina paginaAnterior = NULL;

	if (aux == NULL ) {
		paginas->paginas[index] = pagina;
		return paginas;
	}

	ordem = comparar(pagina->titulo, aux->titulo);

	if (ordem == 0)
		return paginas;

	if (ordem == -1) {

		paginas->paginas[index] = pagina;
		pagina->proxima = aux;
		return paginas;
	}

	while (aux != NULL ) {
		ordem = comparar(pagina->titulo, aux->titulo);
		if (ordem == 0)
			return paginas;
		if (ordem == -1) {
			paginaAnterior->proxima = pagina;
			pagina->proxima = aux;
			return paginas;
		}

		paginaAnterior = aux;
		aux = aux->proxima;
	}

	paginaAnterior->proxima = pagina;
	pagina->proxima = NULL;

	return paginas;

}
int elimSumarRepeLO (t_lista *p)
    {
    t_nodo *aux;
    if(!*p)
        return 0;
    while(*p&&(*p)->sig)
        {
        if(comparar(&(*p)->dato,&(*p)->sig->dato)==0)
            while((*p)->sig&&comparar(&(*p)->dato,&(*p)->sig->dato)==0)
                {
                aux=*p;
                (*p)->sig->dato.monto+=(*p)->dato.monto;
                *p=aux->sig;
                free(aux);
                }
        else
            p=&(*p)->sig;
        }
    return 1;
    }
예제 #10
0
int insertarEnListaDobleOrd(t_lista* pl,const t_info* d)
{
    t_nodo* nue,*act=*pl,*ant;
    int cmp;
    if(act)
    {
        while(act->sig&&(cmp=comparar(d,&act->info))>0)
            act=act->sig;
        while(act->ant&&(cmp=comparar(d,&act->info))<0)
            act=act->ant;
        if((cmp=comparar(d,&act->info))==0)
        {
            //DUPLICADO
            return -1;
        }
    }
    if(act)
    {
        if(cmp>0)
        {
            ant=act;
            act=act->sig;
        }
        else
            ant=act->ant;
    }
    else
        ant=NULL;
    nue=(t_nodo*)malloc(sizeof(t_nodo));
    if(!nue)
        return 0; // sin memoria
    nue->info=*d;
    nue->ant=ant;
    nue->sig=act;
    if(ant)
        ant->sig=nue;
    if(act)
        act->ant=nue;
    *pl=nue;
    return 1; //todo bien
}
void procesarArchivos(FILE *fileEmp, FILE *fileEst)
{
    t_empleado emple;
    t_estudiante estu;
    int cmp;
    int nuevoSueldo;

    fseek(fileEmp,0,0);
    fread(&emple,sizeof(t_empleado),1,fileEmp);
    fseek(fileEst,0,0);
    fread(&estu,sizeof(t_estudiante),1,fileEst);

    while(!feof(fileEmp) && !feof(fileEst))
    {
        cmp=comparar(&emple,&estu);
        while(cmp!=0)
        {
            if(cmp>0)
                fread(&estu,sizeof(t_estudiante),1,fileEst);
            else
                fread(&emple,sizeof(t_empleado),1,fileEmp);
            cmp=comparar(&emple,&estu);
        }

        if(cmp==0)
        {

            if(estu.promedio>=7)
            {
                nuevoSueldo=emple.sueldo*1.0728;
                emple.sueldo=nuevoSueldo;
                fseek(fileEmp,-sizeof(t_empleado),1);
                fwrite(&emple,sizeof(t_empleado),1,fileEmp);
                fseek(fileEmp,0,1);
            }
            fread(&emple,sizeof(t_empleado),1,fileEmp);
            fread(&estu,sizeof(t_estudiante),1,fileEst);
        }
    }
}
예제 #12
0
int indice(string s, string sub, int pos)
{
    if(pos >= s.tam)
    {
        return -1;
    }
    if(comparar(pos,s,sub))
    {
        return pos;
    }
    
    return indice(s,sub,pos+1);
}
int insertarEnLO (t_lista *p,t_dato *d)
    {
    t_nodo *nue;
    while(*p&&comparar(&(*p)->dato,d)<0)
        p=&(*p)->sig;
    nue=(t_nodo *)malloc(sizeof(t_nodo));
    if(!nue)
        return 0;
    nue->dato=*d;
    nue->sig=*p;
    *p=nue;
    return 1;
    }
예제 #14
0
/* Prueba de la funcion seleccion. */
void prueba_seleccion() {

	/* Declaro los vectores a utilizar. */
	int vacio[] = {}, vacio_ord[] = {};
	int unico[] = {8}, unico_ord[] = {8};
	int vec1[] = {3, 5, 4, 2, 1}, vec1_ord[] = {1, 2, 3, 4, 5};
	int vec2[] = {4, 8, 15, 16, 23, 42}, vec2_ord[] = {4, 8, 15, 16, 23, 42};
	int vec3[] = {-38, -46, -65, -78}, vec3_ord[] = {-78, -65, -46, -38};

	/* Declaro los largos de los veces */
	int nvacio = 0;
	int nunico = 1;
	int nvec1 = 5;
	int nvec2 = 6;
	int nvec3 = 4;

	/* Prueba que la funcion seleccion se ejecute correctamente. */
	seleccion(vacio, nvacio);
	print_test("Prueba seleccion vacio", 
		comparar(vacio, nvacio, vacio_ord, nvacio) == 0);

	seleccion(unico, nunico);
	print_test("Prueba seleccion unico", 
		comparar(unico, nunico, unico_ord, nunico) == 0);

	seleccion(vec1, nvec1);
	print_test("Prueba seleccion vec1", 
		comparar(vec1, nvec1, vec1_ord, nvec1) == 0);

	seleccion(vec2, nvec2);
	print_test("Prueba seleccion vec2", 
		comparar(vec2, nvec2, vec2_ord, nvec2) == 0);

	seleccion(vec3, nvec3);
	print_test("Prueba seleccion vec3", 
		comparar(vec3, nvec3, vec3_ord, nvec3) == 0);

}
예제 #15
0
void jugar ()
{
	int *resp_usuario=NULL;
	int i=0, coincidencias, posicion_personaje, encontrado;
	char alias[20];
	LISTA_Q lista_preguntas;
	USUARIO usuario;
	int opcion;
	printf("\n\t1.Nuevo usuario.");
	printf("\n\t2.Iniciar sesion.");
	printf ("\n\t0. Volver al menu de mantenimiento\n\n");

	scanf("%d", &opcion);
	switch(opcion)
	{
	case 1:
		introducir_usuario();
		break;
	case 2:
		mostrar_usuario();
		printf("Introduzca su alias: ");
		gets(alias);
		break;
	case 0:
		printf ("\n");
		return;
	default:
		printf("\nHa introducido una opcion no valida.\n\n");
		system("pause");
		return;
	}

	cargarDatosPreguntas (&lista_preguntas);

	while(i<lista_preguntas.num && encontrado!=1)
	{
		resp_usuario = realloc (resp_usuario, sizeof (int)*(i+1));
		
		resp_usuario[i]= preguntar(lista_preguntas.pPreguntas[i]);

		coincidencias = comparar (resp_usuario, &posicion_personaje);
		
		adivinar (coincidencias, posicion_personaje, i, &encontrado);
		i++;

	}
	system ("pause");
	return;
}
예제 #16
0
int main (){
	int socketEscucha,socketNuevaConexion;
	char buffer[10];

	socketEscucha=sockets_create_Server(PUERTOORQUESTADOR);

	while(1)
	{
		socketNuevaConexion= esperarConexion(socketEscucha,NULL);
		recv(socketNuevaConexion,buffer,5,MSG_PEEK);
		if(comparar(buffer,"NIVEL"))
		{
			recv(socketNuevaConexion, buffer, 10, 0);
			send(socketNuevaConexion,&niveles[atoi(buffer+6)], sizeof(pndata), 0);
			close(socketNuevaConexion);
		} else if(comparar(buffer,"REGIS"))
		{
			registrarNivelYlanzarHiloDePlanificador(socketNuevaConexion);
		}

	}

	pthread_exit(0);
}
예제 #17
0
int insertarNodoIt(t_arbol* pa,t_infoA* d)
{
    int cmp;
    while(*pa)
    {
        if((cmp=comparar(d,&(*pa)->info))==0)
            return CLAVE_DUPLICADA;
        if(cmp>0)
            pa=&(*pa)->der;
        else
            pa=&(*pa)->izq;
    }
    *pa=(t_nodoA*)malloc(sizeof(t_nodoA));
    if(!*pa)
        return 0;//SIN MEMORIA
    (*pa)->izq=NULL;
    (*pa)->der=NULL;
    (*pa)->info=*d;
    return 1;
}
예제 #18
0
파일: tlista.cpp 프로젝트: oranyero/Task-It
tposicion buscarPosicion (tlista l, telemento e){
    
    bool encontrado = false;
    tposicion p;
    p = l;
    
    if (!esVacia(l)){
        
    for (p = l; ((encontrado == false) && (p->sig != NULL)); p = p->sig) {
        
        if (comparar(e, p->elemento) == true){
        
            encontrado = true;
        }
        
    }


}
 
    return p;

}
예제 #19
0
void ordernarListaBurbu (t_lista *p)
{
	int marca=1;
	t_lista *q;
	t_nodo *act;
	if (*p)
		while(marca)
		{
			marca=0;
			q=p;
			while((*p)->sig)
			{
				if(comparar(&(*p)->info, &(*q)->info)>0)
				{
					marca=1;
					act=*q;
					*q=act->sig;
					act->sig=(*q)->sig;
					(*q)->sig=act;
				}
				q=&(*q)->sig;
			}
		}
}
예제 #20
0
파일: main.c 프로젝트: fedeakd/ejercicioss
int main(int argc, char *argv[]) {
	char nom[10][50],i,resp[2],editnom[30],valor[50];
	int fecha[10][3],edad[10],pos=-1,totalfecha[10];
	for(i=0;i<10;i++){
		fecha[i][0]=-1;
		fecha[i][1]=-1;
		fecha[i][2]=-1;
		edad[i]=-1;
	}
	for(i=0;i<10;i++){
		do{
		
			printf("Ingrese el nombre n:%d\n>",(i+1));
			gets(nom[i]);
			fflush(stdin);
			if(comparar(nom[i],nom,i)==0 ){
				printf("Nombre repetido\n");
			}
		}while(comparar(nom[i],nom,i)==0 );
		do{
			printf("Ingrese  fecha de ingreso ej 12/12/1993\n>");
			scanf("%d/%d/%d",&fecha[i][0],&fecha[i][1],&fecha[i][2]);
			//printf("%d/%d/%d",fecha[0],fecha[1],fecha[2]);
			fflush(stdin);
			if(sacarFecha(fecha[i])==0){
				printf("Error,FECHA incorrecta\n");
			}}while(sacarFecha(fecha[i])==0);	
			
		
	}//Parte uno  ingreso

	printf("¿Deseas editar alguna fecha?\n>");
	scanf("%s",resp);
	fflush(stdin);
	while(strcmp(strlwr(resp), "si")==0){//Parte dos
		printf("Ingrese el nombre que deseas editar\n>");
		gets(editnom);
		fflush(stdin);
		for(i=0;i<10;i++){
			//printf("%s\n",nom[i]);
			if((strcmp(nom[i],editnom)==0)||(strcmp(nom[0],editnom))){
				pos=i;
				break;
				
				}
			
		}
		if(pos==-1){
			printf("Nombre no encontrado\n");
		}
		else{
		
			printf("La fecha es %d/%d/%d\n",fecha[pos][0],fecha[pos][1],fecha[pos][2]);
			do{
				printf("Ingrese  la nueva fecha ej 12/12/1993\n>");
				scanf("%d/%d/%d",&fecha[pos][0],&fecha[pos][1],&fecha[pos][2]);
				fflush(stdin);
				if(sacarFecha(fecha[pos])==0){
					printf("Error,FECHA incorrecta\n");
				}}while(sacarFecha(fecha[pos])==0);
			printf("Fecha cambia correctamente\n");
		}
			printf("¿Deseas editar alguna fecha?\n>");
			scanf("%s",resp);
			fflush(stdin);
			pos=-1;
		}//Parte dos editar nombre
		
		
		calcularEdad(fecha,edad);
		ordenarEdad(nom,fecha,edad);
		printf("Nombre     fecha      anio\n");
		for(i=0;i<10;i++){
			printf("%s \t ",nom[i]);
			printf("%d/%d/%d\t",fecha[i][0],fecha[i][1],fecha[i][2]);
			printf("%d\n",edad[i]);
		}//parte 3 mostrar en pantalla
	
	
	return 0;
}
예제 #21
0
main(){
	Nodo *A;
    char *pal,pal1[10];
   pal=(char*)malloc(sizeof(char));
   //pal1=(char*)malloc(sizeof(char));
	int i;
	A=Raiz();
	ifstream lexico("LexicoES.dic");
	
	 while(!lexico.eof()) {
		char*Palabra=new char[50];
		lexico>>Palabra;         
		for(i=0;i<strlen(Palabra);i++){
		   if(Palabra[i]=='/'){
				Palabra[i]='\0';
		   strncpy(Palabra,Palabra,i);
		   break;
		   }
		}
		if(Palabra[0]!='A'&&Palabra[0]!='E'&&Palabra[0]!='I'&&Palabra[0]!='O'&&Palabra[0]!='U')
		Insert(Palabra,A);
		else
			switch(Palabra[0]){
				case 'A':
					Palabra[0]='a';Insert(Palabra,A);break;
				case 'E':
					Palabra[0]='e';Insert(Palabra,A);break;
				case 'I':
					Palabra[0]='i';Insert(Palabra,A);break;
				case 'O':
					Palabra[0]='o';Insert(Palabra,A);break;
                case 'U':
					Palabra[0]='u';Insert(Palabra,A);break;
			}

	}
	lexico.close();
	while(1){
		cout<<"2 , 3, 4";
		cin>>i;
      if(i==2)
			Imprimir(pal,A);
		else{
			if(i==3){
				cout<<"Ingrese palabra:"<<endl;
				char Palabra1[10];
			   gets(Palabra1);
				if(Palabra1[0]!='A'&&Palabra1[0]!='E'&&Palabra1[0]!='I'&&Palabra1[0]!='O'&&Palabra1[0]!='U')
					cout<<comparar(A,Palabra1)<<endl;
				else
					switch(Palabra1[0]){
						case 'A':
							Palabra1[0]='a';cout<<comparar(A,Palabra1)<<endl;break;
						case 'E':
							Palabra1[0]='e';cout<<comparar(A,Palabra1)<<endl;break;
                  case 'I':
                  	Palabra1[0]='i';cout<<comparar(A,Palabra1)<<endl;break;
						case 'O':
							Palabra1[0]='o';cout<<comparar(A,Palabra1)<<endl;break;
						case 'U':
							Palabra1[0]='u';cout<<comparar(A,Palabra1)<<endl;break;
					}
      	}
         else
         	if(i==4)
         	cout<<"escribe algo ";
         	cin>>pal1;
            sugerencia(pal1,A,0,0);
		}
	}
}