Pasar este código Java a C

Iniciado por Deivid_Math, 1 Mayo 2020, 09:52 AM

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

Deivid_Math

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 (java) [Seleccionar]

public class descomp {
    private double l;
    private int N;
    private int t;
//numeros aleatorios
    private Random rnd=new Random();
    public Radiactivo(double l, int N) {
        this.l=l;
        this.N=N;
t=0;
    }
    public int getnumero(){return N;}
    public int evolucion(int dt){
        int N1;
        for(int k=0; k<dt; k++){
            N1=0;
            for(int i=0; i<N; i++){
                if(rnd.nextDouble()<l)  N1++;
            }
            N-=N1;
        }
        t+=dt;
        return N;
    }
}


K-YreX

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:

#include <stdlib.h> // Para las funciones rand() y srand()
#include <time.h> // Para la funcion time()

int main(){
  // Se establece una semilla que es como un generador de numeros aleatorios.
  // Una semilla con un valor x siempre genera los mismos numeros aleatorios en cada ejecucion.
  // Para que sea mas aleatorio se usa time(NULL) para usar la hora del sistema y que cambie con cada ejecucion.
  srand(time(NULL));

  int numeroAleatorio = rand();
  // El numero aleatorio esta entre 0 y la constante RAND_MAX.
  printf("Numero aleatorio entre %d y %d: %d", 0, RAND_MAX, numeroAleatorio);

  // Para obtener un numero entre [a, b):
  numeroAleatorio = a + rand() % (b-a);

  // Para obtener un numero entre [a, b]:
  numeroAleatorio = a + rand() % (b-a+1);
}


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.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

ThunderCls

#2
Cita de: 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.

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:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int evolucion(int dt, int N, int t, float l);

int main()
{
   float l = 0.0;
   int N = 0;
   int t = 0;

   srand(time(0));
   return 0;
}

int evolucion(int dt, int N, int t, float l)
{
   int N1;
   for(int k = 0; k < dt; k++)
   {
       N1=0;
       for(int i = 0; i < N; i++)
       {
           if(((float)rand() / RAND_MAX) < l)
           {
              N1++;
           }
       }
       
       N -= N1;
   }
   
   t += dt;
   return N;
}
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/

Deivid_Math

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