martes, 10 de noviembre de 2009

Análisis y Diseño de Algoritmos

//Busqueda binaria c++ por Julio Anchiraico Trujillo

#include
#include
#include
#include //tiene la definicion de la funcion RAND (random)
#include //para el reloj
#define MAX 10000

void mostrarArreglo(int[], int); //prototipo de funcion que recibe un arreglo constante
void ordenarArreglo(int[], int); //prototipo que modifica y ordena el arreglo
void intercambiar(int&, int&); //prototipo, intercambia los valores de dos elementos

int busquedaBinaria(int arreglo[], int prim, int ult, int clave)
{ int mitad;
while (prim<=ult) { mitad=(prim+ult)/2; if(arreglo[mitad]==clave) return mitad; else { if (clave=ult)
return -1;
else
{ mitad=(prim+ult)/2;
if(arreglo[mitad]==clave)
return mitad;
else
{ if (clave> clave;

tinicio=clock(); //activando el inicio del reloj
cout<< "\n No recursivo - Su valor se encuentra en arreglo["< arreglo[j+1])
intercambiar(arreglo[j],arreglo[j+1]);
}
void intercambiar(int &a, int &b)
{ int tmp = b;
b = a;
a = tmp;
}


//Serie de Fibonacci c++

#include
#include
#include
long fibo(long num)
{ if(num==0 num==1)
{ return num;}
else
{ return fibo(num-1) + fibo(num-2); }
}

long fibo2(long num)
{ long n1,n2,n3,i;
if(num==0 num==1)
{ return num;}
else
{ n1=0;
n2=1;
for(i=2;i<=num;i++) { n3=n1+n2; n1=n2; n2=n3; } return n3; } } void main() { long numf1,numf2,numero; double ttrans,ttrans1; cout<<"ingrese el numero de termino fibonacci: \n"; cin>>numero;
clock_t tinicio;
tinicio=clock(); //activando el inicio del reloj
numf1=fibo(numero);
ttrans=(clock()-tinicio)/(double)CLOCKS_PER_SEC;

tinicio=clock(); //activando el inicio del reloj
numf2=fibo2(numero);
ttrans1=(clock()-tinicio)/(double)CLOCKS_PER_SEC;

cout<<"el termino numero "<cout<<"y toma un tiempo de "<cout<<"el termino numero "<cout<<"y toma un tiempo de "<getch();
}



//Multiplicación de enteros largos c++

#include
#define MAX 100
//#define max 4
//#define maxR 2*max
using namespace std;
typedef int vector[MAX];
void escribirNumero(int n1[],int n);
void resta(int x[],int y[],int r[]);
void suma(int x[],int y[],int r[]);
int longNumero(int x[]);
void desplazar(int x[],int espacios);
int longMinino(int x[],int y[]);
void ceros(int x[]);
void producto(int x[],int y[],int r[]);
void copiar(int origen[],int destino[]);
int maxR;
int main(int argc,char *argv[] )
{
int i,num1[MAX],num2[MAX],r[MAX],n;
cout<<"\n Ingrese cantidad de digitos: "; cin>>maxR;
//maxR=maxR*2;
cout<<"Primer digito: \n"; for (i=0;i<=maxR-1;i++) cin>>num1[i];
cout<<"Segundo digito: \n"; for (i=0;i<=maxR-1;i++) cin>>num2[i];
for (i=0;i<=maxR-1;i++) r[i]=0; n=longMinino(num1,num2); cout<<"Primer numero:\n"; escribirNumero(num1,n); cout<<"Segundo numero:\n"; escribirNumero(num2,n); suma(num1,num2,r); cout<<"La suma es:\n";escribirNumero(r,longNumero(r)); resta(num1,num2,r); cout<<"La resta es:\n";escribirNumero(r,n); producto(num1,num2,r); cout<<"El producto es:\n";escribirNumero(r,longNumero(r)); system("PAUSE"); return EXIT_SUCCESS; } void escribirNumero(vector x,int n) { int i; for(i=maxR-n;i=0;i--){
if (x[i]>=y[i]+a){
r[j]=x[i]-y[i]-a;
a=0;
}
else{
r[j]=x[i]+2-y[i]-a;
a=1;
}
j--;
}
}
void suma(vector x,vector y,vector r){
int i,j,a=0; int n;
n=longMinino(x,y);
ceros(r);
j=maxR-1;
for(i=maxR-1;i>=maxR-n;i--){
r[j]=x[i]+y[i]+a;
if (r[j]>=2){
a=r[j]/2;//calcula acarreo
r[j]=r[j]%2;//halla lo que se queda
}
else a=0;
j--;
}
if(a!=0 && j<0 i="0;" c="1;c<=espacios;c++){" n1cifras="longNumero(x);" n2cifras="longNumero(y);" cifrasmayor="n1Cifras">n2Cifras?n1Cifras:n2Cifras;
n=1;
while(cifrasMayor>n) n=n*2;
return n; }
void producto(vector x,vector y,vector r)
{ int i,j,k; int n1,n2,c;
int parcial[MAX];
int prod[MAX];
ceros(r); ceros(prod);
n1=longNumero(x); n2=longNumero(y);
c=-1;
for(i=maxR-1;i>=maxR-n2;i--){
c=c+1;
if(y[i]!=0){
ceros(parcial);
k=maxR-1;
for(j=maxR-1;j>=maxR-n1;j--){
parcial[k]=y[i]*x[j];
k--;
}
desplazar(parcial,c);
suma(prod,parcial,r);
copiar(r,prod);
}
}
}
void ceros(vector x)
{ int i;
for(i=0;ivoid copiar(vector origen,vector destino)
{ int i;
for(i=0;i}

No hay comentarios:

Publicar un comentario

Instalar Oracle 11g XE en Ubuntu

La instalación de Oracle 11g Express Edition  se ha realizado en una máquina virtual Ubuntu para lo cual se ha utilizado lo siguiente: Virt...