Dev - C++ - metodos de ordenamiento

 
Vista:

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;
}

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

metodos de ordenamiento

Publicado por roly (1 intervención) el 29/09/2011 14:31:32
mira lo q tienes q hacer es salirte de lo q putas estes estudiando y t cagas o miento
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar