27
EJERCICIOS DE ORDENAMIENTO 1)Ingresar los nombres y promedios de n alumnos. Muestren aquellos alumnos que pertenecen al tercio superior. El tercio superior lo forman la tercera parte superior de los inscritos en un curso ordenados descendentemente por promedio #include <iostream> #include <string.h> #define LIM 50 using namespace std; void num(int &n) { do{ cout<<"Digite el numero de elementos : "; cin>>n; }while(n<=0 || n>LIM); } void ingreso(char nombres[][40], int notas[], int n) { int i; for(i=0;i<n;i++) { cin.get(); cout<<"\nDigite la informacion del "<<i+1<<" alumno :"<<endl; cout<<"\tApellidos y Nombres : "; cin.getline(nombres[i],40); do{ cout<<"\tSu promedio : "; cin>>notas[i]; }while(notas[i]<0 || notas[i]>20); } } void ordenamiento(char nombres[][40], int notas[], int n) { int i,j,temp; char tem[40]; bool k=true; for(i=0;i<n-1 && k;i++) {

Ejercicios de Ordenamiento-Ing.marcelino

Embed Size (px)

Citation preview

Page 1: Ejercicios de Ordenamiento-Ing.marcelino

EJERCICIOS DE ORDENAMIENTO

1) Ingresar los nombres y promedios de n alumnos. Muestren aquellos alumnos que pertenecen al tercio superior. El tercio superior lo forman la tercera parte superior de los inscritos en un curso ordenados descendentemente por promedio

#include <iostream>#include <string.h>#define LIM 50using namespace std;

void num(int &n){

do{cout<<"Digite el numero de elementos : ";cin>>n;

}while(n<=0 || n>LIM);}

void ingreso(char nombres[][40], int notas[], int n){

int i;for(i=0;i<n;i++){

cin.get();cout<<"\nDigite la informacion del "<<i+1<<" alumno :"<<endl;cout<<"\tApellidos y Nombres : ";cin.getline(nombres[i],40);do{

cout<<"\tSu promedio : "; cin>>notas[i]; }while(notas[i]<0 || notas[i]>20);

}}void ordenamiento(char nombres[][40], int notas[], int n){ int i,j,temp; char tem[40]; bool k=true; for(i=0;i<n-1 && k;i++) { k=false;

for(j=n-1;j>i;j--) if(notas[j]>notas[j-1]) { temp=notas[j];

notas[j]=notas[j-1];notas[j-1]=temp;

Page 2: Ejercicios de Ordenamiento-Ing.marcelino

strcpy(tem,nombres[j]);strcpy(nombres[j],nombres[j-1]);strcpy(nombres[j-1],tem);k=true;

} }}void reporte(char x[][40],int y[], int n){

int i;if(n%3==2) n=n/3+1;

else n=n/3;

for(i=0;i<n;i++){

cout<<"\nDatos del "<<i+1<<" alumno en ese orden : "<<endl;cout<<x[i]<<" "<<y[i]<<endl;

}

}char continuar(char mensaje[]){ char y; do{ cout<<mensaje; cin>>y; }while(y!='s'&&y!='n'); return y;}int main(){

int n, notas[LIM];char nombres[LIM][40],respuesta;do{

system("cls"); cout<<"\t\tEJERCICIO 1 "<<endl<<endl; num(n);

ingreso(nombres,notas,n); ordenamiento(nombres,notas,n); cout<<"\n\nEl tercio superior es : "<<endl<<endl; reporte(nombres,notas,n); respuesta=continuar("\n\nDeseas continuar (s/n) : ");

}while(respuesta=='s');return 0;

}

Page 3: Ejercicios de Ordenamiento-Ing.marcelino

2) Lea n frases y ordénelas según la longitud de cada frase

#include <iostream>#include <string.h>#define LIM 50using namespace std;

void num(int &n){

do{cout<<"Digite el numero de elementos : ";cin>>n;

}while(n<=0 || n>LIM);}

void ingreso(char nombres[][40], int n){

int i; cin.get();

for(i=0;i<n;i++){

cout<<"\nDigite la informacion del "<<i+1<<" cadena : "<<endl;cin.getline(nombres[i],40);

}}int contar(char cadena[]){ int k=-1; do{ k++; }while(cadena[k]!=0); return k+1;}void ordenamiento(char nombres[][40], int n){ int i,j; char tem[40]; bool k=true; for(i=0;i<n-1&&k;i++) { k=false;

for(j=n-1;j>i;j--) if(contar(nombres[j])>contar(nombres[j-1])) {

strcpy(tem,nombres[j]);strcpy(nombres[j],nombres[j-1]);strcpy(nombres[j-1],tem);

Page 4: Ejercicios de Ordenamiento-Ing.marcelino

k=true; }

}}void reporte(char x[][40], int n){

int i;for(i=0;i<n;i++){

cout<<"\nDatos de la "<<i+1<<" cadena en ese orden : "<<endl;cout<<x[i]<<" "<<endl;

}

}char continuar(char mensaje[]){ char y; do{ cout<<mensaje; cin>>y; }while(y!='s'&&y!='n'); return y;}int main(){

int n;char nombres[LIM][40],respuesta;do{

system("cls"); cout<<"\t\tEJERCICIO 2 "<<endl<<endl; num(n);

ingreso(nombres,n); ordenamiento(nombres,n); cout<<"\nOrdenamiento en base a numero de caracteres : "<<endl<<endl; reporte(nombres,n); respuesta=continuar("\n\nDeseas continuar (s/n) : ");

}while(respuesta=='s');return 0;

}

Page 5: Ejercicios de Ordenamiento-Ing.marcelino

3) Se presentan n solicitudes las cuales tienen una hora de llegada y se les asigna una prioridad entre 3 niveles. Ordene según su prioridad y luego según la hora de llegada

#include <iostream>#define LIM 50using namespace std;void num(int &n){

do{cout<<"Digite el numero de elementos : ";cin>>n;

}while(n<=0 || n>LIM);}void ingreso(int a[],int b[],int c[],int n,int d[]){ int i; for(i=0;i<n;i++) { cout<<"\nDigite la solicitud "<<i+1<<" : "<<endl; do{ cout<<"\t\tDigite la hora de llegada(0-23) : "; cin>>a[i]; }while(a[i]<0 || a[i]>23); do{ cout<<"\t\tDigite los minutos(0-60) : "; cin>>b[i]; }while(b[i]<0 || b[i]>60); do{ cout<<"\t\tDigite el nivel (1/2/3) : "; cin>>c[i]; }while(c[i]<1 || c[i]>3); d[i]=i+1; } }void onivel(int a[],int b[],int c[],int n,int d[]){ int i,j,temp; bool p=true; for(i=0;i<n-1 && p;i++) { p=false; for(j=n-1;j>i;j--) if(c[j]>c[j-1]) { temp=a[j]; a[j]=a[j-1]; a[j-1]=temp; temp=b[j];

Page 6: Ejercicios de Ordenamiento-Ing.marcelino

b[j]=b[j-1]; b[j-1]=temp; temp=c[j]; c[j]=c[j-1]; c[j-1]=temp; temp=d[j]; d[j]=d[j-1]; d[j-1]=temp; p=true; } }}void ohora(int a[],int b[],int c[],int n,int d[]){ int i,j,temp; bool p=true; for(i=0;i<n-1 && p;i++) { p=false; for(j=n-1;j>i;j--) { if(a[j]<a[j-1]) { temp=a[j]; a[j]=a[j-1]; a[j-1]=temp; temp=b[j]; b[j]=b[j-1]; b[j-1]=temp; temp=c[j]; c[j]=c[j-1]; c[j-1]=temp; temp=d[j]; d[j]=d[j-1]; d[j-1]=temp; p=true; } if(a[j]==a[j-1]) { if(b[j]<b[j-1]) { temp=a[j]; a[j]=a[j-1]; a[j-1]=temp; temp=b[j]; b[j]=b[j-1]; b[j-1]=temp; temp=c[j];

Page 7: Ejercicios de Ordenamiento-Ing.marcelino

c[j]=c[j-1]; c[j-1]=temp; temp=d[j]; d[j]=d[j-1]; d[j-1]=temp; p=true; } } } }}void reporte(int a[],int b[],int c[],int n,int d[]){ int i; for(i=0;i<n;i++) cout<<"\nSolicitud nº "<<d[i]<<" hora : "<<a[i]<<", minutos : "<<b[i]<<" y su nivel es : "<<c[i];}char continuar(char mensaje[]){ char y; do{ cout<<mensaje; cin>>y; }while(y!='s'&&y!='n'); return y;}int main(){ int h[LIM],m[LIM],niv[LIM],n,p[LIM]; char respuesta; do{ system("cls");

cout<<"\t\tEJERCICIO 3 "<<endl<<endl; num(n);

ingreso(h,m,niv,n,p); onivel(h,m,niv,n,p); cout<<"\n\nEl orden segun el nivel es : "<<endl<<endl; reporte(h,m,niv,n,p); ohora(h,m,niv,n,p); cout<<"\n\nEl orden segun la hora es : "<<endl<<endl; reporte(h,m,niv,n,p); respuesta=continuar("\n\nDeseas continuar (s/n) : ");

}while(respuesta=='s');return 0;

}

Page 8: Ejercicios de Ordenamiento-Ing.marcelino

4) Ingresar apellidos, nombres y edad de n personas. Ordenar alfabéticamente por apellidos, si tienen los mismos apellidos, ordenar por nombres y si tienen los nombres iguales ordenar por edad descendentemente.

#include <iostream>#include <string.h>#define LIM 50using namespace std;void num(int &n){

do{cout<<"Digite el numero de elementos : ";cin>>n;

}while(n<=0 || n>LIM);}void ingreso(char a[][40],char b[][40],int c[],int n){ int i; for(i=0;i<n;i++) { cout<<"\nDigite la informacion de la "<<i+1<<" persona : "<<endl; cin.get(); cout<<"\t\tDigite el apellido : "; cin.getline(a[i],40); cout<<"\t\tDigite el nombre : "; cin.getline(b[i],40); do{ cout<<"\t\tDigite la edad(>0) : "; cin>>c[i]; }while(c[i]<0); } }void orden(char a[][40],char b[][40],int c[],int n){ int i,j,temp; bool p=true; char tem[40]; for(i=0;i<n-1 && p;i++) { p=false; for(j=n-1;j>i;j--) { if(strcmp(a[j],a[j-1])<0) { strcpy(tem,a[j]); strcpy(a[j],a[j-1]); strcpy(a[j-1],tem); strcpy(tem,b[j]);

Page 9: Ejercicios de Ordenamiento-Ing.marcelino

strcpy(b[j],b[j-1]); strcpy(b[j-1],tem); temp=c[j]; c[j]=c[j-1]; c[j-1]=temp; p=true; } if(strcmp(a[j],a[j-1])==0) { if(strcmp(b[j],b[j-1])<0) { strcpy(tem,a[j]); strcpy(a[j],a[j-1]); strcpy(a[j-1],tem); strcpy(tem,b[j]); strcpy(b[j],b[j-1]); strcpy(b[j-1],tem); temp=c[j]; c[j]=c[j-1]; c[j-1]=temp; p=true; } if(strcmp(b[j],b[j-1])==0) { if(c[j]>c[j-1]) { strcpy(tem,a[j]); strcpy(a[j],a[j-1]); strcpy(a[j-1],tem); strcpy(tem,b[j]); strcpy(b[j],b[j-1]); strcpy(b[j-1],tem); temp=c[j]; c[j]=c[j-1]; c[j-1]=temp; p=true; } } } } }}void reporte(char a[][40],char b[][40],int c[],int n){ int i; for(i=0;i<n;i++) cout<<i+1<<"=>"<<a[i]<<" "<<b[i]<<" , Edad : "<<c[i]<<endl;}

Page 10: Ejercicios de Ordenamiento-Ing.marcelino

char continuar(char mensaje[]){ char y; do{ cout<<mensaje; cin>>y; }while(y!='s'&&y!='n'); return y;}int main(){ int ed[LIM],n; char ap[LIM][40],nom[LIM][40],respuesta; do{ system("cls");

cout<<"\t\tEJERCICIO 4 "<<endl<<endl; num(n);

ingreso(ap,nom,ed,n); orden(ap,nom,ed,n); cout<<"\n\nDespues de ordenar ... "<<endl<<endl; reporte(ap,nom,ed,n); respuesta=continuar("\n\nDeseas continuar (s/n) : ");

}while(respuesta=='s');return 0;

}

5) Ordene un arreglo y luego elimine los elementos repetidos. Aproveche el hecho de que elementos iguales se encuentran en posiciones consecutivas#include <iostream>#define LIM 50using namespace std;void num(int &n){

do{cout<<"Digite el numero de elementos : ";cin>>n;

}while(n<=0 || n>LIM);}void ingreso(int a[],int n){ int i; for(i=0;i<n;i++) { cout<<"\t\tDigite el "<<i+1<<" elemento entero : "; cin>>a[i]; } }void orden(int a[],int c,int d)

Page 11: Ejercicios de Ordenamiento-Ing.marcelino

{ int i=c,j=d,piv=a[(c+d)/2],temp; do{ while(a[i]<piv) i++; while(a[j]>piv) j--; if(i<=j) { temp=a[i]; a[i]=a[j]; a[j]=temp; i++; j--; } }while(i<=j); if(c<j) orden(a,c,j); if(i<d) orden(a,i,d);}void elimina(int a[],int &n){ int i,j; for(i=0;i<n-1;i++) { if(a[i]==a[i+1]) { for(j=i+1;j<n-1;j++) a[j]=a[j+1]; n--; i--; } }}void reporte(int a[],int n){ int i; for(i=0;i<n;i++) cout<<"x["<<i<<"] ==> "<<a[i]<<endl;}char continuar(char mensaje[]){ char y; do{ cout<<mensaje; cin>>y; }while(y!='s'&&y!='n');

Page 12: Ejercicios de Ordenamiento-Ing.marcelino

return y;}int main(){ int x[LIM],n; char respuesta; do{ system("cls");

cout<<"\t\tEJERCICIO 5 "<<endl<<endl; num(n); cout<<"\n\nDigite los elementos del arreglo : "<<endl;

ingreso(x,n); orden(x,0,n-1); cout<<"\n\nDespues de ordenar ... "<<endl<<endl; reporte(x,n); elimina(x,n); cout<<"\n\nDespues de eliminar ... "<<endl<<endl; reporte(x,n); respuesta=continuar("\n\nDeseas continuar (s/n) : ");

}while(respuesta=='s');return 0;

}6) Se tiene 2 arreglos ordenados, mézclelos de tal forma que se cree un tercer arreglo que

siempre se mantenga ordenado. No use ningún método de ordenamiento#include <iostream>#define LIM 50using namespace std;void num(int &n){

do{cout<<"Digite el numero de elementos : ";cin>>n;

}while(n<=0 || n>LIM);}void ingreso(int a[],int n){ int i; for(i=0;i<n;i++) { cout<<"\t\tDigite el "<<i+1<<" elemento entero : "; cin>>a[i]; } }void orden(int a[],int c,int d){ int i=c,j=d,piv=a[(c+d)/2],temp; do{ while(a[i]<piv)

Page 13: Ejercicios de Ordenamiento-Ing.marcelino

i++; while(a[j]>piv) j--; if(i<=j) { temp=a[i]; a[i]=a[j]; a[j]=temp; i++; j--; } }while(i<=j); if(c<j) orden(a,c,j); if(i<d) orden(a,i,d);}void reporte(int a[],int n){ int i; for(i=0;i<n;i++) cout<<"Elemento["<<i<<"] ==> "<<a[i]<<endl;}bool verificaorden(int a[],int n){ int i,p; bool k=true; for(i=0;i<n-1 && k;i++) if(a[i]>a[i+1]) k=false; if(!k) { cout<<"\nEl arreglo ingresado esta desordenado "; do{ cout<<"\nDeseas que se ordene(1) o Deseas ingresar un nuevo arreglo(2) "; cin>>p; }while(p!=1 && p!=2); if(p==1) { orden(a,0,n-1); reporte(a,n); return false; } if(p==2) return true; } else return false;

Page 14: Ejercicios de Ordenamiento-Ing.marcelino

}void ordenp(int a[],int b[],int c[],int a1,int b1){ int i=0,j=0,k=0; while(i<=a1 && j<=b1) { if(a[i]<b[j]) { c[k]=a[i]; i++; } else { c[k]=b[j]; j++; } k++; } while(i<=a1) { c[k]=a[i]; k++; i++; } while(j<=b1) { c[k]=b[j]; k++; j++; }}char continuar(char mensaje[]){ char y; do{ cout<<mensaje; cin>>y; }while(y!='s'&&y!='n'); return y;}int main(){ int x[LIM],y[LIM],z[2*LIM],n1,n2; char respuesta; do{ system("cls");

cout<<"\t\tEJERCICIO 6 "<<endl<<endl; cout<<"\n\nVECTOR A "<<endl<<endl;

Page 15: Ejercicios de Ordenamiento-Ing.marcelino

num(n1); do{ cout<<"\n\nDigite los elementos del arreglo ordenado(ascendentemente): "<<endl;

ingreso(x,n1); }while(verificaorden(x,n1)); cout<<"\n\nVECTOR B "<<endl<<endl;

num(n2); do{ cout<<"\n\nDigite los elementos del arreglo ordenado(ascendentemente): "<<endl;

ingreso(y,n2); }while(verificaorden(y,n2)); ordenp(x,y,z,n1,n2);

cout<<"\n\nDespues de ordenar en un vector C... "<<endl<<endl; reporte(z,n1+n2);

respuesta=continuar("\n\nDeseas continuar (s/n) : "); }while(respuesta=='s');

return 0;}

7) Se tiene un arreglo ordenado, inserte un nuevo elemento en la posición que le corresponde, de tal manera que el arreglo siga ordenado. No deberá usar ningún algoritmo de ordenamiento.#include <iostream>#define LIM 50using namespace std;void num(int &n){

do{cout<<"Digite el numero de elementos : ";cin>>n;

}while(n<=0 || n>LIM-1);}void ingreso(int a[],int n){ int i; for(i=0;i<n;i++) { cout<<"\t\tDigite el "<<i+1<<" elemento entero : "; cin>>a[i]; } }void orden(int a[],int c,int d){ int i=c,j=d,piv=a[(c+d)/2],temp; do{ while(a[i]<piv) i++; while(a[j]>piv) j--;

Page 16: Ejercicios de Ordenamiento-Ing.marcelino

if(i<=j) { temp=a[i]; a[i]=a[j]; a[j]=temp; i++; j--; } }while(i<=j); if(c<j) orden(a,c,j); if(i<d) orden(a,i,d);}void reporte(int a[],int n){ int i; for(i=0;i<n;i++) cout<<"Elemento["<<i<<"] ==> "<<a[i]<<endl;}bool verificaorden(int a[],int n){ int i,p; bool k=true; for(i=0;i<n-1 && k;i++) if(a[i]>a[i+1]) k=false; if(!k) { cout<<"\nEl arreglo ingresado esta desordenado "; do{ cout<<"\nDeseas que se ordene(1) o Deseas ingresar un nuevo arreglo(2) "; cin>>p; }while(p!=1 && p!=2); if(p==1) { orden(a,0,n-1); reporte(a,n); return false; } if(p==2) return true; } else return false;}void insert(int a[],int &n,int k){

Page 17: Ejercicios de Ordenamiento-Ing.marcelino

int i,j; bool p=true; for(i=0;i<n-1 && p;i++) { if(a[i]<=k && a[i+1]>=k) p=false; } if(p) a[n]=k; else { for(j=n;j>i;j--) a[j]=a[j-1]; a[j]=k; } n++;}char continuar(char mensaje[]){ char y; do{ cout<<mensaje; cin>>y; }while(y!='s'&&y!='n'); return y;}int main(){ int x[LIM],elemento,n; char respuesta; do{ system("cls");

cout<<"\t\tEJERCICIO 7 "<<endl<<endl; cout<<"\n\nVECTOR "<<endl<<endl; num(n); do{ cout<<"\n\nDigite los elementos del arreglo ordenado(ascendentemente): "<<endl;

ingreso(x,n); }while(verificaorden(x,n)); cout<<"\nAhora digite el elemento a insertar : "; cin>>elemento; insert(x,n,elemento);

cout<<"\n\nDespues de insertar "<<endl<<endl; reporte(x,n);

respuesta=continuar("\n\nDeseas continuar (s/n) : "); }while(respuesta=='s');

return 0;}

Page 18: Ejercicios de Ordenamiento-Ing.marcelino

8) Encuentre la mediana de un conjunto de n datos. La mediana de un conjunto ordenado es igual al termino central si n es impar y a la semisuma de los términos centrales si n es par.#include <iostream>#define LIM 50using namespace std;void num(int &n){

do{cout<<"Digite el numero de elementos : ";cin>>n;

}while(n<=0 || n>LIM-1);}void ingreso(int a[],int n){ int i; for(i=0;i<n;i++) { cout<<"\t\tDigite el "<<i+1<<" elemento entero : "; cin>>a[i]; } }void reporte(int a[],int n){ int i; for(i=0;i<n;i++) cout<<"Elemento["<<i<<"] ==> "<<a[i]<<endl;}void orden(int a[],int c,int d){ int i=c,j=d,piv=a[(c+d)/2],temp; do{ while(a[i]<piv) i++; while(a[j]>piv) j--; if(i<=j) { temp=a[i]; a[i]=a[j]; a[j]=temp; i++; j--; } }while(i<=j); if(c<j) orden(a,c,j); if(i<d)

Page 19: Ejercicios de Ordenamiento-Ing.marcelino

orden(a,i,d);}bool verificaorden(int a[],int n){ int i,p; bool k=true; for(i=0;i<n-1 && k;i++) if(a[i]>a[i+1]) k=false; if(!k) { cout<<"\nEl arreglo ingresado esta desordenado "; do{ cout<<"\nDeseas que se ordene(1) o Deseas ingresar un nuevo arreglo(2) "; cin>>p; }while(p!=1 && p!=2); if(p==1) { orden(a,0,n-1); reporte(a,n); return false; } if(p==2) return true; } else return false;}float mediana(int a[],int n){ if(n%2==1) return a[n/2]; else return a[n/2]+a[(n/2)-1];}char continuar(char mensaje[]){ char y; do{ cout<<mensaje; cin>>y; }while(y!='s'&&y!='n'); return y;}int main(){ int x[LIM],n; char respuesta;

Page 20: Ejercicios de Ordenamiento-Ing.marcelino

do{ system("cls");

cout<<"\t\tEJERCICIO 8 "<<endl<<endl; cout<<"\n\nVECTOR "<<endl<<endl; num(n); do{ cout<<"\n\nDigite los elementos del arreglo ordenado(ascendentemente): "<<endl;

ingreso(x,n); }while(verificaorden(x,n));

cout<<"\n\nLa mediana del vector es : "<<mediana(x,n)<<endl<<endl; respuesta=continuar("\n\nDeseas continuar (s/n) : "); }while(respuesta=='s');

return 0;}

9) Encuentre la moda de un conjunto de datos, la moda es elemento que más se repite, puede haber una, ninguna o varias modas. Sugerencia: Ordene el arreglo cuente cuantas veces se repiten cada elemento y busque la mayor cantidad de repeticiones. Aproveche el hecho que elementos iguales se encuentran uno a continuación de otro #include <iostream>#define LIM 50using namespace std;void num(int &n){

do{cout<<"Digite el numero de elementos : ";cin>>n;

}while(n<=0 || n>LIM);}void ingreso(int a[],int n){ int i; for(i=0;i<n;i++) { cout<<"\t\tDigite el "<<i+1<<" elemento entero : "; cin>>a[i]; } }void orden(int a[],int c,int d){ int i=c,j=d,piv=a[(c+d)/2],temp; do{ while(a[i]<piv) i++; while(a[j]>piv) j--; if(i<=j) {

Page 21: Ejercicios de Ordenamiento-Ing.marcelino

temp=a[i]; a[i]=a[j]; a[j]=temp; i++; j--; } }while(i<=j); if(c<j) orden(a,c,j); if(i<d) orden(a,i,d);}void modas(int a[],int a1,int b[],int &b1){ int i,j; bool p; b1=0; for(i=0;i<a1-1;i++) { if(b1!=0) { while(a[i]==b[b1-1]) i++; } if(a[i]==a[i+1]) { b[b1]=a[i]; b1++; }

}}void reporte(int a[],int n){ int i; for(i=0;i<n;i++) cout<<"Elemento["<<i<<"] ==> "<<a[i]<<endl;}char continuar(char mensaje[]){ char y; do{ cout<<mensaje; cin>>y; }while(y!='s'&&y!='n'); return y;}int main()

Page 22: Ejercicios de Ordenamiento-Ing.marcelino

{ int x[LIM],moda[LIM],n,mop; char respuesta; do{ system("cls");

cout<<"\t\tEJERCICIO 9 "<<endl<<endl; num(n); cout<<"\n\nDigite los elementos del arreglo : "<<endl;

ingreso(x,n); orden(x,0,n-1); cout<<"\n\nDespues de ordenar ... "<<endl<<endl; reporte(x,n); modas(x,n,moda,mop); if(mop!=0) {

cout<<"\n\nLas modas son "<<endl; reporte(moda,mop);

} else cout<<"\n\nNo existe moda "<<endl;

respuesta=continuar("\n\nDeseas continuar (s/n) : "); }while(respuesta=='s');

return 0;}

10) Implementar el método de burbuja de manera recursiva.#include <iostream>#define LIM 50using namespace std;

void num(int &n){

do{cout<<"Digite el numero de elementos : ";cin>>n;

}while(n<=0 || n>LIM-1);}void ingreso(int a[],int n){ int i; for(i=0;i<n;i++) { cout<<"\t\tDigite el "<<i+1<<" elemento entero : "; cin>>a[i]; } }void orden(int a[], int n,int i,int j){ int temp;

Page 23: Ejercicios de Ordenamiento-Ing.marcelino

if(i<n-1) { if(j>i) {

if(a[j]<a[j-1]) { temp=a[j];

a[j]=a[j-1];a[j-1]=temp;

} orden(a,n,i,j-1);

} orden(a,n,i+1,n-1); }}void reporte(int a[],int n){ int i; for(i=0;i<n;i++) cout<<"Elemento["<<i<<"] ==> "<<a[i]<<endl;}char continuar(char mensaje[]){ char y; do{ cout<<mensaje; cin>>y; }while(y!='s'&&y!='n'); return y;}int main(){ int x[LIM],n; char respuesta; do{ system("cls");

cout<<"\t\tEJERCICIO 10 "<<endl<<endl; num(n); cout<<"\n\nDigite los elementos del arreglo : "<<endl;

ingreso(x,n); orden(x,n,0,n-1); cout<<"\n\nDespues de ordenar ... "<<endl<<endl; reporte(x,n); respuesta=continuar("\n\nDeseas continuar (s/n) : ");

}while(respuesta=='s');return 0;

}