Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - eferion

#971
Cita de: amchacon en  8 Septiembre 2013, 22:54 PM
Java es un lenguaje semi-interpetrado por lo que se puede permitir algunas libertades como esa.

PD: Un lenguaje interpetrado es aquel que se compila y luego se interpetra el binario. El interpetre que hace esto se le llama maquina virtual.

No es técnicamente así... tu cuando compilas una aplicación JAVA o .NET, se genera lo que se conoce como código intermedio... este código debe ser compilado después por la máquina virtual para generar código ejecutable... pero ese código ejecutable sólo se genera la primera vez que se ejecuta esa parte del código.

La característica que hace que se pueda modificar partes del código mientras éste está en ejecución es que los ejecutables de .NET y JAVA no son un monolito en memoria, sino que están divididos en módulos ejecutables que se pueden descargar y recompilar sin interferir en el resto del programa.

Me explico:

Las llamadas a las funciones se configuran con punteros. Cuando la función llamada no está compilada, el puntero apunta a una instrucción de la máquina virtual que se encargará de compilar esa parte y modificar el puntero... si se requiere recompilar esa función "en caliente", basta con modificar de nuevo el puntero para que vuelva a apuntar a la máquina virtual en vez de a la porción de código que se debe recompilar.
#972
Como te comentan, tu código no tienen ningún sentido.

Te expongo algunos ejemplos:

Ejemplo 1:


for (i=numentero;numentero>1;i--)
{

  // ...

  i++;
}


Tenemos un bucle que lo inicializa en el número que introduce el usuario y se repite mientras ese número sea mayor que 1... a todo esto i lo decrementa a cada pasada ... para incrementarlo de nuevo al final del bucle.

Resultado: El bucle se repite indefinidamente si el usuario introduce un número superior a 1, además i no cambia nunca de valor después de una iteración completa. Además i no se usa en ningún momento.

Ejemplo 2:

if(residuo==0)
{
  par=cociente;
  par=0;
  binario[b]=par;
  b++;
}


Si el número es par, almacenamos en la variable "par" el cociente ( no se por qué ), inmediatamente después se almacena en "par" el valor 0, luego par SIEMPRE vale 0... y después en "binario[ b ]" se almacena "par", es decir, "0". A todo esto "b" no se ha inicializado, por lo que las probabilidades de que tenga un valor superior a 100 o inferior a 0 son muchísimas... además, dado que el bucle del ejemplo anterior no se controla... aunque b tuviese un valor inicial válido, tarde o temprano se saldría del rango 0-100.

PD.: la línea "binario[ b ] = par" es una de las que te está dando problemas de casque de la aplicación.

Ejemplo 3:


else
{
  inpar=cociente;
  inpar=1;
  binario[b]=inpar;
  b++;
}


Idéntico al ejemplo anterior, solo que en este caso inpar ( que se escribe impar ) siempre va a valer 1. "binario[ b ]=inpar" presenta la segunda vía por la que casca la aplicación ya que b sigue sin estar inicializada.

Ejemplo 4:


for(r=b;r=0;r--)
{
  cout<<","<<binario[b];
  b--;
}


Entiendo que aquí quieres imprimir el binario resultante... o esa es la idea. Si tu código consiguiese llegar hasta aquí simplemente no se ejecutaría.

for(r=b;r=0;r--)

La línea anterior se corresponde a la de un for mal montado. Básicamente estas diciendo que el bucle empieza con r=b y que debe repetirse mientras r=0... es decir, nunca.

r=0 está mal... en tal caso debería ser una comparación, es decir, r == 0. Lo que sucede en tu caso es que quieres que el bucle recorra el vector "binario", por lo que la condición que deberías haber puesto es  r >= 0. En la primera iteración, r siempre va a tener un valor superior a cero, luego r == 0 no es una condición válida en ningún caso.

Además, dado que estás haciendo un incremento de b después de guardar un valor nuevo en "binario", b apunta a un índice que no es válido, tendrías que hacer un preincremento para que b apunte a valores correctos.

Y una cosilla más es la presentación del resultado... el poner esa coma ahí hace que, si consigues corregir todo lo anterior y tu programa consigue llegar ahí te arrojará un resultado tal que:

,1,0,0,0,1,1,1,0,1,1,0,1

No se ... pero esa coma inicial creo que no pinta nada... bueno, ni esa ni ninguna, los números binarios no se representan con comas.

Conclusión

Como puedes ver tienes que pulir unas cuantas cosas. Intenta corregirlas a ver si consigues que te funcione el programa.

Un saludo.
#973
Puedes programar la parte gráfica en un hilo independiente.

Al hilo tendrás que añadirle un pequeño retardo para que se ejecute a una velocidad adecuada para el juego. Dicho hilo puede encargarse perfectamente tanto de mover la nave cuando se requiere como de mover los asteroides de forma constante.
#974
Notas con respecto al envío de correos a hotmail, gmail, etc desde "servidores de correos propios".

Si el dominio del correo que vas a utilizar como remitente o la dirección del servidor de correo que vas a usar para enviar el correo no están registradas en hotmail puede que tengas problemas para que el correo le llegue al destinatario.

El problema viene por los filtros que usan hotmail, gmail y demás frente a dominios desconocidos.

El ejemplo que te ha puesto Alien-Z es para montar un sencillo servidor de correo.
#975
Pretendes que alguien se copie el código a partir de las capturas de imágenes y lo depure por ti?? si es así, suerte.

Esto no suele funcionar así... la cosa es que nos facilites un poco el trabajo. Nos pones la porción de código problemática (si es posible) y nos comentas de paso qué es lo que tendría que suceder... o qué sale mal.

Pero ya te digo yo que no veo muy probable que alguien se ponga a picar código sacado de 3 capturas de pantalla para darte una respuesta.
#976
Cita de: Eternal Idol en  6 Septiembre 2013, 14:05 PM
¿Y es un una universidad seria o tambien participan de esos que mezclan algunas instancias de string en código c puro ?

En mi caso es una empresa privada y no, el código c puro esta prohibido salvo por razones de fuerza mayor... y desde que se migró el código desde fortran hace una década no se han dado motivos para ello.
#977
No tengo ni idea, pero en el proyecto en el que estoy que tiene 13 millones de líneas... no hay ni una sola.
#978
Lo se, precisamente por eso, si alguien está aprendiendo y quiere hacerlo con c++, lo más lógico es que intente solucionar la tarea usando las características exclusivas de c++... porque si no, realmente, no estás aprendiendo c++.

No creo que haya muchos exámenes serios de universidad en los que aparezcan printf, scanf, strlen, etc.
#979
Cita de: Eternal Idol en  6 Septiembre 2013, 13:01 PM
En fin, cualquier codigo que no compile en C no es C y cualquier codigo que compile en C++ lo es. Guste o no C++ es un lenguaje multiparadigma y muy versatil.

Ya, pero si no aprovechas las características que diferencian c++ de c... estás programando realmente en c.


void main( )
{
  printf ( "Programa en C\n" );
}


Código (cpp) [Seleccionar]

void main( )
{
  printf( "Programa en C++\n" );
}


Realmente el segundo ejemplo es programar en c++??? el compilador te generará un ejecutable válido... está claro, pero eso no es c++. El estándar aceptó en su momento todas las librerías de c entre otras cosas para facilitar la migración del código... fuera de eso no tiene sentido porque entonces te encuentras con que es el único estándar que tiene la mitad de su biblioteca con funciones duplicadas.
#980
Cita de: Eternal Idol en  6 Septiembre 2013, 12:34 PM
C++ es un mejor C como indica su nombre y la biblioteca cstdio (propia de C++ y no de C) declara la funcion de estilo C printf.

Lo se, pero si estás haciendo prácticas en c++... céntrate en programar c++.

printf, aunque sea algo perfectamente válido en c++, es c.

A mi me ha venido gente diciendo que sabía programar en c++ sólo porque mezclaban algunas instancias de string en código c puro... eso le duela a quien le duela no es programar en c++.