Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Deivid_Math en 1 Mayo 2020, 09:52 am



Título: Pasar este código Java a C
Publicado por: Deivid_Math en 1 Mayo 2020, 09:52 am
Hola, soy nuevo en este foro y nuevo en el mundo de la programación, estoy algo desesperado. Me han recomendado este foro, así que voy a probar suerte. Muchas gracias a todos

Tengo este código en Java, y necesito que sea en lenguaje C, con ese lenguaje C empezar a hacer unos ejercicios. Estoy muy perdido.

Código
  1. public class descomp {
  2.    private double l;
  3.    private int N;
  4.    private int t;
  5. //numeros aleatorios
  6.    private Random rnd=new Random();
  7.    public Radiactivo(double l, int N) {
  8.        this.l=l;
  9.        this.N=N;
  10. t=0;
  11.    }
  12.    public int getnumero(){return N;}
  13.    public int evolucion(int dt){
  14.        int N1;
  15.        for(int k=0; k<dt; k++){
  16.            N1=0;
  17.            for(int i=0; i<N; i++){
  18.                if(rnd.nextDouble()<l)  N1++;
  19.            }
  20.            N-=N1;
  21.        }
  22.        t+=dt;
  23.        return N;
  24.    }
  25. }
  26.  


Título: Re: Pasar este código Java a C
Publicado por: K-YreX en 1 Mayo 2020, 15:13 pm
Ya que eres nuevo en el foro, te avisaré de que no se hacen tareas. Esto no va de que tu pones tus códigos o tus ejercicios y nosotros te los hacemos. El foro sirve para cuando tienes una duda concreta y a ser posible tienes que poner tus avances para que podamos orientarte mejor.
Java como ya sabrás o deberías saber está totalmente orientado a objetos por lo que es obligatorio crear una clase para tu programa. C, en cambio, no está orientado a objetos (no tiene clases) aunque tiene un "apaño" que son la estructuras (struct). No conviertas cada clase de Java en un struct de C porque no tiene sentido, vas a tener que pensar un poco si deberías crearla o no.
PD: Otra característica de un struct es que todos sus campos son públicos por defecto. No se pueden establecer como privados.

Y para crear un número aleatorio en C se utiliza el siguiente código:
Código
  1. #include <stdlib.h> // Para las funciones rand() y srand()
  2. #include <time.h> // Para la funcion time()
  3.  
  4. int main(){
  5.  // Se establece una semilla que es como un generador de numeros aleatorios.
  6.  // Una semilla con un valor x siempre genera los mismos numeros aleatorios en cada ejecucion.
  7.  // Para que sea mas aleatorio se usa time(NULL) para usar la hora del sistema y que cambie con cada ejecucion.
  8.  srand(time(NULL));
  9.  
  10.  int numeroAleatorio = rand();
  11.  // El numero aleatorio esta entre 0 y la constante RAND_MAX.
  12.  printf("Numero aleatorio entre %d y %d: %d", 0, RAND_MAX, numeroAleatorio);
  13.  
  14.  // Para obtener un numero entre [a, b):
  15.  numeroAleatorio = a + rand() % (b-a);
  16.  
  17.  // Para obtener un numero entre [a, b]:
  18.  numeroAleatorio = a + rand() % (b-a+1);
  19. }

Dicho esto que creo que es lo más diferente entre Java y C, el resto son bucles y operaciones aritméticas básicas que tienes que poder hacerlo tú solo.
Suerte.


Título: Re: Pasar este código Java a C
Publicado por: ThunderCls en 1 Mayo 2020, 16:42 pm
Hola, soy nuevo en este foro y nuevo en el mundo de la programación, estoy algo desesperado.

Porque tambien he estado perdido y desesperado con la fisica  :xD...y porque igual en este momento no tengo nada mejor que hacer.
Eso si, como ya te dijeron, no esperes llegar siempre para que te resuelvan las tareas  :rolleyes:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int evolucion(int dt, int N, int t, float l);
  6.  
  7. int main()
  8. {
  9.    float l = 0.0;
  10.    int N = 0;
  11.    int t = 0;
  12.  
  13.    srand(time(0));
  14.    return 0;
  15. }
  16.  
  17. int evolucion(int dt, int N, int t, float l)
  18. {
  19.    int N1;
  20.    for(int k = 0; k < dt; k++)
  21.    {
  22.        N1=0;
  23.        for(int i = 0; i < N; i++)
  24.        {
  25.            if(((float)rand() / RAND_MAX) < l)
  26.            {
  27.               N1++;
  28.            }
  29.        }
  30.  
  31.        N -= N1;
  32.    }
  33.  
  34.    t += dt;
  35.    return N;
  36. }


Título: Re: Pasar este código Java a C
Publicado por: Deivid_Math en 1 Mayo 2020, 22:21 pm
Muchas gracias por las respuestas, si estoy desesperado por la Física, pero es lo que tiene estar 30 días con fiebre y dolores por todo el cuerpo, y ahora al menos me puedo sentar delante delante del ordenador.

Repito, muchas gracias, ahora espero seguir yo solo.

Saludos