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

#21
Cita de: Bob1098 en 15 Septiembre 2014, 16:51 PM
Seguro que hay una forma mucho mas simple, pero aun soy nuevo con esto de los punteros y no los comprendo muy bien.

Quedaría mas o menos así :

Código (cpp) [Seleccionar]
size_t LongitudCadena(const char *str)
{
    const char *s;
    for (s = str; *s; ++s);
    return(s - str);
}


No hay necesidad de usar un segundo puntero

Un Saludo

#22
Cita de: MellaSystems en 12 Septiembre 2014, 20:36 PM
Gracias amigo... pero nunca he trabajado con esos parametros investigare como hacerlo, muchas gracias. O si puedes darme un ejemplo

Por supuesto :

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

#define MAX 20

struct datos
{
    int edad;
    char cad[MAX];
};

struct datos comprobar()
{
    struct datos D;

    D.edad = 15;
    strcpy(D.cad, "menor");

    return D;
}

int main(void)
{
    struct datos D = comprobar();

    printf("Edad = %d\n", D.edad);
    printf("Apto = %s\n", D.cad);

    return 0;
}


Un Saludo
#23
Cita de: MellaSystems en 12 Septiembre 2014, 19:42 PM
Alguna idea de como hacer una función que devuelva un entero mas una cadena. Que me devuelva la edad y una frase que diga usted es mayor de edad o menor

No puede devolver dos valores simultáneamente, pero puedes poner todas las variables que desea modificar en una estructura y devolver esa estructura de la función, dado que una estructura puede contener cualquier número de elementos se puede devolver cualquier número de elementos de una función de esta manera.

Un Saludo
#24
Programación C/C++ / Re: Duda en programación C:
6 Septiembre 2014, 14:02 PM
Cita de: superkorlas en  6 Septiembre 2014, 11:55 AM
La figura C) es la que me falla, me sale una representación bastante distinta, es algo así:

Debería quedar mas o menos así:

Código (cpp) [Seleccionar]
for(i = 1; i <= 10; i++)
{  
 for(j = 1; j < i; j++) printf(" ");
    for(j = 10; j >= i; j--) printf("*");
 printf("\n");
}  


Saludos
#25
Cita de: wiD^ en 26 Agosto 2014, 17:19 PM
En realidad no se resolvio, sigo teniendo el mismo problema:

Te convendría mas declarar la siguiente estructura de esta manera:

Código (cpp) [Seleccionar]
typedef struct
{
    char nombre[30];
    char apellido[30];
    int telefono;
    int edad;
}registro;


Y en la función SetearReg la condición de terminación de for es incorrecta (i >= 200) quedaría así :

Código (cpp) [Seleccionar]
void SetearReg(registro *clientes)
{
    int i;
    for(i = 0; i <= 200; i++)
    {
        clientes[i].telefono = 0;
        clientes[i].edad = 0;
    }
}


Saludos
#26
Programación C/C++ / Re: Palindromo C++
23 Agosto 2014, 21:36 PM
Cita de: leosansan en 23 Agosto 2014, 21:03 PM
no sé por qué pero algo me decía que no estaba bien. 

Pero de igual manera podrías inicializar q a -1 y no restarle 1 a p:

Código (cpp) [Seleccionar]
int q = -1, p = LongCad(palabra);
while (q++ < p--)
    if (palabra[q] != palabra[p])
       return false;
return true;


Saludos
#27
Programación C/C++ / Re: Palindromo C++
23 Agosto 2014, 20:49 PM
Seria mas apropiado realizar el decremento e incremento fuera del while justo después de la primera comparación:

Código (cpp) [Seleccionar]
while (q < p)
{
  if (palabra[q] != palabra[p])
      return false;
  q++, p--;
}


Tu código al procesar una cadena como esta arenere retornara true

Saludos
#28
Hay una manera de determinar si una operación es probable que desborde usando las posiciones de los bits uno más significativos por ejemplo:

Código (cpp) [Seleccionar]
size_t bit_mayor(unsigned n)
{
    size_t bits = 0;
    while (n) ++bits, n >>= 1;

    return bits;
}

bool mult_segura(unsigned a, unsigned b)
{
    size_t a_bits = bit_mayor(a), b_bits= bit_mayor(b);
    return ( a_bits + b_bits <= 32 );
}

int main(void)
{
    unsigned a = 2, b = 4294967295;
    unsigned result = 0;

    if(mult_segura(a, b))
    {
        result = a * b;
        printf("Multiplicacion: %u\n", result);
    }
    else
        puts("Posible desbordamiento de enteros");

    return 0;
}


Saludos
#29
En la primera iteración en esta linea:

Código (cpp) [Seleccionar]
if(m % i == 0)

Estas aplicado el operador modulo sobre m cuando i tiene el valor de cero
#30
Cita de: NOB2014 en 17 Agosto 2014, 19:49 PM
No obstante haciendo estas prácticas me encuentro con cosas que parecen incoherente pero ocurren, ¿alguien me las puede explicar.?

Utilizas el especificador de formato %d esto obliga a la función printf a interpretar el numero como un entero con signo el especificador apropiado para tal caso es %u, al usar este imprimirás el mayor número que se puede representar en un unsigned int menos 1 debido al desbordamiento.    

Saludos