C4 - Ricardo Salcedo, UCCI - Entornos de Aprendizaje Basados en Simulación Interactiva
jueves, 26 de noviembre de 2009
VIII Congreso de la Sociedad Peruana de Computación 24/11/2009
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;i void copiar(vector origen,vector destino)
{ int i;
for(i=0;i }
#include
#include
#include
#include
#include
#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
return -1;
else
{ mitad=(prim+ult)/2;
if(arreglo[mitad]==clave)
return mitad;
else
{ if (clave
tinicio=clock(); //activando el inicio del reloj
cout<< "\n No recursivo - Su valor se encuentra en arreglo["<
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 "<
}
//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
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;i
{ int i;
for(i=0;i
Suscribirse a:
Entradas (Atom)
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...
-
C2 - Pablo Barcelo, UChile - Semantic associations via Regular Relations: Extending Conjunctive Regular Path Queries
-
¿QUÉ ENTENDEMOS POR NACIÓN? Una “nación cultural” es un grupo de personas que viven y se desarrollan en un medio geográfico compartiendo co...
-
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...