Beispiel #1
0
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--;
		  }
			
		}
Beispiel #2
0
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;
}
Beispiel #3
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');
}
Beispiel #4
0
//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;
}
Beispiel #5
0
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;
}
Beispiel #6
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);

}
Beispiel #7
0
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;
}
Beispiel #8
0
//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;
}
Beispiel #9
0
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;
}
Beispiel #10
0
int longitud(char palabra[20],int j) {
    if(palabra[j] == '\0')
        return j;
    else
        return longitud(palabra,++j);
}
Beispiel #11
0
//Concatenar: añade una cadena a otra.
char *concatenar(char *ppal, char *sec) {
   return insertarCadena(ppal,sec,longitud(ppal));
}
Beispiel #12
0
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;
}