| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
MasterKiller
Registrado: 26 Sep 2007 Mensajes: 18
| Publicado: 03/11/2007 8:29 am | | | Título: Metodo Burbuja |
| Bueno amigos.... tengo que hacer un programa que ingrese una cierta cantidad de numeros en un vectores y que luego los ordene por metodo burbuja....
aca esta mejor explicado lo que tengo que hacer...
| Cita: | Realice el análisis de los requerimientos de la Ingeniería de Software, Análisis, Diseño, Programación y Prueba, para implementar en el lenguaje C, El Ordenamiento de N-Números por el método de la Burbuja • Realice una función para cada uno de los puntos, que permita: .- Ingresar un vector de tamaño N .- Mostrar un vector de tamaño N. .- Ordenar por método de la burbuja el vector, esta función llama a mostrar el vector, de tal manera que muestre como lo va ordenando en cada iteración. |
eso tengo que hacer... el problema... es que tengo la formula del ordenamiento burbuja... que es...
| Código: | { for (i=1; i<TAM; i++) for j=0 ; j<TAM - 1; j++){ if (lista[j] > lista[j+1]) temp = lista[j]; lista[j] = lista[j+1]; lista[j+1] = temp;
|
pero no se como hacerlo con el vector... ayuda porfavor... como puedo ingresar los datos... ayuda...
gracias...
PD: todo esto es en dev c++
ty |
| | Volver arriba | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 4672 Ubicación: Mexico
| Publicado: 03/11/2007 9:13 am | | | Título: |
| Lo primero que debes hacer para recibir ayuda es indicar el lenguaje de programacion que estas utilizando, a que te refieres con vector: a un array o a la clase vector (en el caso de C++) y mostrar cuanto llevas de tu programa.
Y si quieres orientacion en base a los programas de los demas solo tienes que utilizar el motor de busqueda de estos foros ya que en la base de datos hay varios ejemplos utilizando ese metodo de ordenacion.
Tampoco esta demas revisar la descripcion de ese metodo en Wikipedia.
Un saludo _________________ The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice. -- Rebec of Ginaz |
| | Volver arriba | |  | MasterKiller
Registrado: 26 Sep 2007 Mensajes: 18
| Publicado: 04/11/2007 6:36 pm | | | Título: |
| Ya espesifique que el lenguaje que estoy usando es el dev C++.
Lo que esta arriba es todo lo que tengo del programa...
y ya busque con el buscador... y no aparece nada que me pueda ayudar... y en el wikipedia menos...
porfavor... ustedes son los unicos que me pueden ayudar....
se lo agradeceria.... |
| | Volver arriba | |  | | digies
Registrado: 18 Nov 2005 Mensajes: 733 Ubicación: Blumenau (Br)
| Publicado: 05/11/2007 7:07 am | | | Título: |
| | MasterKiller escribió: | | Ya espesifique que el lenguaje que estoy usando es el dev C++. | Por cierto el Dev-C++ no es un lenguaje de programación, más bien es un entorno de desarrollo para C/C++.
Espero que este código en C te sirva.
| Código: | #include <stdio.h> #include <stdlib.h>
int tam_array(void); void mostrar_array(int u); void burbuja(int a[], int w);
int main(void) { mostrar_array(tam_array()); puts("\n\n"); system("PAUSE"); return EXIT_SUCCESS; }
int tam_array() { int t; printf("TAMAÑO DEL ARRAY: "); scanf("%d", &t); return t; }
void mostrar_array(int u) { int i, array[u], n; puts("\nINGRESE LOS ELEMENTOS DEL ARRAY: "); for(i=0; i<u; i++) { printf(" [%d]: ", i); scanf("%d", &n); array[i]=n; } printf("\nARRAY: "); for(i=0; i<u; i++) { printf("%d ", array[i]); } puts("\n"); burbuja(array, u); return; }
void burbuja(int a[], int w) { int i, t, j, k, aux; printf("ORDENACION POR BURBUJA: "); t=w; i=w-1; while(i>0) { k=0; for(j=0; j<i; j++) if(a[j+1] < a[j]) { aux=a[j]; a[j]=a[j+1]; a[j+1]=aux; k=j; } i=k; } for(i=0; i<t; i++) printf("%d ", a[i]); return; }
|
Un saludo |
| | Volver arriba | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 4672 Ubicación: Mexico
| Publicado: 05/11/2007 7:29 am | | | Título: |
| Como ya bien comento digies Dev-C++ es un entorno de desarrollo integrado o IDE y el problema con este es que permite el desarrollo de aplicaciones tanto con C como con C++.
En el caso de C aqui van dos ejemplos del uso del metodo de ordenacion BubbleSort o Burbuja para ordenar dos arrays, el primero es especifico y solo puede ordenar un tipo especifico de datos mientras que el segundo es generico (permite ordenar cualquier tipo de dato) similar a la funcion qsort de la biblioteca estandar de C.
BubbleSort (especifico):
| Código: | #include <stdio.h> #include <stdlib.h> #include <time.h>
#define NUM_REGISTROS 16
typedef struct st_registro { int prin; /* campo principal */ int sec; /* campo secundario */ } Registro;
int main(void) { Registro reg[NUM_REGISTROS]; Registro aux; int i, j, intercambio; srand((unsigned) time(NULL)); puts("Registros ordenados en base al campo secundario:"); for (i = 0; i < NUM_REGISTROS; i++){ reg[i].prin = rand() % (NUM_REGISTROS / 2); reg[i].sec = i + 1; printf("%02d.%02d\n", reg[i].prin, reg[i].sec); } /* Ordenacion mediante el metodo burbuja (BubbleSort) */ for (i = NUM_REGISTROS - 1; i > 0; i--){ intercambio = 0; for (j = 0; j < i; j++) if (reg[j].prin > reg[j + 1].prin){ aux = reg[j]; reg[j] = reg[j + 1]; reg[j + 1] = aux; intercambio = 1; } if (!intercambio) break; } puts("----\nRegistros ordenados en base al campo principal:"); for (i = 0; i < NUM_REGISTROS; i++) printf("%02d.%02d\n", reg[i].prin, reg[i].sec); return EXIT_SUCCESS; } |
Bubblesort (general):
| Código: | #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h>
#define NUM_REGISTROS 16
typedef struct st_registro { int prin; /* campo principal */ int sec; /* campo secundario */ } Registro;
typedef int (*pfn_cmp)(void const *pa, void const *pb);
int cmp(void const *pa, void const *pb); void bsort(void *elem, size_t num, size_t tam, pfn_cmp cmp);
int main(void) { Registro reg[NUM_REGISTROS]; int i; srand((unsigned) time(NULL)); puts("Registros ordenados en base al campo secundario:"); for (i = 0; i < NUM_REGISTROS; i++){ reg[i].prin = rand() % (NUM_REGISTROS / 2); reg[i].sec = i + 1; printf("%02d.%02d\n", reg[i].prin, reg[i].sec); } bsort(reg, NUM_REGISTROS, sizeof reg[0], cmp); puts("----\nRegistros ordenados en base al campo principal:"); for (i = 0; i < NUM_REGISTROS; i++) printf("%02d.%02d\n", reg[i].prin, reg[i].sec); return EXIT_SUCCESS; }
/* ** Funcion de soporte que compara los campos principales de dos registros ** y cuyo valor de retorno es positivo, cero o negativo, si el campo principal ** del primer registro (a) es mayor, igual o menor que el campo principal del ** segundo registro (b), respectivamente. */ int cmp(void const *pa, void const *pb) { Registro const *p = pa; Registro const *q = pb; return (p->prin > q->prin) - (p->prin < q->prin); }
/* ** Funcion que utiliza el algoritmo de ordenacion "Burbuja" (BubbleSort) ** para ordenar una lista de elementos sin importar su tipo, de forma similar ** a la funcion qsort de la biblioteca estandar de C. */ void bsort(void *elem, size_t num, size_t tam, pfn_cmp cmp) { char *base = elem; void *aux; size_t i; size_t j; size_t num_bytes; int intercambio; if (base == NULL || num < 2 || tam == 0) return; if ((aux = malloc(tam)) == NULL) return; /* Numero total de bytes utilizados por el array a ordenar */ num_bytes = num * tam; /* Ordenar los ultimos num-1 elementos */ for (i = num_bytes - tam; i > 0; i -= tam){ intercambio = 0; for (j = 0; j < i; j += tam) if (cmp(base + j, base + j + tam) > 0){ memmove(aux, base + j, tam); memmove(base + j, base + j + tam, tam); memmove(base + j + tam, aux, tam); intercambio = 1; } if (!intercambio) break; } free(aux); } |
Un saludo _________________ The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice. -- Rebec of Ginaz |
| | Volver arriba | |  | MasterKiller
Registrado: 26 Sep 2007 Mensajes: 18
| Publicado: 05/11/2007 6:09 pm | | | Título: |
| Gracias amigos por la ayuda...
me sirvio arto!....
ty |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |