Convierte un número en base decimal a otro que esta en en base de 2 a 16
#include "stdafx.h"
#include "iostream"
using namespace std;
char tablaDigitos[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
void imprimirEntero(int n,int base)
{
if(n>=base)
imprimirEntero(n/base,base);
cout<<tablaDigitos[n%base];
}
void main()
{
int n,base;
char rpta='n';
do{
system("cls"); //Limpia la pantalla
cout<<"CONVERSION DE BASE 10 A OTRAS BASES"<<endl;
do{
cout<<endl<<"Numero >=0: ";cin>>n;
}while(n<0);
do{
cout<<endl<<"Base (de dos a 16): ";cin>>base;
}while(base<2 || base>16);
cout<<endl<<n<<" en base "<<base<<" es ";imprimirEntero(n,base);
cout<<endl<<endl<<"Desea ingresar otro numero? (s/n)\t";cin>>rpta;
}while(rpta !='n');
}
Mostrando entradas con la etiqueta Recursividad. Mostrar todas las entradas
Mostrando entradas con la etiqueta Recursividad. Mostrar todas las entradas
viernes, 16 de septiembre de 2011
Combinatoria
Combinatoria sin repetición:

n = total de elementos
p = número de elementos a extraer
El algoritmo simula esta formula
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
double combinatoria(float n,float np, float p)
{
if(np==0)np=1;
if(p==0)p=1;
if(n==1)
return 1;
else
return combinatoria(n-1,np-1,p-1) * (n/(np*p));
}
void main()
{
double n,p;
do{
cout<<"Total de objetos (mas de 3): ";cin>>n;
}while(n<3);
do{
cout<<endl<<"Cantidad que quiere extraer: ";cin>>p;
}while(p>n || p<=0);
cout<<endl<<"Formas de extraccion: "<<combinatoria(n,n-p,p);
_getch();
}
n = total de elementos
p = número de elementos a extraer
El algoritmo simula esta formula
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
double combinatoria(float n,float np, float p)
{
if(np==0)np=1;
if(p==0)p=1;
if(n==1)
return 1;
else
return combinatoria(n-1,np-1,p-1) * (n/(np*p));
}
void main()
{
double n,p;
do{
cout<<"Total de objetos (mas de 3): ";cin>>n;
}while(n<3);
do{
cout<<endl<<"Cantidad que quiere extraer: ";cin>>p;
}while(p>n || p<=0);
cout<<endl<<"Formas de extraccion: "<<combinatoria(n,n-p,p);
_getch();
}
Invertir cadena de caracteres
Invierte una parte o todo de una cadena de caracteres.
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
void invertirCadena(char *cad,int i,int j)
{
if(i<j)
{
char temp=cad[i];
cad[i]=cad[j];
cad[j]=temp;
invertirCadena(cad,i+1,j-1);
}
}
void main()
{
char cad[100];
cout<<"Ingrese una cadena (sin espacios): ";cin>>cad;
invertirCadena(cad,0,strlen(cad)-1);//Parametros (Límite inferior,Límite superior), strlen extrae el tamaño de la cadena
cout<<endl<<"Cadena invertida: "<<cad;
_getch();
}
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
void invertirCadena(char *cad,int i,int j)
{
if(i<j)
{
char temp=cad[i];
cad[i]=cad[j];
cad[j]=temp;
invertirCadena(cad,i+1,j-1);
}
}
void main()
{
char cad[100];
cout<<"Ingrese una cadena (sin espacios): ";cin>>cad;
invertirCadena(cad,0,strlen(cad)-1);//Parametros (Límite inferior,Límite superior), strlen extrae el tamaño de la cadena
cout<<endl<<"Cadena invertida: "<<cad;
_getch();
}
Maximo elemento de un vector
Halla el máximo elemento de un vector
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
int maximo(int *V,int n,int max)
{
if(V[n]>max)
max=V[n];
return(n==0)?max:maximo(n-1,max); //Sentencia que equivale a un if
}
void main()
{
int n,max;
cout<<"Numero de elementos: ";cin>>n;
int *V = new int [n];
cout<<endl;
for(int i=0;i<n;i++)
{
cout<<"V["<<i+1<<"] = ";
cin>>V[i];
}
cout<<endl<<"El maximo elemento es "<<maximo(V,n,-99999);//(Vector,Numero elementos, un número muy pequeño)
_getch();
}
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
int maximo(int *V,int n,int max)
{
if(V[n]>max)
max=V[n];
return(n==0)?max:maximo(n-1,max); //Sentencia que equivale a un if
}
void main()
{
int n,max;
cout<<"Numero de elementos: ";cin>>n;
int *V = new int [n];
cout<<endl;
for(int i=0;i<n;i++)
{
cout<<"V["<<i+1<<"] = ";
cin>>V[i];
}
cout<<endl<<"El maximo elemento es "<<maximo(V,n,-99999);//(Vector,Numero elementos, un número muy pequeño)
_getch();
}
MCD por Euclides
El algoritmo de Euclides es un método antiguo y eficaz para calcular el máximo común divisor (MCD).

Vemos que el orden de los números no importa. El algoritmo simula este método
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
int euclides(int x,int y)
{
if(y==0)
return x;
else
euclides(y,x%y);
}
void main()
{
int x,y;
cout<<"Primer numero: ";cin>>x;
cout<<"Segundo numero: ";cin>>y;
int mcd = euclides(x,y);
cout<<"MCD: "<<mcd<<endl;
cout<<"MCM: "<<x*y/mcd<<endl;
_getch();
}
Vemos que el orden de los números no importa. El algoritmo simula este método
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
int euclides(int x,int y)
{
if(y==0)
return x;
else
euclides(y,x%y);
}
void main()
{
int x,y;
cout<<"Primer numero: ";cin>>x;
cout<<"Segundo numero: ";cin>>y;
int mcd = euclides(x,y);
cout<<"MCD: "<<mcd<<endl;
cout<<"MCM: "<<x*y/mcd<<endl;
_getch();
}
Numeros de fibonacci
Muestra todos los números de fibonacci anteriores a N
#include "stdafx.h"
#include "conio.h"
#include "iostream"
using namespace std;
void fibonacci(int i, int j, int n)
{
if (i+j<=n)
{
cout<<i+j<<endl;
fibonacci(j,i+j,n);
}
}
void main()
{
int n;
cout<<"Mostrar números de fibonacci anteriores a n"<<endl<<endl;
cout<<"Ingrese n: ";cin>>n;
cout<<0<<endl<<1<<endl;
fibonacci(0,1,n);
_getch();
}
#include "stdafx.h"
#include "conio.h"
#include "iostream"
using namespace std;
void fibonacci(int i, int j, int n)
{
if (i+j<=n)
{
cout<<i+j<<endl;
fibonacci(j,i+j,n);
}
}
void main()
{
int n;
cout<<"Mostrar números de fibonacci anteriores a n"<<endl<<endl;
cout<<"Ingrese n: ";cin>>n;
cout<<0<<endl<<1<<endl;
fibonacci(0,1,n);
_getch();
}
Producto de cifras de un numero
Obtiene el producto de las cifras de un número
#include "stdafx.h"
#include "conio.h"
#include "iostream"
using namespace std;
int producto(int n)
{
if (n<10)
return n;
else
return producto(n/10)*(n%10);
}
void main()
{
int n,multi;
do{
cout<<"Ingrese numero (minimo de 2 cifras): ";cin>>n;
}while(n<10);
cout<<"Producto de las Cifras de "<<n<<" = "<<producto(n);
_getch();
}
#include "stdafx.h"
#include "conio.h"
#include "iostream"
using namespace std;
int producto(int n)
{
if (n<10)
return n;
else
return producto(n/10)*(n%10);
}
void main()
{
int n,multi;
do{
cout<<"Ingrese numero (minimo de 2 cifras): ";cin>>n;
}while(n<10);
cout<<"Producto de las Cifras de "<<n<<" = "<<producto(n);
_getch();
}
Bubble Sort recursivo
Versión recursiva del método de Bubble Sort
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
int n;
void intercambio(int vector[],int i,int j)
{
int temp;
temp=vector[i];
vector[i]=vector[j];
vector[j]=temp;
}
void bubbleSortRecursivo(int vector[],int index1,int index2)
{
if(index1<n-1)
{
if(index2<n)
{
if(vector[index1]>vector[index2])
intercambio(vector,index1,index2);
bubbleSortRecursivo(vector,index1,index2+1);
}
else
bubbleSortRecursivo(vector,index1+1,index1+2);
}
}
void mostrarVector(int vector[])
{
for(int i=0;i<n;i++)
cout<<"V["<<i+1<<"] = "<<vector[i]<<endl;
}
void main()
{
cout<<"Ingrese numero de elementos: ";cin>>n;
int *V = new int [n];
cout<<endl;
for(int i=0;i<n;i++)
{
cout<<"V["<<i+1<<"] = ";
cin>>V[i];
}
bubbleSortRecursivo(V,0,1);
cout<<endl<<"Vector ordenado: "<<endl<<endl;
mostrarVector(V);
_getch();
}
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
int n;
void intercambio(int vector[],int i,int j)
{
int temp;
temp=vector[i];
vector[i]=vector[j];
vector[j]=temp;
}
void bubbleSortRecursivo(int vector[],int index1,int index2)
{
if(index1<n-1)
{
if(index2<n)
{
if(vector[index1]>vector[index2])
intercambio(vector,index1,index2);
bubbleSortRecursivo(vector,index1,index2+1);
}
else
bubbleSortRecursivo(vector,index1+1,index1+2);
}
}
void mostrarVector(int vector[])
{
for(int i=0;i<n;i++)
cout<<"V["<<i+1<<"] = "<<vector[i]<<endl;
}
void main()
{
cout<<"Ingrese numero de elementos: ";cin>>n;
int *V = new int [n];
cout<<endl;
for(int i=0;i<n;i++)
{
cout<<"V["<<i+1<<"] = ";
cin>>V[i];
}
bubbleSortRecursivo(V,0,1);
cout<<endl<<"Vector ordenado: "<<endl<<endl;
mostrarVector(V);
_getch();
}
martes, 13 de septiembre de 2011
Factorial de un numero
Halla el factorial de un número
#include "stdafx.h"
#include "iostream"
using namespace std;
long factorial(int n)
{
if(n==0)
return 1;
else
return factorial(n-1)*n;
}
void main()
{
int n;
char rpta='n';
do{
system("cls");//Limpia la pantalla
do{
cout<<"Ingrese numero: ";cin>>n;
}while(n<0);
cout<<endl<<"Factorial de "<<n<<" = "<<factorial(n)<<endl;
cout<<"Desea realizar otro calculo (s/n)?\t";cin>>rpta;
}while(rpta!='n');
}
#include "stdafx.h"
#include "iostream"
using namespace std;
long factorial(int n)
{
if(n==0)
return 1;
else
return factorial(n-1)*n;
}
void main()
{
int n;
char rpta='n';
do{
system("cls");//Limpia la pantalla
do{
cout<<"Ingrese numero: ";cin>>n;
}while(n<0);
cout<<endl<<"Factorial de "<<n<<" = "<<factorial(n)<<endl;
cout<<"Desea realizar otro calculo (s/n)?\t";cin>>rpta;
}while(rpta!='n');
}
Suscribirse a:
Entradas (Atom)