Mensaje a tiempo determinado en c
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <time>
using namespace std;
int main () {
int variable
variable= 25/10/2012
if (variable= date);
mesagebox " hola"
else;
continue
}
Todo codigo
Programación Códigos programas c en c++ Foxpro estadísticas ejemplos matemáticas probabilidades codigos ficheros Lotería electrónica cálculos abrir ficheros programas para archivos programación códigos libres gratis Php Java Ejercicios resueltos en C
sábado, 1 de junio de 2013
Codigo para leer o manejar fecha y hora todocodigo
/* Esta es una biblioteca que permite manejar de forma adecuada fechas y horas */
#include <dos.h>
#define dias_por_400_anios (365*400+100-3)
#define es_anio_bisiesto(y) ((((y)%400)==0)||((((y)%4)==0)&&(((y)%100)!=0)))
enum bool
{
false = 0,
true = 1
};
enum Mes
{
Enero = 1,
Febrero = 2,
Marzo = 3,
Abril = 4,
Mayo = 5,
Junio = 6,
Julio = 7,
Agosto = 8,
Septiembre = 9,
Octubre = 10,
Noviembre = 11,
Diciembre = 12
};
enum DiaSemana
{
Domingo = 1,
Lunes = 2,
Martes = 3,
Miercoles = 4,
Jueves = 5,
Viernes = 6,
Sabado = 7
};
char *nombre_mes(int numero_mes)
{
char *mes;
switch(numero_mes)
{
case 1: mes="Enero"; break;
case 2: mes="Febrero"; break;
case 3: mes="Marzo"; break;
case 4: mes="Abril"; break;
case 5: mes="Mayo"; break;
case 6: mes="Junio"; break;
case 7: mes="Julio"; break;
case 8: mes="Agosto"; break;
case 9: mes="Septiembre"; break;
case 10: mes="Octubre"; break;
case 11: mes="Noviembre"; break;
case 12: mes="Diciembre"; break;
}
return mes;
}
char *nombre_dia(DiaSemana dia_semana)
{
char *dia;
switch(dia_semana)
{
case Domingo: dia="Domingo"; break;
case Lunes: dia="Lunes"; break;
case Martes: dia="Martes"; break;
case Miercoles: dia="Miercoles"; break;
case Jueves: dia="Jueves"; break;
case Viernes: dia="Viernes"; break;
case Sabado: dia="Sabado"; break;
}
return dia;
}
struct Fecha
{
int y, m, d;
};
struct Tiempo
{
int h, m, s, cs;
};
long dias_pasados_400_anios(int y)
{
return ( y > 0 ) ? 365 * y + (y-1) / 4 - (y-1) / 100 + 1 : 0;
}
long dias_pasados_mes (int y, int m)
{
const int dias[12] = { 0, 31, 31+28, 59+31, 90+30, 120+31, 151+30, 181+31,
212+31, 243+30, 273+31, 304+30 /*, 334+31 = 365*/ };
long resultado;
resultado = dias[m-1];
if ( m > Febrero && es_anio_bisiesto ( y ) )
resultado++;
return resultado;
}
long dias_pasados_fecha (Fecha fecha)
{
long dias;
dias = (fecha.y/400)*dias_por_400_anios + dias_pasados_400_anios ( fecha.y % 400 )
+ dias_pasados_mes ( fecha.y, fecha.m ) + fecha.d;
return dias;
}
long diferencia_dias (Fecha fechaInicial, Fecha fechaFinal)
{
return dias_pasados_fecha(fechaFinal) - dias_pasados_fecha(fechaInicial);
}
DiaSemana dia_de_la_semana(Fecha fecha)
{
long resultado;
resultado = dias_pasados_400_anios ( fecha.y % 400 ) + dias_pasados_mes ( fecha.y, fecha.m ) + fecha.d;
/* El primer dia de la semana de cada 400 anios es viernes */
resultado = (Viernes+resultado) % 7;
/* Si es 0, entonces es sabado */
if (resultado==0)
resultado = 7;
return (DiaSemana)resultado;
}
int dias_en_el_mes (int y, int m)
{
const int dias[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int resultado;
resultado = dias[m-1];
if ( m == Febrero && es_anio_bisiesto ( y ) )
resultado++;
return resultado;
}
int dias_en_el_anio (int y)
{
return (es_anio_bisiesto ( y ) ) ? 366 : 365;
}
void sumar_dias_fecha (int dias, Fecha *fecha )
{
for(int i=1;i<=dias;i++)
{
fecha->d++;
if(fecha->d>dias_en_el_mes(fecha->y, fecha->m))
{
fecha->d=1;
fecha->m++;
}
if(fecha->m>12)
{
fecha->m=1;
fecha->y++;
}
}
}
long centesimas_pasados_tiempo (int h, int m, int s, int cs)
{
return h*(60*60*100) + m*(60*100) + s*100 + cs;
}
long diferencia_centesimas (Tiempo tiempoInicial, Tiempo tiempoFinal)
{
return centesimas_pasados_tiempo ( tiempoInicial.h, tiempoInicial.m, tiempoInicial.s, tiempoInicial.cs )
- centesimas_pasados_tiempo ( tiempoFinal.h, tiempoFinal.m, tiempoFinal.s, tiempoFinal.cs );
}
void sumar_centesimas_tiempo (long centesimas, Tiempo *tiempo )
{
tiempo->h = centesimas / (60*60*100);
centesimas %= (60*60*100);
tiempo->m = centesimas / (60*1000);
centesimas %= (60*100);
tiempo->s = centesimas / 100;
tiempo->cs = centesimas % 100;
}
bool es_fecha_valida ( Fecha fecha )
{
if ( fecha.m < Enero || fecha.m > Diciembre )
return false;
if ( fecha.d < 0 || fecha.d >= dias_en_el_mes ( fecha.y, fecha.m ) )
return false;
return true;
}
bool es_tiempo_valido ( Tiempo tiempo )
{
if ( tiempo.h < 0 || tiempo.h >= 24 )
return false;
if ( tiempo.m < 0 || tiempo.m >= 60 )
return false;
if ( tiempo.s < 0 || tiempo.s >= 60 )
return false;
if ( tiempo.cs < 0 || tiempo.cs >= 100 )
return false;
return true;
}
void leer_fecha_tiempo_local (Fecha *fecha, Tiempo *tiempo )
{
struct date d;
struct time t;
getdate(&d);
fecha->y = d.da_year;
fecha->m = d.da_mon;
fecha->d = d.da_day;
gettime(&t);
tiempo->h = t.ti_hour;
tiempo->m = t.ti_min;
tiempo->s = t.ti_sec;
tiempo->cs = t.ti_hund;
}
char *fecha_formateada (Fecha fecha)
{
char *dia=nombre_dia(dia_de_la_semana(fecha));
char *mes=nombre_mes(fecha.m);
char f[100];
sprintf(f, "%s, %02d de %s del %d", dia, fecha.d, mes, fecha.y);
return f;
}
char *tiempo_formateado (Tiempo tiempo)
{
char t[50];
sprintf(t, "%02d:%02d:%02d %02d", tiempo.h, tiempo.m, tiempo.s, tiempo.cs);
return t;
}
Ordenacion y busqueda c ejercicios resueltos
//BUSQUEDA.CPP (Ordenacion y busqueda)
//El programa fue compilado con Turbo C++ 3.0
//Descripcion de BUSQUEDA.CPP
//Los metodos de ordenacion que se desarrollaron son:
//Shell, Burbuja, Insercion, Sacudida,Seleccion y el Quicksort
//Nota.- El Quicksort se elaboro recursivamente e iterativamente.
//Los metodos de busqueda que se programaron fueron:
//Busqueda lineal y Busqueda Binaria.
//para que estos metodos funciones correctamente la lista debe estar ordenada.
#include <iostream.h>//para cout y cin
#include <conio.h> //para getch
#include <stdlib.h> //para exit y system
#define NUMEL 50
class BUSQUEDA{
private:
int izquierda,derecha,puntomedio,max,nums[NUMEL];
int elemento,ubicacion,ubicacion2,i;
public:
BusquedaBinaria(int[],int,int);
BusquedaLineal(int[],int,int);
MenuMain(void);
void Pedir(int *,int);
};
class ORDENACION{
private:
int min,indicemin,temp,movimientos;
int i,j,mitad,x;
int inter,opc;
int a[5];
OrdRap(int*,int,int);
void qs(int *,int,int);
public:
void Quicksort_Iterativo(int[],int);
Quicksort(int*,int);
Seleccion(int*,int);
Burbuja(int*,int);
Shell(int*,int);
Sacudida(int*,int);
Insercion(int*,int);
void Pedir(int*,int);
void Visualiza(int*,int,int,int);
Elementos();
MenuMain(void);
Menu_Asc_Des(void);
};
int ORDENACION::Quicksort(int *num,int numel)
{
int mov=OrdRap(num,0,numel-1);
return mov;
}
ORDENACION::OrdRap(int *num,int inf,int sup)
{
register int izq,der;
movimientos=0;
izq=inf; der=sup;
mitad=num[(izq+der)/2];
do{
while(num[izq]<mitad && izq < sup) izq++; movimientos++;
while(mitad<num[der] && der > inf) der--; movimientos++;
if(izq<=der){
x=num[izq],num[izq]=num[der],num[der]=x;
izq++; der--; movimientos++;
}
}while(izq<=der);
if(inf<der) OrdRap(num,inf,der);
if(izq<sup) OrdRap(num,izq,sup);
return movimientos;
}
void ORDENACION::Quicksort_Iterativo(int *num,int numel)
{
qs(num,0,numel-1);
}
void ORDENACION::qs(int *num,int inf,int sup)
{
struct TipoPila{
int inf,sup;
}Pila[NUMEL];
register int izq,der;
int mitad,x,p;
p=1,Pila[p].inf=inf,Pila[p].sup=sup;
do{
inf=Pila[p].inf,sup=Pila[p].sup,p--;
do{
izq=inf; der=sup;
mitad=num[(izq/der)/2];
do{
while(num[izq] < mitad && izq < sup) izq++;
while(mitad < num[der] && der > inf) der--;
if(izq<=der){
x=num[izq],num[izq]=num[der],num[der]=x;
izq++; der--;
}
}while(izq<=der);
if(izq<sup){
p++,Pila[p].inf=izq,Pila[p].sup=sup;
}
sup=der;
}while(inf<der);
}while(p);
}
ORDENACION::Insercion(int *num,int numel)
{
movimientos=0;
for(i=1;i<numel;++i){
temp=num[i];
for(j=i-1;(j>=0)&&(temp<num[j]);j--)
num[j+1]=num[j];
num[j+1]=temp;
movimientos++;
}
return movimientos;
}
ORDENACION::Shell(int *num,int numel)
{
movimientos=0;
a[0]=9;a[1]=5;a[2]=3;a[3]=2;a[4]=1;
for(register int k=0;k<5;k++){
temp=a[k];
for(i=temp;i<numel;++i){
x=num[i];
for(j=i-temp;(x<num[j])&&(j>=0);j=j-temp)
num[j+temp]=num[j];
num[j+temp]=x;
}
movimientos++;
}
return movimientos;
}
ORDENACION::Sacudida(int *num,int numel)
{
movimientos=0;
do{
inter=0;
for(i=numel-1;i>0;--i){
if(num[i-1]>num[i]){
temp=num[i-1];
num[i-1]=num[i];
num[i]=temp;
inter=1;
movimientos++;
}
}
for(i=1;i<numel;++i){
if(num[i-1]>num[i]){
temp=num[i-1];
num[i-1]=num[i];
num[i]=temp;
inter=1;
movimientos++;
}
}
}while(inter);
return movimientos;
}
ORDENACION::Seleccion(int *num,int numel)
{
movimientos=0;
for(i=0;i<(numel-1);i++){
min=num[i];
indicemin=i;
for(j=i+1;j<numel;++j){
if(num[j]<min){
min=num[j];
indicemin=j;
}
}
if(min<num[i]){
temp=num[i];
num[i]=min;
num[indicemin]=temp;
movimientos++;
}
}
return movimientos;
}
ORDENACION::Burbuja(int *num,int numel)
{
movimientos=0;
for(i=0;i<numel-1;i++){
for(j=1;j<numel;j++){
if(num[j]<num[j-1]){
temp=num[j];
num[j]=num[j-1];
num[j-1]=temp;
movimientos++;
}
}
}
return movimientos;
}
int BUSQUEDA::MenuMain(void)
{
int opc;
while(opc<1 || opc > 3){
system("cls");
gotoxy(29,9);
cout<<"METODOS DE BUSQUEDA.";
gotoxy(32,10); cout<<"1. Busqueda Lineal.";
gotoxy(32,11); cout<<"2. Busqueda Binaria.";
gotoxy(32,12); cout<<"3. Salir.";
gotoxy(32,14); cout<<"opcion-> ";
cin>>opc;
}
return opc;
}
int ORDENACION::MenuMain(void)
{
int opc;
while(opc < 1 || opc > 7)
{
system("cls");
gotoxy(29,9); cout<<"METODOS DE ORDENACION\n";
gotoxy(33,10); cout<<"1. Burbuja";
gotoxy(33,11); cout<<"2. Insercion";
gotoxy(33,12); cout<<"3. Quicksort";
gotoxy(33,13); cout<<"4. Shell";
gotoxy(33,14); cout<<"5. Seleccion";
gotoxy(33,15); cout<<"6. Sacudida";
gotoxy(33,16); cout<<"7. Salir.";
gotoxy(33,18); cout<<"Opcion-> ";
cin>>opc;
}
return opc;
}
void BUSQUEDA::Pedir(int *num,int n)
{
int i;
system("cls");
for(i = 0; i < n; i++)
{
gotoxy(22, i + 1);
cout<<"Ingresa valor "<<i+1<<": ";
cin>>num[i];
}
}
void ORDENACION::Pedir(int *num,int n)
{
system("cls");
for(i = 0; i < n; i++)
{
gotoxy(22, i + 1);
cout<<"Ingresa valor "<<i+1<<": ";
cin>>num[i];
}
}
int ORDENACION::Menu_Asc_Des(void)
{
int opc;
while(opc < 1 || opc > 2){
system("cls");
gotoxy(29,9); cout<<"METODOS DE ORDENACION\n";
gotoxy(33,10); cout<<"1. Ascendente\n";
gotoxy(33,11); cout<<"2. Descendente\n";
gotoxy(33,12); cout<<"Opcion: ";
cin>>opc;
}
return(opc);
}
BUSQUEDA::BusquedaBinaria(int lista[],int tamanho,int clave)
{
izquierda=0;
derecha=tamanho-1;
while(izquierda<=derecha)
{
puntomedio=((izquierda+derecha)/2);
if(clave==lista[puntomedio])
{
return puntomedio;
}
else if (clave>lista[puntomedio])
izquierda=puntomedio+1;
else
derecha=puntomedio-1;
}
return -1;
}
BUSQUEDA::BusquedaLineal(int lista[],int tamanho,int clave)
{
for(register int i=0;i<tamanho;i++)
{
if(lista[i]==clave)
return i;
}
return -1;
}
void ORDENACION::Visualiza(int *num, int numel,int opc,int mov)
{
if(numel >= 40) x = 1;
else x = 40 - numel;
do{
if(opc==1){
system("cls");
gotoxy(x-14,11); cout<<"Los movimientos que se hicieron son: ";
cout<<mov;
gotoxy(x-14,12); cout<<"Los Numeros Ordenados Ascendentemente son : ";
gotoxy(x,15);
for(i = 0; i<numel; i++)
cout<<num[i]<<" ";
getch();
}
if(opc==2){
system("cls");
gotoxy(x-14,11); cout<<"Los movimientos que se hicieron son: ";
cout<<mov;
gotoxy(x-14,12); cout<<"Los Numeros Ordenados Descendentemente son : "<<endl;
gotoxy(x,14);
for(int j = numel; j>0; j--)
cout<<num[j-1]<<" ";
getch();
}
}while(opc<1||opc>2);
}
void Ordenaciones(void)
{
int numel, opc,OPC;
char salir;
int num[NUMEL]={0};
ORDENACION p;
do{
system("cls");
gotoxy(19,12);
cout<<"Numero de elementos: ";
cin>>numel;
if(numel == 0){
cout<<"\n\t\t Numero no valido";
getch();
exit(1);
}
opc = p.MenuMain();
if(opc == 7){
exit(1);
}
p.Pedir(num, numel);
OPC=p.Menu_Asc_Des();
switch(opc)
{
case 1: int res=p.Burbuja(num, numel);
p.Visualiza(num, numel,OPC,res); break;
case 2: int res2=p.Insercion(num, numel);
p.Visualiza(num, numel,OPC,res2); break;
case 3: int res3=p.Quicksort(num, numel);
p.Visualiza(num, numel,OPC,res3); break;
case 4: int res4=p.Shell(num, numel);
p.Visualiza(num, numel,OPC,res4); break;
case 5: int res5=p.Seleccion(num, numel);
p.Visualiza(num, numel,OPC,res5); break;
case 6: int res6=p.Sacudida(num,numel);
p.Visualiza(num, numel,OPC,res6); break;
}
gotoxy(25,18);
cout<<"Desea volver a introducir datos (s/n): ";
cin>>salir;
}while(salir!='n');
system("cls");
}
void Busquedas(void)
{
BUSQUEDA b;
int numel, opc,clave;
char OPC;
int *num=NULL;
do{
system("cls");
gotoxy(19,12); cout<<"Numero de elementos: ";
cin>>numel;
if(numel == 0){
cout<<"\n\t\t Numero no valido";
getch();
exit(1);
}
opc = b.MenuMain();
if(opc == 3){
exit(1);
}
b.Pedir(num, numel);
switch(opc){
case 1: system("cls");
gotoxy(25,5);
cout<<"Numero a buscar: ";
cin>>clave;
int res1=b.BusquedaLineal(num,numel,clave);
if(res1==-1){
gotoxy(25,6);
cout<<"El Numero no se encontro en la lista.";
getch();
}
else{
gotoxy(25,6);
cout<<"El Numero si se encontro en la ubicacion del indice: "<<res1+1;
getch();
}
break;
case 2: system("cls");
gotoxy(25,5);
cout<<"Numero a buscar: ";
cin>>clave;
int res2=b.BusquedaBinaria(num,numel,clave);
if(res2==-1){
gotoxy(25,8);
cout<<"El Numero no se encontro en la lista.";
getch();
}
else{
gotoxy(25,8);
cout<<"El numero si se encontro en la ubicacion del indice: "<<res2+1;
getch();
}
break;
}
gotoxy(25,13);
cout<<"Desea Introducir mas datos (s/n): ";
cin>>OPC;
}while(OPC!='n');
system("cls");
}
int main(void)
{
int opc;
system("cls");
gotoxy(30,8); cout<<"Ordenacion y Busqueda.";
gotoxy(30,10); cout<<"1. Tipos de Ordenaciones.";
gotoxy(30,11); cout<<"2. Tipos de Busqueda.";
gotoxy(30,12); cout<<"3. Salir.";
gotoxy(30,14); cout<<"Opcion -> ";
cin>>opc;
switch(opc){
case 1: Ordenaciones();
break;
case 2: Busquedas();
break;
case 3: exit(0);
system("cls");
break;
}
return 0;
}
//El programa fue compilado con Turbo C++ 3.0
//Descripcion de BUSQUEDA.CPP
//Los metodos de ordenacion que se desarrollaron son:
//Shell, Burbuja, Insercion, Sacudida,Seleccion y el Quicksort
//Nota.- El Quicksort se elaboro recursivamente e iterativamente.
//Los metodos de busqueda que se programaron fueron:
//Busqueda lineal y Busqueda Binaria.
//para que estos metodos funciones correctamente la lista debe estar ordenada.
#include <iostream.h>//para cout y cin
#include <conio.h> //para getch
#include <stdlib.h> //para exit y system
#define NUMEL 50
class BUSQUEDA{
private:
int izquierda,derecha,puntomedio,max,nums[NUMEL];
int elemento,ubicacion,ubicacion2,i;
public:
BusquedaBinaria(int[],int,int);
BusquedaLineal(int[],int,int);
MenuMain(void);
void Pedir(int *,int);
};
class ORDENACION{
private:
int min,indicemin,temp,movimientos;
int i,j,mitad,x;
int inter,opc;
int a[5];
OrdRap(int*,int,int);
void qs(int *,int,int);
public:
void Quicksort_Iterativo(int[],int);
Quicksort(int*,int);
Seleccion(int*,int);
Burbuja(int*,int);
Shell(int*,int);
Sacudida(int*,int);
Insercion(int*,int);
void Pedir(int*,int);
void Visualiza(int*,int,int,int);
Elementos();
MenuMain(void);
Menu_Asc_Des(void);
};
int ORDENACION::Quicksort(int *num,int numel)
{
int mov=OrdRap(num,0,numel-1);
return mov;
}
ORDENACION::OrdRap(int *num,int inf,int sup)
{
register int izq,der;
movimientos=0;
izq=inf; der=sup;
mitad=num[(izq+der)/2];
do{
while(num[izq]<mitad && izq < sup) izq++; movimientos++;
while(mitad<num[der] && der > inf) der--; movimientos++;
if(izq<=der){
x=num[izq],num[izq]=num[der],num[der]=x;
izq++; der--; movimientos++;
}
}while(izq<=der);
if(inf<der) OrdRap(num,inf,der);
if(izq<sup) OrdRap(num,izq,sup);
return movimientos;
}
void ORDENACION::Quicksort_Iterativo(int *num,int numel)
{
qs(num,0,numel-1);
}
void ORDENACION::qs(int *num,int inf,int sup)
{
struct TipoPila{
int inf,sup;
}Pila[NUMEL];
register int izq,der;
int mitad,x,p;
p=1,Pila[p].inf=inf,Pila[p].sup=sup;
do{
inf=Pila[p].inf,sup=Pila[p].sup,p--;
do{
izq=inf; der=sup;
mitad=num[(izq/der)/2];
do{
while(num[izq] < mitad && izq < sup) izq++;
while(mitad < num[der] && der > inf) der--;
if(izq<=der){
x=num[izq],num[izq]=num[der],num[der]=x;
izq++; der--;
}
}while(izq<=der);
if(izq<sup){
p++,Pila[p].inf=izq,Pila[p].sup=sup;
}
sup=der;
}while(inf<der);
}while(p);
}
ORDENACION::Insercion(int *num,int numel)
{
movimientos=0;
for(i=1;i<numel;++i){
temp=num[i];
for(j=i-1;(j>=0)&&(temp<num[j]);j--)
num[j+1]=num[j];
num[j+1]=temp;
movimientos++;
}
return movimientos;
}
ORDENACION::Shell(int *num,int numel)
{
movimientos=0;
a[0]=9;a[1]=5;a[2]=3;a[3]=2;a[4]=1;
for(register int k=0;k<5;k++){
temp=a[k];
for(i=temp;i<numel;++i){
x=num[i];
for(j=i-temp;(x<num[j])&&(j>=0);j=j-temp)
num[j+temp]=num[j];
num[j+temp]=x;
}
movimientos++;
}
return movimientos;
}
ORDENACION::Sacudida(int *num,int numel)
{
movimientos=0;
do{
inter=0;
for(i=numel-1;i>0;--i){
if(num[i-1]>num[i]){
temp=num[i-1];
num[i-1]=num[i];
num[i]=temp;
inter=1;
movimientos++;
}
}
for(i=1;i<numel;++i){
if(num[i-1]>num[i]){
temp=num[i-1];
num[i-1]=num[i];
num[i]=temp;
inter=1;
movimientos++;
}
}
}while(inter);
return movimientos;
}
ORDENACION::Seleccion(int *num,int numel)
{
movimientos=0;
for(i=0;i<(numel-1);i++){
min=num[i];
indicemin=i;
for(j=i+1;j<numel;++j){
if(num[j]<min){
min=num[j];
indicemin=j;
}
}
if(min<num[i]){
temp=num[i];
num[i]=min;
num[indicemin]=temp;
movimientos++;
}
}
return movimientos;
}
ORDENACION::Burbuja(int *num,int numel)
{
movimientos=0;
for(i=0;i<numel-1;i++){
for(j=1;j<numel;j++){
if(num[j]<num[j-1]){
temp=num[j];
num[j]=num[j-1];
num[j-1]=temp;
movimientos++;
}
}
}
return movimientos;
}
int BUSQUEDA::MenuMain(void)
{
int opc;
while(opc<1 || opc > 3){
system("cls");
gotoxy(29,9);
cout<<"METODOS DE BUSQUEDA.";
gotoxy(32,10); cout<<"1. Busqueda Lineal.";
gotoxy(32,11); cout<<"2. Busqueda Binaria.";
gotoxy(32,12); cout<<"3. Salir.";
gotoxy(32,14); cout<<"opcion-> ";
cin>>opc;
}
return opc;
}
int ORDENACION::MenuMain(void)
{
int opc;
while(opc < 1 || opc > 7)
{
system("cls");
gotoxy(29,9); cout<<"METODOS DE ORDENACION\n";
gotoxy(33,10); cout<<"1. Burbuja";
gotoxy(33,11); cout<<"2. Insercion";
gotoxy(33,12); cout<<"3. Quicksort";
gotoxy(33,13); cout<<"4. Shell";
gotoxy(33,14); cout<<"5. Seleccion";
gotoxy(33,15); cout<<"6. Sacudida";
gotoxy(33,16); cout<<"7. Salir.";
gotoxy(33,18); cout<<"Opcion-> ";
cin>>opc;
}
return opc;
}
void BUSQUEDA::Pedir(int *num,int n)
{
int i;
system("cls");
for(i = 0; i < n; i++)
{
gotoxy(22, i + 1);
cout<<"Ingresa valor "<<i+1<<": ";
cin>>num[i];
}
}
void ORDENACION::Pedir(int *num,int n)
{
system("cls");
for(i = 0; i < n; i++)
{
gotoxy(22, i + 1);
cout<<"Ingresa valor "<<i+1<<": ";
cin>>num[i];
}
}
int ORDENACION::Menu_Asc_Des(void)
{
int opc;
while(opc < 1 || opc > 2){
system("cls");
gotoxy(29,9); cout<<"METODOS DE ORDENACION\n";
gotoxy(33,10); cout<<"1. Ascendente\n";
gotoxy(33,11); cout<<"2. Descendente\n";
gotoxy(33,12); cout<<"Opcion: ";
cin>>opc;
}
return(opc);
}
BUSQUEDA::BusquedaBinaria(int lista[],int tamanho,int clave)
{
izquierda=0;
derecha=tamanho-1;
while(izquierda<=derecha)
{
puntomedio=((izquierda+derecha)/2);
if(clave==lista[puntomedio])
{
return puntomedio;
}
else if (clave>lista[puntomedio])
izquierda=puntomedio+1;
else
derecha=puntomedio-1;
}
return -1;
}
BUSQUEDA::BusquedaLineal(int lista[],int tamanho,int clave)
{
for(register int i=0;i<tamanho;i++)
{
if(lista[i]==clave)
return i;
}
return -1;
}
void ORDENACION::Visualiza(int *num, int numel,int opc,int mov)
{
if(numel >= 40) x = 1;
else x = 40 - numel;
do{
if(opc==1){
system("cls");
gotoxy(x-14,11); cout<<"Los movimientos que se hicieron son: ";
cout<<mov;
gotoxy(x-14,12); cout<<"Los Numeros Ordenados Ascendentemente son : ";
gotoxy(x,15);
for(i = 0; i<numel; i++)
cout<<num[i]<<" ";
getch();
}
if(opc==2){
system("cls");
gotoxy(x-14,11); cout<<"Los movimientos que se hicieron son: ";
cout<<mov;
gotoxy(x-14,12); cout<<"Los Numeros Ordenados Descendentemente son : "<<endl;
gotoxy(x,14);
for(int j = numel; j>0; j--)
cout<<num[j-1]<<" ";
getch();
}
}while(opc<1||opc>2);
}
void Ordenaciones(void)
{
int numel, opc,OPC;
char salir;
int num[NUMEL]={0};
ORDENACION p;
do{
system("cls");
gotoxy(19,12);
cout<<"Numero de elementos: ";
cin>>numel;
if(numel == 0){
cout<<"\n\t\t Numero no valido";
getch();
exit(1);
}
opc = p.MenuMain();
if(opc == 7){
exit(1);
}
p.Pedir(num, numel);
OPC=p.Menu_Asc_Des();
switch(opc)
{
case 1: int res=p.Burbuja(num, numel);
p.Visualiza(num, numel,OPC,res); break;
case 2: int res2=p.Insercion(num, numel);
p.Visualiza(num, numel,OPC,res2); break;
case 3: int res3=p.Quicksort(num, numel);
p.Visualiza(num, numel,OPC,res3); break;
case 4: int res4=p.Shell(num, numel);
p.Visualiza(num, numel,OPC,res4); break;
case 5: int res5=p.Seleccion(num, numel);
p.Visualiza(num, numel,OPC,res5); break;
case 6: int res6=p.Sacudida(num,numel);
p.Visualiza(num, numel,OPC,res6); break;
}
gotoxy(25,18);
cout<<"Desea volver a introducir datos (s/n): ";
cin>>salir;
}while(salir!='n');
system("cls");
}
void Busquedas(void)
{
BUSQUEDA b;
int numel, opc,clave;
char OPC;
int *num=NULL;
do{
system("cls");
gotoxy(19,12); cout<<"Numero de elementos: ";
cin>>numel;
if(numel == 0){
cout<<"\n\t\t Numero no valido";
getch();
exit(1);
}
opc = b.MenuMain();
if(opc == 3){
exit(1);
}
b.Pedir(num, numel);
switch(opc){
case 1: system("cls");
gotoxy(25,5);
cout<<"Numero a buscar: ";
cin>>clave;
int res1=b.BusquedaLineal(num,numel,clave);
if(res1==-1){
gotoxy(25,6);
cout<<"El Numero no se encontro en la lista.";
getch();
}
else{
gotoxy(25,6);
cout<<"El Numero si se encontro en la ubicacion del indice: "<<res1+1;
getch();
}
break;
case 2: system("cls");
gotoxy(25,5);
cout<<"Numero a buscar: ";
cin>>clave;
int res2=b.BusquedaBinaria(num,numel,clave);
if(res2==-1){
gotoxy(25,8);
cout<<"El Numero no se encontro en la lista.";
getch();
}
else{
gotoxy(25,8);
cout<<"El numero si se encontro en la ubicacion del indice: "<<res2+1;
getch();
}
break;
}
gotoxy(25,13);
cout<<"Desea Introducir mas datos (s/n): ";
cin>>OPC;
}while(OPC!='n');
system("cls");
}
int main(void)
{
int opc;
system("cls");
gotoxy(30,8); cout<<"Ordenacion y Busqueda.";
gotoxy(30,10); cout<<"1. Tipos de Ordenaciones.";
gotoxy(30,11); cout<<"2. Tipos de Busqueda.";
gotoxy(30,12); cout<<"3. Salir.";
gotoxy(30,14); cout<<"Opcion -> ";
cin>>opc;
switch(opc){
case 1: Ordenaciones();
break;
case 2: Busquedas();
break;
case 3: exit(0);
system("cls");
break;
}
return 0;
}
Todo codigos
Suscribirse a:
Entradas (Atom)