Blog para dar informacion sobre la programacion y otros campos relacionados con la computacion
jueves, 17 de mayo de 2012
Programa : contiene busqueda y ordenamiento
#include <conio.h>
#include <iostream.h>
#include <stdio.h>
const int n=5;
void ingrese(char[n][15],int [n]);
void apro_repro(int[n],int);
void burbuja(char[n][15],int[n]);
void seleccion(char[n][15],int[n]);
void insercion(char[n][15],int[n]);
void binaria(char[n][15],int[n]);
int main()
{
int opc,a;
char nombres[n][15];
int notas[n];
do{
gotoxy(25,3); cout<<" Bienvenido ";
gotoxy(25,5); cout<<"Escoja La Opcion";
gotoxy(20,6); cout<<" 1----> Ingrese Alumnos";
gotoxy(20,7); cout<<" 2----> Ordenamientos";
gotoxy(20,8); cout<<" 3----> Alumnos Aprobados";
gotoxy(20,9); cout<<" 4----> Ingrese Reprobados";
gotoxy(20,10);cout<<" 5----> Busqueda Binaria";
gotoxy(20,12);cout<<" ----> Leer Opcion"; gotoxy(40,12); cin>>opc;
if(opc==1)
{
ingrese(nombres,notas);
}
if(opc==2)
{ cout<<endl;
for(int i=0;i<n;i++)
cout<<notas[i]<<", "<<nombres[i]<<endl;
cout<<endl<<endl;
cout<<"Por Cual Metodo desea Ordenar"<<endl;
cout<<" 1 ----> Por Intercambio"<<endl;
cout<<" 2 ----> Por Seleccion "<<endl;
cout<<" 3 ----> Por Inserccion"<<endl;
cout<<" Leer opcion ---->"; cin>>a;
if(a==1)
{ burbuja(nombres,notas);}
if(a==2)
{ seleccion(nombres,notas);}
if(a==3)
{insercion(nombres,notas);}
}
if(opc==3)
{ apro_repro(notas,1);
}
if(opc==4)
{ apro_repro(notas,2);
}
if(opc==5)
{ binaria(nombres,notas);}
getch();
clrscr();
}while(opc!=5);
}
// La Funcion Ingrese(), sirve para insertar las notas y nombres en el vector.
void ingrese(char nombre[n][15], int notas[n])
{
for(int i=0;i<n;i++)
{ cout<<"Ingrese Nombre del Alumno: ";
cin>>nombre[i];
cout<<"Ingrese Nota del Alumno, "<<nombre[i]<<" : ";
cin>>notas[i];}
}
// La funcion apro_repro(),sirve para mostrar los alumnos reprobados y aprobados y el promedio de cada uno
void apro_repro(int notas[n], int opc)
{
int aprobados,reprobados,a,x;
aprobados=reprobados=a=x=0;
for(int i=0;i<n;i++)
{ if(notas[i]<5)
{ reprobados++;
x=x+notas[i];
}
else
{aprobados++;
a=a+notas[i]; }
}
if(opc==1)
{
cout<<" La cantidad de aprobados es: "<<aprobados<<endl;
cout<<" El promedio de aprobados es: "<<(a/aprobados)<<" pts "<<endl; }
if(opc==2)
{
cout<<" La cantidad de reprobados es: "<<reprobados<<endl;
cout<<" El promedio de reprobados es: "<<(x/reprobados)<<" pts "<<endl;}
}
// funcion burbuja(), sirve para un ordenamiento sencillo.
void burbuja(char nombres[n][15],int notas[n])
{
char ax[15];
int j, i,aux;
for(i=0;i<n-1;i++)
{ for(j=0;j<n-1;j++)
{ if(notas[j]>notas[j+1])
{
aux=notas[j];
notas[j]=notas[j+1];
notas[j+1]=aux;
strcpy(ax,nombres[j]);
strcpy(nombres[j], nombres[j+1]);
strcpy(nombres[j+1],ax);
}
}
}
for(i=0;i<n;i++)
cout<<nombres[i]<<", "<<notas[i]<<endl;
}
// funcion seleccion(), sirve para un ordenamiento selectivo basado en los minimos.
void seleccion(char nombres [n][15],int notas [n])
{
int aux,i,j,minimo;
char aux1[15];
for(i=0;i<n-1;i++)
{
minimo=i;
for(j=i+1;j<n;j++)
{
if(notas[j]<notas[minimo])
{minimo=j; }
}
//intercambio de notas
aux=notas[i];
notas[i]=notas[minimo];
notas[minimo]=aux;
//intercambio de nombres
strcpy(aux1,nombres[i]);
strcpy(nombres[i],nombres[minimo]);
strcpy (nombres[minimo],aux1);
}
for(i=0;i<n;i++)
cout<<nombres[i]<<", "<<notas[i]<<endl;
}
void insercion(char nombres [n][15],int notas [n])
{
char aux1[15];
int i,k,aux;
bool band=false;
for (k=1;k < n; k++){
aux=notas[k];
strcpy(aux1,nombres[k]);
i=k-1;
band=false;
while( i>=0 && !band )
{ if(aux < notas[i]){
notas[i+1]=notas[i];
strcpy(nombres[i+1],nombres[i]);
i--;
}
else
{ band=true; }
}
notas[i+1]=aux;
strcpy(nombres[i+1],aux1);
}
for(i=0;i<n;i++)
cout<<nombres[i]<<", "<<notas[i]<<endl;
}
// funcion Binanria(), sirve para hacer una busqueda de un dato, se necesita que este ordenada.... =D
void binaria(char nombres [n][15],int notas [n])
{
int dato,centro,inferior,superior;
inferior=0;
superior=n-1;
cout<<"Ingrese Nota a Buscar"<<endl;
cin>>dato;
while(inferior<=superior)
{
centro=((superior-inferior)/2+inferior);
if(notas[centro]==dato)
{ cout<<"Alumno: "<<nombres[centro]<<", nota: "<< notas[centro]<<endl;
return;
}
else
{if(dato<notas[centro])
{ superior = centro - 1;}
else
{ inferior= centro+1; }
}
}
cout<<"No se encontro esa nota";
}
getch();
}
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario