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