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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 20
1  Programación / Programación C/C++ / Re: Ayuda con punteros en C en: 26 Agosto 2015, 01:33 am
el problema lo tengo en cosas más avanzadas, como cuando leo la relación que hay entre punteros y arrays, no acabo de entenderlo, por ejemplo he escuchado que un array es un puntero pero ya digo no me queda del todo claro como manejarlos.

En esencia el nombre de un array no es un puntero mas bien es un identificador para el tipo del array, que al hacer referencia a la misma se realiza una conversión implícita a puntero (esto lo hace automáticamente el compilador) sucede cuando por ejemplo pasas el array como parámetro a una función
2  Programación / Programación C/C++ / Re: [SOLUCIONADO] Busqueda de comparacion de cadenas con arreglo de estructuras en: 13 Mayo 2015, 20:35 pm
 En primer lugar es innecesario el uso de dos bucles, el uso que das del while puede se fácilmente reemplazado por un if

 Ahora voy a explicarte mas claramente porque no funciona tu código, supongamos que tenemos como entrada pele , luego ingresamos al bucle for de inmediato nos encontramos con la siguiente condición if

Código
  1. if(strcmp(nombreBusqueda, arregloPersonas[i].nombre))

Esto es como decir "si nombreBusqueda es diferente a arregloPersonas.nombre entonces ejecutar la instrucción contenida en el if" en este caso ya que manu chao es diferente a pele pasara a ingresar en el if ejecutando todos los printf y finalmente el break terminara el bucle.

En el caso de que la entrada sea manu chao se hará la comprobación y como obviamente son iguales retornara false por ende pasara a ejecutarse el else mostrando que el nombre no se encuentra en la base de datos y de nuevo el break terminara el bucle

Como seguro te has dado cuenta el bucle solo realiza una iteración siempre por eso te muestra la información del primer elemento únicamente.

Saludos
3  Programación / Programación C/C++ / Re: [AYUDA] Busqueda de comparacion de cadenas con arreglo de estructuras en: 13 Mayo 2015, 19:33 pm
rir3760, te agradezco lo que mencionas de verdad que si, pero necesito imprimir en pantalla los datos del struct (nombre, edad) dependiendo de la busqueda, no es suficiente indicar con que se encuentra dentro del arreglo, porque no es lo que solicitaron.

Solo es cuestión de agregarle algunos printf y ya

Código
  1. for (i = 0; i < 10 && strcmp(nombreBusqueda, arregloPersonas[i].nombre); i++);
  2.        if (i != 10)
  3.        {
  4.            printf("\n\n\nNOMBRE ENCONTRADO!!\n");
  5.            printf("\n--Informacion de la Persona--");
  6.            printf("\nNombre de la Persona Buscada:  %s", arregloPersonas[i].nombre);
  7.            printf("\nEdad de la Persona Buscada:  %i", arregloPersonas[i].edad);
  8.        }
  9.        else
  10.            puts("El nombre no se encuentra en la base de datos");
  11.  

Y del porque no funciona tu programa, ya te lo explicaron los compañeros mas arriba

Saludos
4  Programación / Programación C/C++ / Re: Numero menor recursivo en: 21 Abril 2015, 02:37 am
Por ultimo la función no necesita de tres argumentos, con solo dos basta:

rir3760 porque sacrificar rendimiento y velocidad por únicamente ahorrarte un parámetro mas, lo digo porque esta linea

Código
  1. min(a[0], valormenor(a + 1, n - 1));

Se convierte en

Código
  1. (a[0] < valormenor(a + 1, n - 1))?(a[0]):(valormenor(a + 1, n - 1));

Como se puede ver , valormenor se llama dos veces, esas dos llamadas hacen cuatro llamadas que a su ves estas realizan otras ocho llamadas y así sucesivamente, por lo esto tendrá una directa incidencia en la velocidad de la función, esto puede notarse si el array es de una tamaño mayor

Un saludo

 
5  Programación / Programación C/C++ / Re: Convertir entero a binario con uniones y campos de bit en: 12 Abril 2015, 05:27 am
Suponiendo que int es de 4 bytes y short es 2 conversor tendría el siguiente aspecto :

Código
  1. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX // <- conversor union
  2. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX // <- int entero
  3.                XXXXXXXXXXXXXXXX // <- struct bin
  4.                         XXXXXXX // <- campo sin nombre
  5.                        X        // <- valor

Su código establece entero a 8, que se verá así :

00000000000000000000000000001000

Luego se imprime el valor contenido en conver.bin.valor el cual mostrara el octavo bit que es cero, seguidamente desplazamos entero un bit a la izquierda resultando

00000000000000000000000000010000

Este proceso se repetirá 8 veces, pero cuando i sea igual a tres valor se establecerá a uno, en ese momento ocho sera desplazado cuatro posiciones a la izquierda dando lugar a 128 que en binario es 10000000

Como seguramente ya te has dado cuenta, el campo de bits sin nombre (unsigned short : 7;) sirve como 7 bits de relleno, de manera que a valor le corresponda el octavo bit

Un Saludo

6  Programación / Programación C/C++ / Re: letras iniciales de una oracion en mayuscula en: 11 Abril 2015, 18:32 pm
La aproximación que expones, presenta un comportamiento indefinido debido a que estas modificando un puntero que apunta a una cadena literal (linea 19)

Un Saludo
7  Programación / Programación C/C++ / Re: Establecer el estado de un determinado bit Encendido/Apagado [C] en: 16 Febrero 2015, 23:42 pm
312 en decimal ==> 100111000 en binario.-
Como puedo hacer para mostrar el estado del bits 5 en este caso encendido.-

Solo necesitas asignar a mask el resultado de desplazar 1 a la posición donde quieres verificar el estado del bit .

Código
  1. int pos = 5, mask = 1 << pos, numero = 312;
  2.  
  3. if(numero & mask)
  4.   puts("Encendido");
  5. else
  6.   puts("Apagado");
 

Un Saludo
8  Programación / Programación C/C++ / Re: De decimal a binario sumando sólo los bits encendidos [C]. en: 14 Febrero 2015, 21:45 pm
Si la idea es convertir cualquier entero sin signo a su equivalente binario, lo mas conveniente seria trabajar con unsigned mas en tu caso ya que 2147483648 ya no es representable por un simple int ya estaría provocando un desbordamiento de enteros. Y ahora para establecer la mascara de bit necesaria lo mas correcto (teniendo en cuenta lo dicho) y portable seria:

Código
  1. unsigned bits = 1U << sizeof(unsigned) * CHAR_BIT - 1;

Un Saludo
9  Programación / Programación C/C++ / Re: Array de estructura (struct) typedef y punteros[C]. en: 8 Febrero 2015, 15:33 pm
Es necesario cambiar

Código
  1. (*ptrcontact+3).order = 3;

a

Código
  1. ptrcontact[3].order = 3;

O poniendo los paretesís necesarios al usar arítmetica de punteros

Código
  1. (*(ptrcontact+3)).order = 3;

También usando el operador ->

Código
  1. (ptrcontact + 3)->order = 3;

De lo contrario, de acuerdo con la regla de prioridad  * tiene mayor precedencia sobre + provocando el error en tu caso.

Un Saludo

10  Programación / Programación C/C++ / Re: Obtener longitud de un array de enteros en C en: 13 Enero 2015, 15:16 pm
Puedes utilizar la siguiente expresión:

Código
  1. int n = (&array)[1] - array;

Donde (&array)[1] apunta a la siguiente posición respecto al final del array y  array apunta al primer elemento del array, con todo esto es evidente que con una simple resta sacas la longitud del array.

Un Saludo
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 20
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines