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

#21
Programación C/C++ / Re: arrays y punteros.
24 Septiembre 2016, 04:59 AM
 El nombre de un array no es en esencia un puntero, más bien dependiendo del contexto es convertido implícitamente a un puntero al primer elemento como en este caso sucede con array y *array al imprimirlos. También aclarar que al desreferenciar un puntero accedes al contenido apuntado por tal puntero en este caso el primer valor del array.
#22
Cita de: AlbertoBSD en  6 Julio 2016, 01:52 AM
Te comento que me intriga la siguiente  linea de tu codigo

int tmp[cont];

No te marca error?

Es una característica que se agregó a partir de C99 pero se volvió opcional en C11, se les denomina array de longitud variable

Mas info:

https://en.m.wikipedia.org/wiki/Variable-length_array

#include <stdio.h>

int main()
{
    size_t n;

    printf("Ingresar longitud: ");
    scanf("%d", &n);

    int array[n];

    for(int i = 0; i < n; i++)
    {
array[i] = i + 1;
printf("%4d ", array[i]);
    }
    return 0;
}
#23
Cita de: fafafa01 en 25 Junio 2016, 22:32 PM
Buenas, estoy pasando un puntero(que apunta a cierta memoria reservada por malloc) como argumento de una función y adentro de la función quiero saber el largo del arreglo, lo quise hacer del siguiente modo pero me tira un error.

Si estas en Windows puedes usar _msize()

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>

int main( void )
{
   int *buffer = malloc(8 * sizeof(int));
   printf("Size: %u\n",  _msize(buffer));
   free(buffer);
   return 0;
}


En el caso de Linux tienes malloc_usable_size()
#24
Tienes fugas de memoria en el interior del bucle en cada llamada a calloc() asignas un nuevo bloque de memoria a tmp y el anterior se pierde. Debes reservar espacio fuera del bucle o liberar en cada iteración y no olvides liberar al final en ambos casos.
#25
Cita de: NOB2014 en 20 Junio 2016, 16:14 PM
como se pasan los vectores de punteros a las funciones.

Con

Código (cpp) [Seleccionar]
void f(char** array_ptr);

O

Código (cpp) [Seleccionar]
void f(char* array_ptr[]);
#26
Programación C/C++ / Re: Tipo de dato bool
18 Junio 2016, 16:49 PM
En C99 se ha incorporado el tipo _Bool este solo puede contener los valores 1 y 0 si le asignas un numero mayor que uno este se igualara a uno. También se introdujo la librería stdbool.h donde dispones de bool un alias de _Bool y sus conocidas macros true y false.
#27
Podría ser 0 == feof(file) en caso de ocurrir un error de lectura feof() retornara 0 causando un bucle infinito prueba con este cambio

0 == feof(file) && !ferror(file)
#28
Vaya no me había fijado en la formula que se propuso pero bueno tal vez esto sirva

Código (cpp) [Seleccionar]
#include <iostream>
#include <bitset>

int main()
{
    std::string buf;
    float n = 0.75;
    unsigned zero = n;

    !zero ? buf = "0." : buf = std::bitset<32>(n).to_string() + '.';
    n = n - (int)n;
    while(n > 0)
    {
        n = n * 2.0;
        buf = buf + ((int)n >= 1 ? '1' : '0');
        if((int)n >= 1) n = n - 1.0;
    }
    std::cout << (!zero ? buf : buf.substr(buf.find("1", 0))) << std::endl;
    return 0;
}
#29
Cita de: alexisrojas en 12 Junio 2016, 18:08 PM
solo encuentro programas cambien la forma entera en binario pero no lo decimales 

Te ofrezco una aproximación en C, el cual interpreta un float como un entero usando una union para luego procesar e imprimir cada bit

#include <stdio.h>
#include <limits.h>

int main()
{
    size_t i;
    unsigned msb = 1U << (sizeof(unsigned) * CHAR_BIT - 1);

    typedef union
    {
        float f;
        unsigned u;
    } type;

    type num;
    num.f = 12.8830;

    for (i = 0; i < sizeof(float) * CHAR_BIT; i++)
    {
        putchar(num.u & msb ? '1' : '0');
        msb >>= 1;
    }
    return 0;
}
#30
Cita de: NOB2014 en  9 Junio 2016, 16:03 PM
¿En la función se crearía una copia de todo el arreglo?

No el array no es copiado en su totalidad solo una copia del puntero a su dirección.

Cita de: NOB2014 en  9 Junio 2016, 16:03 PM
¿de qué manera llamarían a la función y como lo recibirían?.-

int f(int array[1000])

Es lo mismo que

int f(int array[])

int f(int *array)

No importa la sintaxis siempre se pasa un puntero