Exemple #1
0
void permutar (int A[], int size, int cp){//cp: combinaciones posibles
    int comb = 1;
    int i = 0;
    int j = 1;
    int c;

    printf("-----Permutaciones-----\n");

    while(comb <= cp/2){

        imprimir(A, size);
        
        int aux[size];
        for(c = 0; c < size; c++){
            aux[c] = A[c];
        }
        invertir(aux, size);
        intercambiar(&A[i], &A[j]);
        
        i++; j++;
        if(j%size == 0){
            j = 0;
        }
        else if(i%size == 0){
            i = 0;
        }
        comb++;
    }
}
Exemple #2
0
int main(int argc, char** argv) {
    {
        double  a = 1.0;
        double b = 2.0;


        printf("linea: %d - antes a(%f) b(%f)\n", __LINE__, a, b);

        swap( &a, &b, sizeof(double));

        printf("linea: %d - despues a(%f) b(%f)\n", __LINE__, a, b);
    }
    
#if 0
    {
        double a = 1.0;
        double b = 2.0;


        printf("linea: %d - antes a(%f) b(%f)\n", __LINE__, a, b);

        intercambiar( &a, &b);

        printf("linea: %d - despues a(%f) b(%f)\n", __LINE__, a, b);
    }
#endif

} 
Exemple #3
0
/*
void intercambiar(int *a, int *b) {
	int aux = *a;
	*a = *b;
	*b = aux;
}
*/
int main(void) {
	int a = 6,
		b = 10;
	intercambiar(&a, &b);
	printf("\na es igual a %d", a);
	printf(" \nb es igual a %d", b);
	return 0;
}
Exemple #4
0
//invierte el numero contenido en A[]
void invertir(int A[], int size){
    int i = 0;
    int j = size-1;

    while(j>=i){
        intercambiar(&A[i], &A[j]);
        i++;
        j--; 
    }
    imprimir(A, size);
}
Exemple #5
0
void barajar(carta baraja[CARTAS])
{
  int veces,i,c1,c2;

  srand(getpid()); //Establecemos la semilla del Random. Dicha semilla es el valor del PID de nuestro programa
  veces=rand() % 100; //Nos devuelve un numero aleatorio entre 0 y 99
  for (i=0; i<veces; i++) {
      c1=rand() % CARTAS; //Nos devuelve un numero aleatorio entre 0 y CARTAS-1
      c2=rand() % CARTAS; //Nos devuelve un numero aleatorio entre 0 y CARTAS-1
      intercambiar( &(baraja[c1]), &(baraja[c2]) );
  }
}
Exemple #6
0
int main(int argc, char** argv) {
    double a = 1.0;
    double b = 2.0;


    printf("linea: %d - antes a(%f) b(%f)\n", __LINE__, a, b);

    intercambiar( &a, &b);

    printf("linea: %d - despues a(%f) b(%f)\n", __LINE__, a, b);

} 
Exemple #7
0
int main() {

	int a = 1;
	int b = 2;

	printf("Las variables a intercambiar son: a=%d y b=%d.\n",a,b);	
	intercambiar2(a,b);
	printf("Pasando int's como parámetros quedan: a=%d y b=%d.\n", a, b);	
	
	a=1;
	b=2;
	
	printf("Las variables a intercambiar son: a=%d y b=%d.\n",a,b);
	intercambiar(&a,&b);
	printf("Pasando punteros como parámetros las variables quedan: a=%d y b=%d.\n",a,b);

}
int ordenar_burbujeo(struct nodo ** lista) {

  int i, j, l;
  struct nodo * jnodo, *aux;

  l=len(lista);
  for(i=0 ; i<l-1 ; i++) {
    for(j=0,jnodo=*lista ; j<l-i-1 ; j++,jnodo=(*jnodo).sig) {
      if((*jnodo).val>(*(*jnodo).sig).val) {
        //ojo voy a quedar apuntando al intercambiado, tengo que conservar la "posicion" a la que apuntanta el puntero y no el nodo al que apunta el puntero
        aux=(*jnodo).sig;
        intercambiar(lista, j, j+1);
        jnodo=aux;
      }
    }
  }

  return 0;
}
Exemple #9
0
int main(){
	
	int a = 10;
	int b = 20;

	printf("POR REFERENCIA:\n");
	printf("---------------\n");
	printf("Antes de intercambiar: a = %d y b = %d.\n",a,b);
	intercambiar(&a,&b);
	printf("Después de intercambiar: a = %d y b = %d.\n",a,b);
	printf("\n");

	a = 10;
	b = 20;

	printf("POR VALOR:\n");
	printf("----------\n");
	printf("Antes de intercambiar: a = %d y b = %d.\n",a,b);
	intercambiar2(a,b);
	printf("Después de intercambiar: a = %d y b = %d.\n",a,b);
	printf("\n");
}
void ordenar(int *v){
  
    int i,j,posmin;
    
              //N-1 o N-2
    for(i=0;i<N-1;i++){
        
        posmin=i;
        
        for(j=i;j<N-1;j++){
            
            if(v[j]<v[posmin]){
                
                posmin=j;
                intercambiar(v,i,j,posmin);
                
            }   
            
        }
        printf("%d",v[i]);
    }
   
    
}
Exemple #11
0
int main() {

  struct nodo * pila;
  struct nodo * cola;
  struct nodo * lista;
  struct nodo nodo1;
  struct nodo nodo2;
  struct nodo nodo3;
  struct nodo nodo4;

  struct nodo * aux;

  nodo1.val=1;
  nodo2.val=2;
  nodo3.val=3;
  nodo4.val=4;

  //pila
  printf("-- pila --\n");
  init(&pila);
  push(&pila, &nodo1);
  push(&pila, &nodo2);
  push(&pila, &nodo3);

  while(aux=pop(&pila))
    printf("%i\n",(*aux).val);

  //cola
  printf("-- cola --\n");
  init(&cola);
  push(&cola, &nodo1);
  push(&cola, &nodo2);
  push(&cola, &nodo3);

  while(aux=unqueue(&cola))
    printf("%i\n",(*aux).val);

  //lista
  printf("-- lista --\n");
  init(&lista);
  agregar(&lista,&nodo1,0);
  agregar(&lista,&nodo3,1);
  agregar(&lista,&nodo2,1);

  aux=quitar(&lista,1);
  printf("%i\n",(*aux).val);
  while(aux=quitar(&lista,0))
    printf("%i\n",(*aux).val);

  //lista misc
  printf("-- lista misc --\n");
  init(&lista);
  agregar(&lista,&nodo1,0);
  agregar(&lista,&nodo3,1);
  agregar(&lista,&nodo2,1);
  agregar(&lista,&nodo4,3);
  intercambiar(&lista, 1, 3);
  printf("la lista tiene %i items\n",len(&lista));
  while(aux=pop(&lista))
    printf("%i\n",(*aux).val);
  printf("la lista tiene %i items\n",len(&lista));

  //lista misc
  printf("-- lista ordenar --\n");
  init(&lista);
  push(&lista, &nodo3);
  push(&lista, &nodo1);
  push(&lista, &nodo4);
  push(&lista, &nodo2);
  printf("burbuja\n");
  ordenar_burbujeo(&lista);
  mostrar(&lista);

  return 0;
}
Exemple #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;
}