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 - amchacon

#481
Sinceramente te recomiendo que dejes la SDL, está muy anticuada y le faltan bastantes funciones  :silbar:

SFML sería la mejor opción.
#482
Cita de: @shellroot en  6 Diciembre 2013, 20:21 PM
n ^ (1/2) = Raiz Cuadrada
n ^ (1/3) = Raiz Cubica
...
...
...

---

sqrt(8) = 2,82842712474619
8^(1/2) = 8^(0.5) = 2.82842712474619
¿Y como haces 8 ^ 0.5? Porque ese operador no existe el lenguaje :silbar:
#483
Programación C/C++ / Re: basura en mi programa
6 Diciembre 2013, 13:40 PM
Se le da más importancia al buffer de la que tiene...

El error que veo ahí esque no borras la pantalla entre cada bucle. En windows es con system("CLS");

Aparte de eso. ¿Cual es el problema que tiene? Detallalo más...
#484
Programación C/C++ / Re: Problema con un juego.
6 Diciembre 2013, 13:34 PM
El problema esque no detectas la colisión con los bloques. Tienes que detectar eso y cuando encuentres la colisión con un bloque lo borras de su matriz y pones un espacio en blanco en su lugar.

Lo mejor esque tu matriz abarque el campo entero, rellena los espacios vacíos con espacios.
#485
En 2º de ingeniería informática das una asignatura de Sistemas operativos. Esperate para entonces.
#486
Cita de: bourne1191 en  6 Diciembre 2013, 12:49 PM
buena respuesta.. por ahora estoy empezando con C y no sé como meter ese tipo de límites en el compilador, pero suena bastante interesante y me pondré a investigarlo. desde luego, mi algoritmo era un poco "de andar por casa"... saludos y gracias
Dudo que te pidan lo que has hecho en el primer post, lo más probable esque te pidan que hagas la raíz así. Es un problema típico de primero, probablemente también te pidan que calcules e^x y el seno también.

Si es un problema de primero, es porque no es tan complicado como parece. Lo que pasa esque como aparecen matemáticas asusta un poco. Planteatelo así, la serie se hace con un bucle y tres variables (una es el valor actual, que deberá valer:

double valor = (1+x)/2; // o en vez de x lo llamas n como en tú código

La otra es con el valor anterior, lo dejaremos a cero por el momento. La otra tendrá el error, que tendrá lo mismo que la variable valor.

Ahora tenemos que hacer un bucle, lo repetiremos mientras que (error > 1e-15). Recuerda que hemos dicho que vamos a dejar 15 decimales de precisión, si queremos menos se lo podemos cambiar, también puedes meterlo a mano si te resulta confuso lo de 1e-15:

while(error > 0.00000000000001

Ahora dentro del bucle, asignaremos a valor siguiendo la fórmula:

valor = (anterior+x/(anterior))/2;

Calcularemos el error:

error = valor-anterior;

Y actualizamos el anterior:

anterior = valor;

Y ya esta, prácticamente te he dicho todo. Tienes que unir todas las ideas que te he dicho. Después muestras valor por pantalla y san se acabó.
#487
Hijo, tampoco hay tantas diferencias.

Cambiar los cout por printf y los cin por scanf. Quitar lo de using namespace y cambiar los includes por las librerías de C.

O si sabes lo que hace el programa, reescribirlo desde cero en 0. Tampoco es muy largo y hay bastantes cosas que se pueden reutilizar.
#488
Cita de: ivancea96 en  6 Diciembre 2013, 12:24 PM
Está bien el algoritmo. Podrías pensar en darle más precisión, como haciendo que vaya de 0.01 en 0.01.
Pero bueno, solo es eso.

Suerte

Con todo el respeto del mundo, ese algoritmo es una auténtica caca. Primero porque es muy lento (ponle la raíz de 500 a ver que tal), segundo porque es muy poco preciso.

Lo que te están pidiendo esque hagas las series de taylor, la raíz de x puede expresarse como el limite de la siguiente sucesión:

Citara(0) = 0
a(1) = (1+x) / 2
a(n) = (a(n-1)+x/a(n-1))/2

Siendo x el número del que quieres obtener la raíz. El error con el que estás calculando la raíz puede expresarse como:

Citara(n)-a(n-1)

De modo que si quieres calcular de raíz de un numero con una precisión de 1e-15 (15 decimales de precisión). Tendrías que empezar en a(1) y ir aplicando la sucesión a(n). En cada calculo haces la resta con el valor anterior y paras cuando el error sea menor a 1e-15.

Ese es algoritmo que usa sqrt, debería darte el mismo resultado (puede variar en los decimales 16-17, pero es un error despreciable).

Pregunta si tienes alguna duda.

PD: No lo he dicho, pero para tener 15 decimales de precisión necesitaras usar double y no float
#489
Muy abstracto *_*

CitarEl problema viene dado a que desde un objeto de esa clase, necesito acceder a datos privados de otro objeto del mismo tipo (una lista de strings). Entonces, la solución más eficiente que se me ha ocurrido es crear un puntero de tipo vector<string> vect, pasarlo por referencia a la otra función
C++ te permite el uso de variables "referencia". Son más seguras y más naturales que los punteros:

Código (cpp) [Seleccionar]
int cosa = 0;
int &objeto = cosa;

cout<<objeto<<endl;

cosa = 1;

cout<<objeto<<endl;


No entiendo bien tú código pero un vector se puede copiar con el constructor copia:

Código (cpp) [Seleccionar]
vector<string> tuVector(otroVector);

Si usas un puntero, tendrías que poner eso en el new. Pero repito que no necesitas punteros para nada.


Por otro lado si quieres insertar un elemento al principio, te vendría mejor push_front:
http://www.cplusplus.com/reference/list/list/push_front/


#490
Programación C/C++ / Re: New vs objeto automatico
3 Noviembre 2013, 21:23 PM
Cita de: Xedrox en  3 Noviembre 2013, 21:11 PM
Una duda, inicialmente el programa con cuenta memoria? Sin tener que pedir la dinamica... ?
Depende del SO, del compilador... Creo que incluso lo puedes modificar en las opciones de compilación.