Porfavor, necesito ayuda pasar codigo de Java a C

Iniciado por MiguelYeah, 16 Noviembre 2013, 12:45 PM

0 Miembros y 1 Visitante están viendo este tema.

MiguelYeah

Hola, buenas a todos. Tengo un problema, pues tengo que entregar un ejercicio en C, y no tengo mucha idea. Lo tengo hecho en Java, y acudo por si alguien puede ayudarme. El codigo en cuestion es este:

public class Problema1 {

public static String Base(int n){
String ret;

if(n==0){

ret="Lado";

}else{

ret=(Base(n-1)+ "E" + Base(n-1) + "RR" + Base(n-1) + "E" + Base(n-1));

}

return ret;

}


}


El "codigo" que yo he hecho y que no consigo que compile puesto que tendra mil fallos es:

char Base(int n) {

      char ret;

      if(n==0)

         ret="Lado";

      else

         ret=(Base(n-1)+ "E" + Base(n-1) + "RR" + Base(n-1) + "E" + Base(n-1));



      return ret;

   }

void main(void){

   int n;

   printf("Introduzca el numero de n: \n");

   fflush(stdout);
   fflush(stdin);
   scanf("%d", &n);

   printf(ret);
   fflush(stdout);




Tendria que poner con un test que pida el valor de n por consola. Lo estoy haciendo con Eclipse. Muchas gracias de antemano y a ver si alguien puede ayudarme con este gran dolor de cabeza.

xaps

Acostumbrate a poner el código dentro de contenedores de código. Para ello, cuando escribas un post, veras una lista desplegable dónde pone GeSHi. Si le das click, podrás escoger el lenguaje de programación con el cual has hecho el código para aplicarle el formato correcto.

Una vez hayas hecho esto, publica tu código en C juntamente con el error que te da el compilador y intentaré ayudarte, ya que ahora mismo se me hace imposible con el formato con el que lo has publicado.
"The programmers of tomorrow are the wizards of the future" - Gave Newel

MiguelYeah

Ok, lo siento, es la primera que escribo. Intento hacerlo como me has dicho.

El código en Java que funciona como deberia funcionar es este:
Código (java) [Seleccionar]


public class Problema1{

public static String Base(int n){
String ret;

if(n==0){

ret="Lado";

}else{

ret=(Base(n-1)+ "E" + Base(n-1) + "R" + Base(n-1) + "E" + Base(n-1));

}

return ret;

}


}




Y lo tengo que pasar a C, junto con un test para que muestre por pantalla alguna iteracion(n) que yo le diga por consola. Esto es lo que yo tengo, el cual no da nada:





#include<stdio.h>
char Base(int n) {
char ret;
if(n==0){
ret='Lado';
}else{
ret=(Base(n-1)+ 'E' + Base(n-1) + 'R' + Base(n-1) + 'E' + Base(n-1));
}
return ret;
}
int main() {
int n;
char ret;
printf("Introduzca el valor de n: \n");
fflush(stdout);
fflush(stdin);
scanf("%d", &n);
ret = Base(n);
printf("El resultado en la iteracion %d es : %s\n", n, ret);
fflush(stdout);
}




Espero haberlo hecho bien esta. Muchas gracias por decirme como es. Creo que el error esta en concatenar las cadenas, aunque no lo se porque estoy empezando con C y estoy aun muy verde. Al

Gracias de nuevo, a ver si me puedes echar un cable

xaps

#3
No te preocupes, ahora el formato está perfecto.

No se si estoy en lo cierto, pero para declarar un string has de crear un vector de chars, por lo que deberías cambiar

char ret;

por

char ret[];

ya que, si no le pones los [], se declara como un único char.

Pruébalo y coméntame si te ha servido.

EDITO:

En la línea 6, el string ponlo con comillas dobles, ya que comillas simples suelen representar un char, y las dobles un string. Lo mismo para la línea 8.
"The programmers of tomorrow are the wizards of the future" - Gave Newel

ivancea96

Aportandoalgo más, para pasar el código de Java a C, tendrás que usar un método para concatenar las strings:
ret=(Base(n-1)+ "E" + Base(n-1) + "R" + Base(n-1) + "E" + Base(n-1));

Eso no sirve en C.

Si fuera C++, podrías usar una string. Hacer el código sería más fluido.

xaps

#5
Cita de: ivancea96 en 16 Noviembre 2013, 22:21 PM
Aportandoalgo más, para pasar el código de Java a C, tendrás que usar un método para concatenar las strings:
ret=(Base(n-1)+ "E" + Base(n-1) + "R" + Base(n-1) + "E" + Base(n-1));

Eso no sirve en C.

Si fuera C++, podrías usar una string. Hacer el código sería más fluido.

Lo sospechaba, pero no me he atrevido a decir nada ya que he trabajado bastante poco en C.

Aquí tienes un enlace que te puede servir para concatenar cadenas:
http://stackoverflow.com/questions/308695/c-string-concatenation
"The programmers of tomorrow are the wizards of the future" - Gave Newel

MiguelYeah

#6
Muchas gracias, me pongo a ello ahora mismo y comento. Sospechaba que podia ser la concatenación, pero por mas que miraba, no daba con una solución. Ahora ya tengo por donde tirar. Gracias de verdad.

Pues despues de probar todas las combinaciones posibles, sigue sin funcionar. No se que mas hacer, he leido que si arrays de caracteres, que si strcat...pero tras probar todo, sigue sin compilar.  :-(

xaps

Cita de: MiguelYeah en 17 Noviembre 2013, 08:53 AM
Muchas gracias, me pongo a ello ahora mismo y comento. Sospechaba que podia ser la concatenación, pero por mas que miraba, no daba con una solución. Ahora ya tengo por donde tirar. Gracias de verdad.

Pues despues de probar todas las combinaciones posibles, sigue sin funcionar. No se que mas hacer, he leido que si arrays de caracteres, que si strcat...pero tras probar todo, sigue sin compilar.  :-(

¿Que error te muestra al compilar?
"The programmers of tomorrow are the wizards of the future" - Gave Newel

MiguelYeah

Pues ninguno, se queda colgado sin mas. No me marca errores de compilacion con strcat, pero no hace nada, se cuelga.

ivancea96

Mm yo hice strcat, y también me dejó de funcionar. Yo soy hijo de C++, así que no te podré ayudar mucho más xd