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