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

#341
El código directamente no compilaría. Primero, hay un 'else' que no está acompañado de su if, además, has cerrado los comentarios de múltiples líneas sin abrirlo.

Sinceramente, no sé si has analizado tu propio código.
Código (cpp) [Seleccionar]
for(int i=0;i<5;i++) {
        dat.nombre='a'+i;
}


En esa parte del código estás cambiando la dirección de memoria a la que apunta dat.nombre. Eso hace inválido lo que hayas almacenado en la cadena dat.nombre.

Para hacer lo que quieres hacer es mejor usar fscanf, puesto que esta función te detecta los espacios por ti.

Siento decirte esto, pero el código es un poquito desastre. Analízalo para intentar buscar una solución mejor a lo que quieres hacer.
#342
Lo que pides es imposible. Es contradictorio. Cada tipo de CPU tiene una arquitectura, es imposible crear un código máquina o un código ensamblador que sirva para todos los tipos de CPU. No obstante, no es tanto que Java sea lento (aunque lo sea un poco más que C/C++), sino que los programadores en más alto nivel no suelen optimizar a más bajo nivel. No estoy diciendo que los programadores que programan en más alto nivel sean peores programando, sino que no se fijan en los detalles en los que se fija un programador en C/C++.

Te explico, Java es más lento que C++, no tanto porque sea un lenguaje interpretado, sino que con el fin de ahorrarles tiempo y disgustos a los programadores, hace muchas comprobaciones de memoria o otras cosas para ver que todo ha ido bien en una instrucción, para que el programa no crashee. Por ejemplo, cuando reservamos memoria dinámica en C/C++ tenemos que tener muchísimo cuidado mientras que en Java, si se produce algún error en la memoria dinámica, directamente el programa lo detecta y se actúa según el error. En C++ tenemos la opción de hacer esas comprobaciones, o no porque estemos seguros de que no van a fallar!! Otro error común en C++ es acceder a lugares de la memoria que no nos pertenece...

Espero haber aclarado el tema :D
#343
Código (javascript) [Seleccionar]
window.setTimeout(run(), 17);

No sé mucho de javascript, pero creo que sé para qué sirve "window.setTimeout(run(), 17);" Sirve para que la función run() se ejecute cada 17 milisegundos, ¿no?. Si es el caso, en C++ no existe algo para hacer eso. Esa instrucción sirve para la sincronización vertical, es decir, para que el juego vaya a 60 FPS. Para activar la sincronización vertival en tu aplicación de C++, en Windows, se hace así:

Código (cpp) [Seleccionar]
wglSwapIntervalEXT(1);

Lo que hace la función es darle tiempo a la gráfica y al monitor a mostrar un fotograma.

El código general quedaría así:

Código (cpp) [Seleccionar]
// Inicialización de OpenGL
...
wglSwapIntervalEXT(1);
...

// Función del bucle del juego (ejecutar cuando todo se haya inicializado
void run() {
   while(evento_cerrar_ventana == false) {
      // Escribir todo lo que se hará en cada fotograma, como pintar, reproducir sonidos...
   }
}


_______________________________________________

Dejando el tema este tema, te recomiendo encarecidamente que uses unas librerías externas (tranquilo, no te quitan el trabajo gráfico, solo te FACILITA la vida) que son GLFW y GLEW (ambas gratuitas). La librería GLFW te permite crear un sistema de ventanas con pocas líneas, y es compatible tanto con Windows, Linux y Mac OSX (me parece), y GLEW te carga las extensiones de OpenGL (las necesitarás para trabajar con el OpenGL 3.3 en adelante). De verdad, es aburridísimo cargar las funciones nuevas de OpenGL y además no es multiplataforma... mejor usa GLEW y GLFW.

Te recomiendo una página, que aunque esté en inglés, es muy buena explicando lo referente a gráficos, y trabaja en C++. http://learnopengl.com/
#344
Se me ha ocurrido que se podría usar una macro:
Código (cpp) [Seleccionar]
#define sumar(a, b) a+b

#include <stdio.h>

int main() {
char cha = 2, chb = 3;
    int ia = 4, ib = 5;
    long la = 6, lb = 7;
    float fa = 8, fb = 9;

    printf("char  : %d\n", sumar(cha, chb));
    printf("int   : %d\n", sumar(ia, ib));
    printf("long  : %li\n", sumar(la, lb));
    printf("double: %f\n", sumar(fa, fb));
}


Es cierto que no es una función, pero realiza la operación deseada. Además, en vez de sumar podrías restar, multiplicar, dividir, sacar el módulo... vamos, un sin fin de opciones!

PD.: Te copié el código para ilustrar la macro XD.
#345
Si, pero realmente lo que haces es convertir, por ejemplo, un entero a double, y eso no te lo quita nadie (a quien más le importa es al procesador). Por ejemplo, no podrías pasarle un unsigned long long int, porque literalmente la parte entera no cabe en un double. Siempre vas a estar delimitado por el parámetro, mientras que en C++, usando una simple plantilla, puedes hacer esa función sin problemas (también puedes hacer sobrecarga de funciones)
#346
Es una pena, pero así es. Si quieres hacer eso, vete a C++!
#347
En C no existe la sobrecarga de funciones ni tampoco las plantillas, así que me temo que tu problema en C no tiene solución. En C++ puedes usar la sobrecarga de funciones o las plantillas
#348
Programación C/C++ / Re: ayuda urgente en c
4 Marzo 2016, 05:23 AM
Una iteración es un ciclo de un bucle. Por ejemplo, en un bucle for, una iteración es cuando se ejecuta una vez el código del for. Por eso digo, que compares las toneladas de cada mes con el promedio en un año, y si es mayor, entonces incrementas el contador
#349
Programación C/C++ / Re: ayuda urgente en c
4 Marzo 2016, 03:03 AM
Para el b simplemente declara una variable que almacene la cuenta de meses que han superado la media inicializándola como 0, crea un ciclo for que recorra todo el arreglo y compara si el valor de la cosecha en esa iteración es superior a la media, y si es así, pues incrementa el contador.

Para el c guarda en una variable el valor máximo con un valor de 0 (que es el valor mínimo), después haz un ciclo for recorriendo todas las posiciones del arreglo, compara si en esa iteración la cosecha fue mayor y si es así, pues guarda ese valor.
#350
Programación C/C++ / Re: ayuda con getline
26 Febrero 2016, 23:50 PM
Me alegro haber servido de ayuda! Marca el tema como resuelto para mejor organización ;D