elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: 1 2 3 4 [5] 6 7 8 9 10
41  Programación / Programación C/C++ / Re: Arreglo con memoria dinámica en lenguaje C. en: 24 Mayo 2016, 21:05 pm
Como ya mencionaron si pasas un puntero NULL y un tamaño distinto a cero a realloc se comporta como malloc es decir reserva memoria. El cast antes de malloc y realloc es innecesario el puntero void* es convertido automáticamente al tipo adecuado.
42  Programación / Programación C/C++ / Re: Salida inesperada de este programa en: 24 Mayo 2016, 05:36 am
Yo estoy con que la asignacion es totalemente valida.

Con el codigo que el presento solo es necesario modificatr el printf esta es otra version valida.

Te invito a leer la página que proporcioné mas arriba al parecer no tomaste tiempo en leerlo, esa asignación provoca comportamiento indefinido por lo tanto no existe garantía de que el resultado sea lo esperado. Compila ese código con el nivel de advertencia -Wall luego me cuentas
43  Programación / Programación C/C++ / Re: Salida inesperada de este programa en: 24 Mayo 2016, 02:10 am
Código
  1. arr[i++] = i;

La variable i se está modificando en el lado derecho de la asignación y tambien se hace referencia a ella en la izquierda el estándar de C no permite esto porqué no hay punto de secuencia para mas info http://stackoverflow.com/questions/4176328/undefined-behavior-and-sequence-points
44  Programación / Programación C/C++ / Re: Inicializar cadena de caracteres en lenguaje C. en: 13 Mayo 2016, 04:28 am
Geeke, lo tuyo no me funciona, ya lo había probado y cuando quiero hacer un bucle para demostrar que los 5 elementos contienen ceros, me muestra un solo cero. -

Si usas el especificador %c sólo imprimirá espacios porque el contenido del array es 0 == '\0' != '0' el carácter null generalmente se representa mediante un espacio, pero si cambias el especificador a %d se imprimirán los ceros

Por ultimo en estos casos es preciso ser especificos porque podria surgir ambiguedades, tal como vemos en este caso, el cero tiene diferentes significados esto dependiendo del contexto donde se lo usa.
45  Programación / Programación C/C++ / Re: Inicializar cadena de caracteres en lenguaje C. en: 12 Mayo 2016, 22:52 pm
Si en verdad quieres evitar los bucles puedes:

Código
  1. char cadena[10] = "";

El cual es equivalente a

Código
  1. char cadena[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
46  Programación / Programación C/C++ / Re: Romper ciclo sin interferir. en: 11 Mayo 2016, 04:36 am
Si usas conio.h dispones de kbhit()

Código
  1. if (kbhit())
  2. {
  3.    // Se presionó una tecla
  4. }

Cabe destacar que conio.h no es estándar ni tampoco portable
47  Programación / Programación C/C++ / Re: Sumar y multiplicar una serie de números en: 9 Mayo 2016, 20:26 pm
Los caracteres '0' y '1' son equivalente a:

48 en base 2: 110001
49 en base 2: 110000

El primero tiene el bit 1 a cero, el segundo no al realizar c & 1 la expresión resulta en 1 si el carácter es '1' y 0 si el carácter es '0'.

Y de paso otra aproximación en C  :rolleyes:
Código
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5.    int m = 1, n;
  6.    while (1)
  7.    {
  8.        scanf("%*[0]");
  9.        scanf("%*[1]%n", &n);
  10.        if (n > 0)
  11.        {
  12.            m *= n;
  13.            n = 0;
  14.        }
  15.        else
  16.            break;
  17.    }
  18.    printf("%d\n", m);
  19.    return 0;
  20. }
48  Programación / Programación C/C++ / Re: Sumar y multiplicar una serie de números en: 9 Mayo 2016, 02:33 am
Otro enfoque en C++
Código
  1. #include <iostream>
  2.  
  3. int main()
  4. {
  5.    int c, m = 1, v = 0;
  6.  
  7.    for(; (c = std::cin.get()) != '\n'; v += c & 1)
  8.        if( v && c == '0' && std::cin.peek() == '1' )
  9.        {
  10.            m *= v;
  11.            std::cout << v << '*';
  12.            v = 0;
  13.        }
  14.    std::cout << v << " = " << (m *= v);
  15. }
  16.  
49  Programación / Programación C/C++ / Re: No me imprime esta cadena fuera de main en: 6 Mayo 2016, 22:09 pm
Tampoco es que no se pueda lo que podríamos hacer en este caso es crear una clase donde el constructor contega un cout y luego crear un objeto global del mismo, momento en el cual se llama al constructor imprimiendose el mensaje

Código
  1. #include <iostream>
  2.  
  3. class print
  4. {
  5. public:
  6.    print()
  7.    {
  8.        std::cout << "Hola Mundo";
  9.    }
  10. }s;
  11.  
  12. int main ()
  13. {
  14.  
  15. }
  16.  
50  Programación / Programación C/C++ / Re: C vs C++ [Civil War] en: 4 Mayo 2016, 17:21 pm
Si pero hay que tener cuidado con esta, porque no comprueba el limite del buffer por lo tanto fácilmente podríamos escribir mas allá de lo permitido (desbordamiento de buffer). Esto no pasaría con snprintf porque tiene un parámetro adicional que índica el numero máximo de bytes a escribir
Páginas: 1 2 3 4 [5] 6 7 8 9 10
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines