Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Combinacion con recursividad

Estas en el tema de Combinacion con recursividad en el foro de C/C++ en Foros del Web. Hola, tengo que resolver el siguiente ejecicio y no se como hacerlo.. El ejercicio es el siguiente: Use recursividad para escribir un programa que encuentre ...
  #1 (permalink)  
Antiguo 04/01/2008, 15:15
 
Fecha de Ingreso: enero-2008
Mensajes: 4
Antigüedad: 16 años, 4 meses
Puntos: 0
Pregunta Combinacion con recursividad

Hola, tengo que resolver el siguiente ejecicio y no se como hacerlo..
El ejercicio es el siguiente:
Use recursividad para escribir un programa que encuentre todas las
combinaciones de suma, resta, multiplicación y división posibles desde el
número 1 hasta el 9 en este orden, que dan un resultado de 100. Por
ejemplo:

(+1+2+3+4+5)*6-7+8+9

Alguien puede ayudarme??
  #2 (permalink)  
Antiguo 04/01/2008, 22:08
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 10 meses
Puntos: 24
Re: Combinacion con recursividad

¿Que es lo que tu has intentado?
¿En que parte te has trabado?
  #3 (permalink)  
Antiguo 08/01/2008, 12:25
 
Fecha de Ingreso: enero-2008
Mensajes: 4
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Combinacion con recursividad

Bueno, gracias por responder..
Yo lo hice en Java, pero tengo problemas al cambiarme a c++ porque no lo se utilizar muy bien que se diga, tengo problemas con las cadenas de caracteres, si me puedes ayudar a pasarlo de Java a C++, estaría muy agradecida..

el programa hecho en Java es el siguiente:

public class Primero //clase principal
{
public static void main(String[] args)
{
Com("1",1);
}
public static int Imprimir(char[]v)// mostrar resultados
{
int tot=1;
int aux1=1;
for(int k=0; k<5; k++)
{
if((k%2)==0)
aux1=aux1+1;
else
{
if(v[k]=='+')
tot=tot+(aux1);
else
{
if(v[k]=='-')
tot=tot-(aux1);
else
{
if(v[k]=='*')
tot=tot*(aux1);
else
{
if(v[k]=='/')
tot=tot/(aux1);
}
}
}
}
}
int aux=4, count=0;
for(int j=5; j<17; j++)
{
if((j%2)==0)
aux=j;
else
{
if(v[j]=='+')
{
tot=tot+(aux-count);
count++;
}
else
{
if(v[j]=='-')
{
tot=tot-(aux-count);
count++;
}
else
{
if(v[j]=='*')
{
tot=tot*(aux-count);
count++;
}
else
{
if(v[j]=='/')
{
tot=tot/(aux-count);
count++;
}
}
}
}
}
}
return tot;
}
public static String Com(String uni,int N)//método recursivo
{
if(N==9)
return uni;
else
{
String a=uni;
String b=uni;
String c=uni;
uni=uni+"+"+(N+1);
a= a + "-" + (N+1);
b= b + "*" + (N+1);
c= c + "/" + (N+1);
if (a.length()==17)
{
int tot=0, t;
char v[]=new char[17];
for(int j=0; j<17; j++)
v[j]=a.charAt(j);
t=Imprimir(v);
if(t==100)
System.out.println(a);
}
if (b.length()==17)
{
int tot=0, i=0, t;
char v[]=new char[17];
for(int j=0; j<17; j++)
v[j]=b.charAt(j);
t=Imprimir(v);
if(t==100)
System.out.println(b);
}
if (c.length()==17)
{
int tot=0, i=0, t;
char v[]=new char[17];
for(int j=0; j<17; j++)
v[j]=c.charAt(j);
t=Imprimir(v);
if(t==100)
System.out.println(c);
}
if (uni.length()==17)
{
int tot=0, i=0, t;
char v[]=new char[17];
for(int j=0; j<17; j++)
v[j]=uni.charAt(j);
t=Imprimir(v);
if(t==100)
System.out.println(uni);
}
Com(uni,N+1);
Com(a,N+1);
Com(b,N+1);
Com(c,N+1);
return uni;
}
}
}
  #4 (permalink)  
Antiguo 09/01/2008, 12:03
 
Fecha de Ingreso: enero-2008
Mensajes: 1
Antigüedad: 16 años, 4 meses
Puntos: 0
hola

a mi tambien me interesa resolver este algoritmo.
te ayudaron con la version en C++ ????
me avisas si me puedes ayudar de alguna forma.
saludos
miguel
Ecuador
[email protected]


Cita:
Iniciado por msilva Ver Mensaje
Bueno, gracias por responder..
Yo lo hice en Java, pero tengo problemas al cambiarme a c++ porque no lo se utilizar muy bien que se diga, tengo problemas con las cadenas de caracteres, si me puedes ayudar a pasarlo de Java a C++, estaría muy agradecida..

el programa hecho en Java es el siguiente:

public class Primero //clase principal
{
public static void main(String[] args)
{
Com("1",1);
}
public static int Imprimir(char[]v)// mostrar resultados
{
int tot=1;
int aux1=1;
for(int k=0; k<5; k++)
{
if((k%2)==0)
aux1=aux1+1;
else
{
if(v[k]=='+')
tot=tot+(aux1);
else
{
if(v[k]=='-')
tot=tot-(aux1);
else
{
if(v[k]=='*')
tot=tot*(aux1);
else
{
if(v[k]=='/')
tot=tot/(aux1);
}
}
}
}
}
int aux=4, count=0;
for(int j=5; j<17; j++)
{
if((j%2)==0)
aux=j;
else
{
if(v[j]=='+')
{
tot=tot+(aux-count);
count++;
}
else
{
if(v[j]=='-')
{
tot=tot-(aux-count);
count++;
}
else
{
if(v[j]=='*')
{
tot=tot*(aux-count);
count++;
}
else
{
if(v[j]=='/')
{
tot=tot/(aux-count);
count++;
}
}
}
}
}
}
return tot;
}
public static String Com(String uni,int N)//método recursivo
{
if(N==9)
return uni;
else
{
String a=uni;
String b=uni;
String c=uni;
uni=uni+"+"+(N+1);
a= a + "-" + (N+1);
b= b + "*" + (N+1);
c= c + "/" + (N+1);
if (a.length()==17)
{
int tot=0, t;
char v[]=new char[17];
for(int j=0; j<17; j++)
v[j]=a.charAt(j);
t=Imprimir(v);
if(t==100)
System.out.println(a);
}
if (b.length()==17)
{
int tot=0, i=0, t;
char v[]=new char[17];
for(int j=0; j<17; j++)
v[j]=b.charAt(j);
t=Imprimir(v);
if(t==100)
System.out.println(b);
}
if (c.length()==17)
{
int tot=0, i=0, t;
char v[]=new char[17];
for(int j=0; j<17; j++)
v[j]=c.charAt(j);
t=Imprimir(v);
if(t==100)
System.out.println(c);
}
if (uni.length()==17)
{
int tot=0, i=0, t;
char v[]=new char[17];
for(int j=0; j<17; j++)
v[j]=uni.charAt(j);
t=Imprimir(v);
if(t==100)
System.out.println(uni);
}
Com(uni,N+1);
Com(a,N+1);
Com(b,N+1);
Com(c,N+1);
return uni;
}
}
}
  #5 (permalink)  
Antiguo 10/01/2008, 07:59
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: Combinacion con recursividad

¿Y exactamente cuál es la parte en la que tienes problemas?

Debes estar pendiente donde haces esto:

Código:
...
a= a + "-" + (N+1);
...
Ya que N+1 es un entero y en C++ debes hacer la conversión respectiva a string antes de concatenarlo. Aparte de eso la mayoría de las cosas son bastante simples de hacer.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #6 (permalink)  
Antiguo 10/01/2008, 11:49
 
Fecha de Ingreso: enero-2008
Mensajes: 4
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Combinacion con recursividad

entonces, como hago la conversión de entero a string en c++??
  #7 (permalink)  
Antiguo 10/01/2008, 12:36
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: Combinacion con recursividad

Google es tu amigo, no le tengas miedo.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:29.