metodos de ordenamiento
Publicado por CAMILO ANDRES JIMENEZ AVILA (1 intervención) el 08/10/2008 23:45:45
gracias a quien me pueda ayudar....
les cuento la historia del programa.
este programa el error que tiene es el siguiente:
el programa hace los pasos necesarios: se entra al menu toma el mando al cual se quiere ejecutar, pero cuando se pide la pocion de muestra es decir burbuja, cubetas u quick short se sale del programa.
#include <stdio.h>// Librerias
//#include <iostream.h>// Librerias
#include <stdlib.h>// Librerias
#include <conio.h>// Librerias
#include <dos.h>// Librerias
#include <math.h>// Librerias
#include <time.h>// Librerias
//#include <windows.h>// Librerias
#define MAX 100 //Definicion arreglo de 100 elementos
#define p printf
//Prototipos.
void burbuja(int a[],int n);// Funcion del Metodo Burbuja
void quicksort(int a[],int n);// Funcion del Metodo QuickSort
void qs(int l[],int n, int m);
void radixsort(int a[],int n);// Funcion del Metodo Cubetas
int numelem();// Funcion Numero Elementos
void tipocap(int a[],int n);// Funcion Tipo de Captura de Datos
void captura(int a[],int n);// Funcion Capturar Elementos
void caleat(int a[],int n);// Funcion Cargar Aleatoriamento
void ver(int a[],int n);// Funcion ver Elementos
char menu();// Funcion del Menu
int mcap();// Funcion del Modo de Captura
void main()// Menu Principal
{
int a[MAX],n; //Variables y arreglo
int salir=0;
do
{
switch(menu())// Describe los puntos del Menu
{
case 'a':
case 'A':
n= numelem();
p(" ");
captura(a,n);
p(" ");
mcap();
p(" ");
tipocap(a,n);
break;
case 'b':
case 'B':
n= numelem();
p(" ");
caleat(a,n);
p(" ");
mcap();
p(" ");
tipocap(a,n);
break;
default:
p(" ");
p("OPCION NO VALIDA.");
p(" ");
getch();
break;
}
}while(salir=1);
getch();
}
//Funciones de Prototipos.
void tipocap(int a[],int n)
{
int salir=0;
do
{
switch(menu())// Describe los puntos del Menu
{
case 1:
p("SU ARREGLO ES: ");
p(" ");
ver(a,n);// Va a la funcion ver arreglo() que digito el usuario
p(" PRESIONE CUALQUIER TECLA, ");
p("PARA COMENZAR EL ORDENAMIENTO...");
getch();
burbuja(a,n);// Va a la funcion burbuja()
p(" ");
p("ARREGLO ORDENADO: ");
ver(a,n);// Va a la funcion ver() arreglo ordenado
getch();
break;
case 2:
p(" ");
p("SU ARREGLO ES: ");
p(" ");
ver(a,n);// Va a la funcion ver arreglo() que digito el usuario
p(" PRESIONE CUALQUIER TECLA, ");
p("PARA COMENZAR EL ORDENAMIENTO...");
getch();
quicksort(a,n);// Va a la funcion QuickSort()
p(" ");
p("ARREGLO ORDENADO: ");
ver(a,n);// Va a la funcion ver() arreglo ordenado
getch();
break;
case 3:
p(" ");
p("SU ARREGLO ES: ");
p(" ");
ver(a,n);// Va a la funcion ver arreglo() que digito el usuario
p(" PRESIONE CUALQUIER TECLA, ");
p("PARA COMENZAR EL ORDENAMIENTO...");
getch();
radixsort(a,n);// Va a la funcion Cubetas()
p(" ");
p("ARREGLO ORDENADO: ");
ver(a,n);// Va a la funcion ver() arreglo ordenado
getch();
case 5:
salir= 1;
break;
default:
p(" ");
p("OPCION NO VALIDA.");
p(" ");
getch();
break;
}
}while(salir=1);
p(" ");
p("JHONATAN CABEZA, ANDRES CORTES Y CAMILO JIMENEZ. copyright 2008.");// Integrantes
p(" ");
getch();
}
char menu()
{
char opc;
p(" ");
p("** MODO DE CAPTURA ** ");
p("A) MANUALMENTE. B) ALEATORIAMENTE. ");
p(" CAPTURA DE FORMA: ");
fflush(stdin);//Averiguar
scanf("%c", &opc);
return(opc);
}
int mcap()
{
int cap;
p("** MENU DE METODOS DE ORDENAMIENTO ** ");
p("1) BURBUJA. 2) QUICKSORT. 3) CUBETAS. 4) RESUMEN. ");
p("5) SALIR. METODO A UTILIZAR: ");
scanf("%d", &cap);
return(cap);
}
int numelem()
{
int elems;
p(" ");
p("NUMERO DE ELEMENTOS: ");
scanf("%d", &elems);
return(elems);
}
void captura(int a[],int n)
{
int i;
for(i=0;i<n;i++)
{
p("elemento %d: ",i+1);
scanf("%d", &a[i]);
}
}
void caleat(int a[], int n)
{
int i;
rand();
for(i=0;i<n;i++)
{
a[i]=(rand()%100);
}
}
void ver(int a[], int n)
{
int i;
for(i=0;i<n;i++)
{
p("elemento %d: %d ",i+1, a[i]);
p(" ");
}
}
//Metodo de Burbuja
void burbuja(int a[],int n)
{
int i,j,k=0,aux;
for(i=0;i<=n;i++)
{
p("PASADA N§%d ",k);
k++;
for(j=0;j<n-i;j++)
{
if(a[j]>a[j+1])
{
aux=a[j];
a[j]=a[j+1];
a[j+1]=aux;
}
p(" ");
ver(a,n);
}
}
}
//Metodo de QuickSort
void quicksort(int a[], int n)
{
qs(a, 0, n-1);
}
void qs (int l[], int inf, int sup)
{
int izq, k, der, n;
int med, x;
izq= inf;
der= sup;
med= l[(izq+der)/2];
do
{
while (l[izq] < med && izq < sup) izq++;
while (med < l[der] && der > inf) der--;
if(izq <= der)
{
x= l [izq];
l[izq]=l[der];
l[der]=x;
izq++; der--;
}
for(k=0; k<n; k++)
p("%d ", l[k]); puts("");
}while(izq<= der);
if(inf < der) qs(l,inf,der);
if(izq < sup) qs(l,izq,sup);
}
//Metodo de Cubetas O Radixsort
void radixsort(int a[], int n)
{
int front[10], rear[10];
struct
{
int info;
int next;
}node [MAX];
int exp, first, i, j, k, p, q, y;
for(i=0; i<n-1; i++)
{
node[i].info = a[i];
node[i].next = i+1;
}
node[n-1].info = a[n-1];
node[n-1].next = -1;
first = 0;
for(k=1; k<5; k++)
{
for(i=0; i<10; i++)
{
rear [i]= -1;
front[i]= -1;
}
while (first != -1)
{
p= first;
first= node [first].next;
y= node [p]. info;
exp = pow(10, k-1);
j= (y/exp)% 10;
q= rear[j];
if(q == -1)
front[j] = p;
else
node[q].next = p;
rear[j] = p;
}
for(j= 0; j<10 && front [j] == -1; j++);
;
first = front[j];
while(j <= 9)
{
for(i =j+1; i<10 && front[i] == -1; i++);
;
if(i <= 9)
{
p= i;
node[rear[j]].next = front[i];
}
j= i;
}
node[rear[p]].next = -1;
}
for(i=0; i<n; i++)
{
a[i]= node [first].info;
first= node[first].next;
}
}
les cuento la historia del programa.
este programa el error que tiene es el siguiente:
el programa hace los pasos necesarios: se entra al menu toma el mando al cual se quiere ejecutar, pero cuando se pide la pocion de muestra es decir burbuja, cubetas u quick short se sale del programa.
#include <stdio.h>// Librerias
//#include <iostream.h>// Librerias
#include <stdlib.h>// Librerias
#include <conio.h>// Librerias
#include <dos.h>// Librerias
#include <math.h>// Librerias
#include <time.h>// Librerias
//#include <windows.h>// Librerias
#define MAX 100 //Definicion arreglo de 100 elementos
#define p printf
//Prototipos.
void burbuja(int a[],int n);// Funcion del Metodo Burbuja
void quicksort(int a[],int n);// Funcion del Metodo QuickSort
void qs(int l[],int n, int m);
void radixsort(int a[],int n);// Funcion del Metodo Cubetas
int numelem();// Funcion Numero Elementos
void tipocap(int a[],int n);// Funcion Tipo de Captura de Datos
void captura(int a[],int n);// Funcion Capturar Elementos
void caleat(int a[],int n);// Funcion Cargar Aleatoriamento
void ver(int a[],int n);// Funcion ver Elementos
char menu();// Funcion del Menu
int mcap();// Funcion del Modo de Captura
void main()// Menu Principal
{
int a[MAX],n; //Variables y arreglo
int salir=0;
do
{
switch(menu())// Describe los puntos del Menu
{
case 'a':
case 'A':
n= numelem();
p(" ");
captura(a,n);
p(" ");
mcap();
p(" ");
tipocap(a,n);
break;
case 'b':
case 'B':
n= numelem();
p(" ");
caleat(a,n);
p(" ");
mcap();
p(" ");
tipocap(a,n);
break;
default:
p(" ");
p("OPCION NO VALIDA.");
p(" ");
getch();
break;
}
}while(salir=1);
getch();
}
//Funciones de Prototipos.
void tipocap(int a[],int n)
{
int salir=0;
do
{
switch(menu())// Describe los puntos del Menu
{
case 1:
p("SU ARREGLO ES: ");
p(" ");
ver(a,n);// Va a la funcion ver arreglo() que digito el usuario
p(" PRESIONE CUALQUIER TECLA, ");
p("PARA COMENZAR EL ORDENAMIENTO...");
getch();
burbuja(a,n);// Va a la funcion burbuja()
p(" ");
p("ARREGLO ORDENADO: ");
ver(a,n);// Va a la funcion ver() arreglo ordenado
getch();
break;
case 2:
p(" ");
p("SU ARREGLO ES: ");
p(" ");
ver(a,n);// Va a la funcion ver arreglo() que digito el usuario
p(" PRESIONE CUALQUIER TECLA, ");
p("PARA COMENZAR EL ORDENAMIENTO...");
getch();
quicksort(a,n);// Va a la funcion QuickSort()
p(" ");
p("ARREGLO ORDENADO: ");
ver(a,n);// Va a la funcion ver() arreglo ordenado
getch();
break;
case 3:
p(" ");
p("SU ARREGLO ES: ");
p(" ");
ver(a,n);// Va a la funcion ver arreglo() que digito el usuario
p(" PRESIONE CUALQUIER TECLA, ");
p("PARA COMENZAR EL ORDENAMIENTO...");
getch();
radixsort(a,n);// Va a la funcion Cubetas()
p(" ");
p("ARREGLO ORDENADO: ");
ver(a,n);// Va a la funcion ver() arreglo ordenado
getch();
case 5:
salir= 1;
break;
default:
p(" ");
p("OPCION NO VALIDA.");
p(" ");
getch();
break;
}
}while(salir=1);
p(" ");
p("JHONATAN CABEZA, ANDRES CORTES Y CAMILO JIMENEZ. copyright 2008.");// Integrantes
p(" ");
getch();
}
char menu()
{
char opc;
p(" ");
p("** MODO DE CAPTURA ** ");
p("A) MANUALMENTE. B) ALEATORIAMENTE. ");
p(" CAPTURA DE FORMA: ");
fflush(stdin);//Averiguar
scanf("%c", &opc);
return(opc);
}
int mcap()
{
int cap;
p("** MENU DE METODOS DE ORDENAMIENTO ** ");
p("1) BURBUJA. 2) QUICKSORT. 3) CUBETAS. 4) RESUMEN. ");
p("5) SALIR. METODO A UTILIZAR: ");
scanf("%d", &cap);
return(cap);
}
int numelem()
{
int elems;
p(" ");
p("NUMERO DE ELEMENTOS: ");
scanf("%d", &elems);
return(elems);
}
void captura(int a[],int n)
{
int i;
for(i=0;i<n;i++)
{
p("elemento %d: ",i+1);
scanf("%d", &a[i]);
}
}
void caleat(int a[], int n)
{
int i;
rand();
for(i=0;i<n;i++)
{
a[i]=(rand()%100);
}
}
void ver(int a[], int n)
{
int i;
for(i=0;i<n;i++)
{
p("elemento %d: %d ",i+1, a[i]);
p(" ");
}
}
//Metodo de Burbuja
void burbuja(int a[],int n)
{
int i,j,k=0,aux;
for(i=0;i<=n;i++)
{
p("PASADA N§%d ",k);
k++;
for(j=0;j<n-i;j++)
{
if(a[j]>a[j+1])
{
aux=a[j];
a[j]=a[j+1];
a[j+1]=aux;
}
p(" ");
ver(a,n);
}
}
}
//Metodo de QuickSort
void quicksort(int a[], int n)
{
qs(a, 0, n-1);
}
void qs (int l[], int inf, int sup)
{
int izq, k, der, n;
int med, x;
izq= inf;
der= sup;
med= l[(izq+der)/2];
do
{
while (l[izq] < med && izq < sup) izq++;
while (med < l[der] && der > inf) der--;
if(izq <= der)
{
x= l [izq];
l[izq]=l[der];
l[der]=x;
izq++; der--;
}
for(k=0; k<n; k++)
p("%d ", l[k]); puts("");
}while(izq<= der);
if(inf < der) qs(l,inf,der);
if(izq < sup) qs(l,izq,sup);
}
//Metodo de Cubetas O Radixsort
void radixsort(int a[], int n)
{
int front[10], rear[10];
struct
{
int info;
int next;
}node [MAX];
int exp, first, i, j, k, p, q, y;
for(i=0; i<n-1; i++)
{
node[i].info = a[i];
node[i].next = i+1;
}
node[n-1].info = a[n-1];
node[n-1].next = -1;
first = 0;
for(k=1; k<5; k++)
{
for(i=0; i<10; i++)
{
rear [i]= -1;
front[i]= -1;
}
while (first != -1)
{
p= first;
first= node [first].next;
y= node [p]. info;
exp = pow(10, k-1);
j= (y/exp)% 10;
q= rear[j];
if(q == -1)
front[j] = p;
else
node[q].next = p;
rear[j] = p;
}
for(j= 0; j<10 && front [j] == -1; j++);
;
first = front[j];
while(j <= 9)
{
for(i =j+1; i<10 && front[i] == -1; i++);
;
if(i <= 9)
{
p= i;
node[rear[j]].next = front[i];
}
j= i;
}
node[rear[p]].next = -1;
}
for(i=0; i<n; i++)
{
a[i]= node [first].info;
first= node[first].next;
}
}
Valora esta pregunta


0