void eliminar(unsigned indice) { nodo *p,*ant; p=nodo_inicial; if(longitud()!=0) { indice==longitud()>indice?indice:longitud()-1;//si indice>=longitud eliminamos el ultimo for(unsigned i=0;i<indice;i++) { ant=p; p=p->sig; } if(indice==0) { nodo_inicial=nodo_inicial->sig; } else ant->sig=p->sig; delete p; l--; } }
int main() { int i = 4; int j = 5; double a = 2.3; double b = 8.0; swap(&i, &j, sizeof(int)); swap(&a, &b, sizeof(double)); assert(i, 5); assert(j, 4); assert(a, 8.0); assert(b, 2.3); char str[] = "Longitud de str"; char buffer[1024]; assert( strlen(str), 15); assert( longitud(str), 15); copiar(buffer, str); assertStr( buffer, "Longitud de str"); // int numero = 0; // printf("%d\n", numero = 10 ); // printf("%d\n", numero ); return 0; }
int main(int argc, char** argv) { char cad[80]="hola pepe"; int l; char *paux; l=longitud(cad); fflush(stdin); leerPalabra(cad); fflush(stdin); leerCadena(cad); strcpy(cad,"hola pepe"); paux=hallarSubcadena("hola pepe","epe"); paux=hallarSubcadena("hola pepe","epo"); paux=hallarSubcadena("hola pepe","pep"); paux=hallarSubcadena("hola pepe",""); paux=suprimirSubcadena(cad,"pep"); paux=suprimirSubcadena(cad,"ola"); paux=suprimirSubcadena(cad,"epe"); paux=insertarCadena(cad,", ¿cómo estás?",strlen(cad)); paux=suprimirSubcadena(cad,", ¿cómo estás?"); paux=insertarCadena(cad," vecino",4); paux=suprimirSubcadena(cad," vecino"); paux=suprimirSubcadena(cad,"hola"); paux=insertarCadena(cad,"hello ",0); paux=concatenar(cad,", ¿Cómo estás?"); paux=buscaChar(cad,'C'); paux=concatenar(cad,", ¿Cómo estás?"); paux=concatenar(cad,". Espero que bien."); paux=concatenar(cad,", ¿Cómo estás?"); paux=sustituir(cad,", ¿Cómo estás?",""); paux=sustituirChar(cad,'e','U'); }
//Insertar: inserta una cadena en otra char *insertarCadena(char *ppal, char *sec, int pos) { int lppal=longitud(ppal), lsec=longitud(sec); char *p_ppal; if (0<=pos && pos<=lppal) { // si la posición es legal for(p_ppal=ppal+lppal; p_ppal>=ppal+pos; p_ppal--) { //hacemos hueco *(p_ppal+lsec)=*p_ppal; } p_ppal=ppal+pos; while(*sec) { *p_ppal++=*sec++; } // copiamos la cadena secundaria en la posición return (ppal+pos); //devolvemos la posición donde se ha insertado } return NULL; }
int main(int argc, char *argv[]) { int j = 0; char palabra[20]; printf("Ingresa una palabra: "); gets(palabra); printf("Longitud de la cadena: %d",longitud(palabra,j)); return 0; }
main(){ // Apuntador al primer elemento de la lista Nodo* lista = NULL; // Pruebas para función insertar_cola lista = insertar_cola(lista, 7); lista = insertar_cola(lista, 4); lista = insertar_cola(lista, 12); // Pruebas para función insertar_tope lista = insertar_tope(lista, 2); lista = insertar_tope(lista, 5); lista = insertar_tope(lista, 3); // Pruebas para función insrtar_tope_m. // Nótese que se tiene una llamada más limpia e intuitiva que la de // insetar_tope. insertar_tope_m( &lista, 6); insertar_tope_m( &lista, 10); insertar_tope_m( &lista, 22); // Se mustra la lista creada. mostrar_lista(lista); printf("La longitud de la lista es: %d\n\n" , longitud(lista)); borrar_nodo(&lista, 2); borrar_nodo(&lista, 0); mostrar_lista(lista); printf("La longitud de la lista es: %d\n\n" , longitud(lista)); // Liberación de la lista. liberar_lista(&lista); // Si le la lista fue liberada no debe mostrarse elemento alguno. mostrar_lista(lista); }
char * reservarMemoriaParaCadena(char * cadena) { int lon = longitud(cadena); char * nuevaCadena = (char *)malloc(lon * sizeof(char)); char * aux = nuevaCadena; char * fin = (cadena + lon); for (;cadena < fin; ++cadena) { *aux = *cadena; ++aux; } return nuevaCadena; }
//Suprimir-subcad: Suprime una subcadena dentro una cadena char * suprimirSubcadena(char *ppal, char *sec) { char *res,*pos; int l=longitud(sec); res=pos=hallarSubcadena(ppal,sec); if (pos==NULL) { return NULL; } while(*(pos+l)!='\0') { *pos=*(pos+l); pos++; } *pos='\0'; return res; }
int main() { char cad1[50],cad2[50],mat1[10][10],mat2[10][10], mat3[10][10]; int long_cad2,tam,x1,m,n; double x; cout<<"Ingrese la Segunda Cadena "; cin.getline(cad2,50); cout<<"\n La cadena fue almacenada es . . . \n"; long_cad2=longitud(cad2); Escribir_1(cad2,long_cad2); cout<<"\n\n"; tam=15; Carga_1(cad1,tam); cout<<"\n La cadena almacenada es . . . \n"; Escribir_1(cad1,tam); cout<<"\n"; cout<<"\n La PRIMERA CADENA es copiada en una Matriz de 5*3 por columnas \n"; Carga_M1(mat1,cad1); cout<<"\n MATRIZ 1 \n"; Escribir_2(mat1,5,3); x=sqrt(long_cad2); x1=int(x); m=n=x1; if((x1*x1) == long_cad2){ cout<<"\n Copiando la SEGUNDA CADENA EN LA MATRIZ 2 \n"<<m<<" x "<<n; Carga_M2(mat2,cad2,m,n); Escribir_2(mat2,m,n); cout<<"\n"; Carga_M3(mat3,mat2,m,n); cout<<"\n"; Escribir_2(mat3,m,n); cout<<"\n"; Diagonal_Izq(mat3,x1); cout<<"\n"; Diagonal_Der(mat3,x1); if(x1>3) Intercambio(mat3,1,3,x1); } cout<<"\n"; system("PAUSE"); return 0; }
int longitud(char palabra[20],int j) { if(palabra[j] == '\0') return j; else return longitud(palabra,++j); }
//Concatenar: añade una cadena a otra. char *concatenar(char *ppal, char *sec) { return insertarCadena(ppal,sec,longitud(ppal)); }
int main() { lista lst = crear_lista(); nat cont_comandos = 0; bool salir = false; while (!salir) { mostrar_prompt(cont_comandos); enum_cmd_t enum_com = identificador_comando(); // procesar el comando switch (enum_com) { case cmd_fin: salir = true; imprimir_con_nl(msg_fin); break; case cmd_comentario: escribir_nueva_linea(); break; case cmd_ins_lista: { info_t info = leer_info(MAX_LARGO_PALABRA); while (es_valida_info(info)) { insertar_despues(info, final_lista(lst), lst); info = leer_info(MAX_LARGO_PALABRA); } liberar_info(info); texto_t txt = cadena_a_texto("primero"); info = crear_info(0, txt); insertar_antes(info, inicio_lista(lst), lst); imprimir_lista(lst); break; } case cmd_recorrido_lista: { if (!es_vacia_lista(lst)) { localizador loc = inicio_lista(lst); while (es_localizador_lista(loc)) { texto_t txt = info_a_texto(info_lista(loc, lst)); escribir_texto(txt); liberar_texto(txt); loc = siguiente(loc, lst); } loc = final_lista(lst); while (es_localizador_lista(loc)) { texto_t txt = info_a_texto(info_lista(loc, lst)); escribir_texto(txt); liberar_texto(txt); loc = anterior(loc, lst); } escribir_nueva_linea(); } break; } case cmd_segmentos_lista: { int clave1 = leer_int(); int clave2 = leer_int(); localizador desde = siguiente_clave(clave1, inicio_lista(lst), lst); localizador hasta = anterior_clave(clave2, final_lista(lst), lst); if (es_localizador_lista(desde) && es_localizador_lista(hasta) && precede_en_lista(desde, hasta, lst)) { lista sgm = separar_segmento(desde, hasta, lst); lista copia = segmento_lista(inicio_lista(sgm), final_lista(sgm), sgm); imprimir_lista(sgm); liberar_lista(sgm); insertar_segmento_despues(copia, final_lista(lst), lst); liberar_lista(copia); imprimir_lista(lst); } break; } case cmd_modificar_lista: { int clave1 = leer_int(); int clave2 = leer_int(); localizador loc1 = siguiente_clave(clave1, inicio_lista(lst), lst); localizador loc2 = anterior_clave(clave2, final_lista(lst), lst); if (es_localizador_lista(loc1) && es_localizador_lista(loc2)) { intercambiar(loc1, loc2, lst); imprimir_lista(lst); retroceder(loc2, lst); imprimir_lista(lst); } break; } case cmd_ordenar_lista: { nat len_lst = longitud(lst); imprimir_int(len_lst); localizador loc = inicio_lista(lst); for (nat i = 0; i < len_lst / 2 - 1; i++) loc = siguiente(loc, lst); lista primera = segmento_lista(inicio_lista(lst), loc, lst); lista segunda = segmento_lista(siguiente(loc, lst), final_lista(lst), lst); lista concat = concatenar(primera, segunda); imprimir_lista(concat); liberar_lista(concat); if (son_numeros_iguales(primera, segunda)) { imprimir_lista(primera); } if (!esta_ordenada(primera)) ordenar(primera); if (!esta_ordenada(segunda)) ordenar(segunda); lista mzc = mezcla(primera, segunda); imprimir_lista(mzc); unificar(mzc); imprimir_lista(mzc); liberar_lista(mzc); liberar_lista(primera); liberar_lista(segunda); break; } case cmd_filtrado_lista: { int clave = leer_int(); texto_t palabra = leer_palabra(MAX_LARGO_PALABRA); comp_t criterio = texto_a_comp(palabra); liberar_texto(palabra); if (pertenece(clave, lst)) { imprimir_int(cantidad(clave, lst)); } lista flt = filtrado(clave, criterio, lst); imprimir_lista(flt); liberar_lista(flt); break; } case cmd_reversa_lista: { int dato1 = leer_int(); int dato2 = leer_int(); if (esta_ordenada(lst) && pertenece(dato1, lst) && pertenece(dato2, lst) && dato1 < dato2) { lista sub = sublista(dato1, dato2, lst); imprimir_lista(sub); lista rev = reversa(sub); imprimir_lista(rev); cambiar_todos(dato1, dato2, rev); imprimir_lista(rev); liberar_lista(sub); liberar_lista(rev); } break; } case cmd_liberar_lista: { liberar_lista(lst); lst = crear_lista(); break; } default: imprimir_con_nl(msg_cmd_no_reconocido); break; } // switch texto_t resto_linea = leer_resto_linea(MAX_RESTO_LINEA); liberar_texto(resto_linea); } // while liberar_lista(lst); return 0; }