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

#971
En efecto, tienes que linkar la librería.

Vete a Project->Build options->Linker settings.  En el panel de la izquierda pon pthread.
#972
Cita de: Poison Lux en  9 Mayo 2013, 21:56 PM
Las gráficas siempre laburaron de manera paralela ... te estás enredando y me estás tirando el tema para otro lado, sé sincero y decí "bueno, no entendía bien del tema y mandé cualquiera" (hace bien)
Sigo diciendo que no has entendido lo que quería decir.

Cuando decía que el multihilo podría servir para aligerar carga gráfica estoy seguro de que tengo razón:

CitarLa hipotesis se basa en trabajar distintas partes simultáneamente. Evidentemente, para ello necesitas un procesador de varios núcleos.

Cosas como la física por ejemplo.
#973
Gracias, ambos funcionan de maravilla (el ingles no lo he probado, pero el español me lo detecta bien).

Código (cpp) [Seleccionar]
unsigned int Lenguaje::ObtenerIdiomaSistema()
{
   #ifdef WINDOWS

   char idioma[30]={0};
   GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SNATIVELANGNAME  , idioma,
   sizeof(idioma));

    if (idioma[0] == 'e' && idioma[1] == 's')
      return Espanyol;
   else
       return English;

   #else

   char* Informacion = getenv("LANG");

   if (Informacion[0] == 'e' && Informacion[1] == 's')
       return Espanyol;
   else
       return English;

   #endif
}
#974
Tal como suena, busco alguna manera de detectar el idioma que usa el usuario... Tanto en Windows como en Linux.
#975
Cita de: Poison Lux en  9 Mayo 2013, 13:08 PM
Juegos AAA, ok.
Tomo nota del término.

Cita de: Poison Lux en  9 Mayo 2013, 13:08 PM
Que haya dos GPUs no modifica para nada lo que programás (salvo casos en particular), ya que antes hay un driver y éste es el que hace scheduling de tareas ... se vino haciendo siempre para que juegos que no están pensados para setups como dos GPUs enganchadas por SLI/Crossfire puedan correr sin el más mínimo drama repartiendo la carga entre ambas GPUs usando un algoritmo u otro de scheduling;  que ahora esté integrado en un paquetón no significa nada a esta altura del partido.

Me parece que estás confundiendo conceptos.

Saludos.
No, te has confudido con mi ejemplo.

Lo que quería decir que el desarrollo multihilo puede acelerar la carga gráfica (por parte de la CPU). La prueba esque las gráficas de gama alta están apostando por ello en sus GPU.
#976
Programación C/C++ / Re: Ayuda con C
9 Mayo 2013, 11:02 AM
¿Sistema operativo Linux?

Prueba a usar un fork()
http://linux.die.net/man/2/fork
#977
Cita de: Luchoz95 en  9 Mayo 2013, 01:26 AM
la verdad que nunca utilice la librería conio, pero no veo errores en el código, solamente limpia el buffer antes de cada scanf con fflush!
fflush(stdin);
fflush(stdin) debe ser algo prohibido de usar. Solo funciona en Windows, es una buena costumbre hacer aplicaciones multiplataforma.
#978
fflus(stdin) solo funciona en Windows. Si quieres que tu código sea multiplataforma debes usar otras alternativas.

Francamente, me parece vergonsozo que profesores recomienden cosas como esa. El toque de gracia será que también haya recomendado el Devcpp (o peor aún, turbo C xD).

Personalmente, no uses la librería conio. La única función que estás utilizando es getch() y puedes usar getchar() en su lugar (es correcto, la profesora no te va a decir que no). Si te da a elegir, usa el otro método para limpiar el buffer. No solo hay que aprobar sino acostumbrarse a programar bien.
#979
Cita de: leosansan en  8 Mayo 2013, 19:38 PMPor lo demás muy de acuerdo en el dichoso uso de la librería conio y , como digo yo, sus acólitos getch y compañía.
Creo que querías decir "desacuerdo"

Puedes sustituir getch por getchar(), asi no tendrás que usar la librería conio (solo funciona en Windows, es una buena costumbre hacer las cosas multiplataforma).
#980
Bueno el binario me da problemas (cuando pongo el nombre del nuevo contacto, no puedo continuar.

Otra cosa es, que SDL es una librería multiplataforma. Ergo puedes compilarlo en linux sin necesidad de maquinas virtuales ni nada, o en todo caso hacer una versión para linux al menos.

El código parece que tiene mucho trabajo, pero la presentación es muy fea. Tienes que poner espacios y indentar. El siguiente código:

if(strcmp(nomb,primero->nombre)==0)
{
if(primero->siguiente==NULL)
{
free(primero);
registrono=1;
}
primero=primero->siguiente;

free(mueveagenda);
ncont=0; // se va a agregar un nuevo contacto
return ;
} //fin if
else // si no
{
while(mueveagenda->siguiente!=NULL)
{
if(strcmp(nomb,mueveagenda->nombre)==0)
{
borra=mueveagenda;
encontradob=1;
break;
}//fin if
mueveagenda=mueveagenda->siguiente;
} //fin while
if(strcmp(nomb,mueveagenda->nombre)==0)
{
borra=mueveagenda;
encontradob=1;
} //fin if
}//fin else


Se puede indentar así


if(strcmp(nomb,primero->nombre)==0)
{
   if(primero->siguiente==NULL)
   {
       free(primero);
       registrono=1;
   }

   primero=primero->siguiente;

   free(mueveagenda);
   ncont=0; // se va a agregar un nuevo contacto
   return ;
}
else
{
   while(mueveagenda->siguiente!=NULL)
   {
       if(strcmp(nomb,mueveagenda->nombre)==0)
       {
           borra=mueveagenda;
           encontradob=1;
           break;
       }

       mueveagenda=mueveagenda->siguiente;
   }

   if(strcmp(nomb,mueveagenda->nombre)==0)
   {
       borra=mueveagenda;
       encontradob=1;
   }
}


Más elegante, y se ve a que corresponde cada llave.

También hay muchas líneas que se pueden abreviar. Hay un caso como este:

Código (cpp) [Seleccionar]
if(event.type==SDL_KEYDOWN)
           {
               if((ACCION==9 && eventos.siguien==0) || (ACCION==3 && eventos.siguienb==0) || (ACCION==4 && eventos.siguienbo==0) || ACCION==5 || ACCION==10) //Carga vector nombre
               {
                   if(event.key.keysym.sym==SDLK_BACKSPACE) //borra un caracter.
                   {
                       if(eventos.tamcont>=0)
                       {
                           nomb[eventos.tamcont-1]=0;
                           eventos.tamcont--;
                       }

                   }
                     
                   f(event.key.keysym.sym==SDLK_SPACE)
                   {
                       if(eventos.tamcont<50)
                       {
                           nomb[eventos.tamcont]=' ';
                           eventos.tamcont--;
                       }

                   }
                     f(event.key.keysym.sym==SDLK_a)
                   {
                       if(eventos.tamcont<50)
                       {
                           nomb[eventos.tamcont]='a ';
                           eventos.tamcont--;
                       }

                   }
        //...


Miles de líneas... Puede resumirse a:

if(eventos.tamcont<50)
{
   switch(event.key.keysym.sym)
   {
   case SDLK_SPACE:
               nomb[eventos.tamcont]=' ';
               break;
   case SDKL_a:
               nomb[eventos.tamcont]='a';
               break;
   case SDKL_b:
               nomb[eventos.tamcont]='b';
               break;
   case SDKL_c:
               nomb[eventos.tamcont]='c';
               break;
 
  //...

   default:
               nomb[eventos.tamcont]='?';
   }
 
   eventos.tamcont++;
}


Mucho más escueto.

Otra cosa es que dejes de usar el Devcpp y uses algun IDE más moderno... Fijate como veo yo el archivo de graficos.h:



Mucho más elegante, si quiero ver alguna función en particular:



Te subo el código indentado, te falta por completar el switch de antes:
https://dl.dropboxusercontent.com/u/69551225/agenda.zip

Cuando termine de comer te digo más cosas ;)