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 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 40
71  Programación / Programación C/C++ / Re: bug en mi codigo en: 10 Junio 2014, 18:35 pm
gracias eferion por tu respuesta, le haré esos cambios a mi código. Una última pregunta, si tengo declarada un puntero como *cadena y después le asigno memoria así:

codigo_datos = (char*)malloc(33*sizeof(char));

es correcto después de hacer esto inicializarla con NULL??

72  Programación / Programación C/C++ / bug en mi codigo en: 9 Junio 2014, 22:52 pm
Saludos

tengo la siguiente función que se llama checkSumS1() que creo que me esta ocasionando que me truene un programa, no quiero publicar el código completo porque son 3,500 y tantas líneas de código. Lo que hace es que le paso 3 cadenas(Longitud, direccion y codigo_datos) y dentro de la función las concatena en una variable llamada registroS1, después va leyendo registroS1 de dos caracteres en dos. Por ejemplo si tengo ABE31000 primero va a obtener AB, que se supone es un "numero hexadecimal" y lo voy a convertir a su equivalente en decimal, y lo mismo con los demas caracteres. los decimales se van sumando, a la suma se le saca complemento a 1 y se obtienen sus 2 ultimos caracteres

Código
  1. char *CheckSumS1(char *Longitud,char *direccion,char *codigo_datos)
  2. {
  3.    int i,j,k,numero,x = 0,base = 16,suma = 0,complemento;
  4.    char *registroS1,*byte,digito[2],*checksum;
  5.    registroS1 = (char*)malloc(39*sizeof(char));
  6.    checksum = (char*)malloc(3*sizeof(char));
  7.    sprintf(registroS1,"%s%s%s",Longitud,direccion,codigo_datos);
  8.    for(i = 0;registroS1[i];i+=2)
  9.    {
  10.        byte = (char*)calloc(3,sizeof(char));
  11.        for(j = 1,k = i;j <= 2;j++,k++)
  12.        {
  13.            sprintf(digito,"%c",registroS1[k]);
  14.            strcat(byte,digito);
  15.        }
  16.        numero = obtenerNumero(byte,x,base);
  17.        suma+=numero;
  18.        free(byte);
  19.    }
  20.    complemento = ~suma;
  21.    sprintf(checksum,"%02X",complemento);
  22.    checksum = ultimos2bits(checksum);
  23.    return checksum;
  24. }

no se bien cual podria ser la causa de que cada vez que cuando el  codigo llega a esta función para ejecutarla a veces me truena y otras no. no se si  el sprintf y el strcat sean la mejor opcion para usarlos en la función, pero fue lo único que se me ocurrió para que me fuera leyendo de 2 en dos. si alguien me dijera cual es el bug que tiene me codigo se lo agradeceria mucho

gracias
73  Programación / Bases de Datos / backup en postgres en: 5 Junio 2014, 22:58 pm
Saludos

tengo una tabla creada en postgres que tengo que exportar a un archivo.txt, para esto pense que podria usar pg_dump, el problema es que cuando le pongo:

pg_dump act16 > archivo.txt

me aparece un error que dice error de sintaxis en o cerca de pg_dump, no se en que me equivoque

gracias
74  Programación / Programación C/C++ / asignación dinámica de memoria y strcpy en: 5 Junio 2014, 18:53 pm
Saludos

Tengo un pequeño código en el cual le asigno memoria a un puntero dinamicamente, despues le asigno unos valores y los imprimo, el problema lo tengo en el strcpy que se supone que le tiene que asignar la cadena "hola" al puntero, pero el programa truena y no entiendo por qué??

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7.    char *x;
  8.    x= (char*)calloc(10,sizeof(char));
  9.    x = "101010101";
  10.    printf("[%s]\n",x);
  11.    strcpy(x,"hola");
  12.    printf("[%s]\n",x);
  13.    return 0;
  14. }

gracias
75  Programación / Bases de Datos / Re: problema con consulta en: 30 Mayo 2014, 06:56 am
muchas gracias elezekiel por tu respuesta, una ultima duda si la consulta dice:

Combinando una proyección y un producto cartesiano listar los nombres de todas las personas a las que les guste la cerveza 'HEINEKEN'. yo si se lo que es un producto cartesiano pero no se a que se refiere con proyeccion, entonces hice lo siguiente

SELECT p.nombre
FROM CLIENTE AS p, CERVEZA AS c, GUSTA AS g
WHERE g.idCLIENTE=p.id AND g.idCERVEZA=c.id
AND c.nombre = 'HEINEKEN';

pero no se si estoy en lo correcto

de nuevo gracias
76  Programación / Bases de Datos / problema con consulta en: 30 Mayo 2014, 03:32 am
Saludos tengo las siguientes tablas

BAR(id,nombre)
CERVEZA(id,nombre)
CLIENTE(id,nombre)
SIRVE(idBAR,idCERVEZA)
ASISTE(idCLIENTE,idBAR)
GUSTA(idCLIENTE,idCERVEZA)

y tengo la consulta que dice nombrar los nombres de las cervezas que no se sirven en el bar 'TARROS'

lo que llevo es esto:

SELECT c.nombre FROM BAR AS b, CERVEZA AS c, SIRVE AS s
WHERE c.id=s.idCERVEZA AND b.id=s.idBAR AND b.nombre='TARROS'

pero a partir de ahi ya no se como seguir

gracias
77  Programación / Bases de Datos / consultas simples en: 9 Mayo 2014, 20:33 pm
Saludos

tengo la siguientes tablas
CENTROS (Numero, Nombre, Direccion)
DEPARTAMENTOS (Numero, Centro, Director, Tipo_director, Presupesto, Depto_jefe, Nombre)
EMPLEADOS (Cod, Departamento, Telefono, Fecha_nacimiento, Fecha_ingreso, Salario, Comision,Num_hijos, Nombre)

y me pide que haga las siguientes consultas:

20. Obtener, por orden alfabético, los nombres y los salarios de los empleados cuyo salario coincide con la comisión de cualquier otro o la suya propia.

yo pense que seria algo como esto:

SELECT Nombre, Salario
FROM EMPLEADOS
WHERE Salario=Comision;

pero en el problema me dice que el salario puede coincidir con la comision de cualquier otro y esa es la parte que no se como hacerla.

otra es: 22. Para los departamentos cuyo salario medio supera al promedio de la empresa, hallar cuántas extensiones telefónicas tienen.

SELECT COUNT(Telefono)
FROM EMPLEADOS AS e, DEPARTAMENTOS AS d
WHERE AVG(e.salario) > AVG(salario);

pero no se como calcular el promedio del salario de toda la empresa

gracias

78  Programación / Programación C/C++ / problema con una lista en: 1 Mayo 2014, 21:35 pm
Saludos

Tengo la siguiente función que se llama crearArchivoTABSIM() la cual se encuentra dentro de un ciclo en el main, y cada vez que entra al ciclo se le asigna a la funcion una cadena que se llama etiqueta(char *etiqueta).

Código
  1. void crearArchivoTABSIM(char *etiqueta)
  2. {
  3.    FILE *tb;
  4.    ETIQ *p = NULL;
  5.    if((strcmp(etiqueta,"null")) != 0)
  6.    {
  7.        crearListaEtiquetas(&p,etiqueta);
  8.        imprimirEtiquetas(p);
  9.        if((tb = fopen("TABSIM.txt","a+")) != NULL)
  10.        {
  11.            fwrite(etiqueta,strlen(etiqueta),1,tb);
  12.            fwrite("\n",1,1,tb);
  13.        }
  14.    }
  15. }

y dentro de la función crearArchivoTABSIM() se encuentra la función crearListaEtiquetas() que me va a crear una lista simplemente ligada que tiene un campo char *etiqueta,y que cada vez que le envie una etiqueta me la va a insertar al principio, y después de esta esta la función imprimirEtiquetas() que me va a ir imprimiendo las etiquetas


Código
  1. void crearListaEtiquetas(ETIQ **p,char *etiqueta)
  2. {
  3.    ETIQ *nuevo;
  4.    nuevo = crearEtiqueta(etiqueta);
  5.    nuevo->sig = *p;
  6.    *p = nuevo;
  7. }
  8.  
  9. ETIQ *crearEtiqueta(char *etiqueta)
  10. {
  11.    ETIQ *x;
  12.    int lon;
  13.    lon = strlen(etiqueta);
  14.    x = malloc(sizeof(ETIQ));
  15.    x->Etiqueta = malloc((lon+1)*sizeof(char));
  16.    strcpy(x->Etiqueta,etiqueta);
  17.    return x;
  18. }
  19.  
  20. void imprimirEtiquetas(ETIQ *p)
  21. {
  22.    ETIQ *ptr;
  23.    for(ptr = p;ptr!=NULL;ptr = ptr->sig)
  24.       printf("[%s]\n",ptr->Etiqueta);
  25. }
  26.  
como  por ejemplo:

Si le mando las etiquetas ET1, ET2,ET3,ET4

deberia imprimir

1) ET1
2)ET1    ET2
3)ET1   ET2    ET3
4)ET1   ET2    ET3     ET4

pero el problema que tengo es que solo me esta imprimiendo el primer nodo, o sea a donde apunte la cabeza de lista y no se que estoy haciendo mal, previamente ya habia hecho listas ligadas y no me habian dado ningun problema

de antemano gracias
79  Foros Generales / Dudas Generales / número hexadecimal en: 26 Abril 2014, 05:21 am
Saludos

tengo una duda de como hacer un procedimiento de conversión de un número decimal negativo a su hexadecimal, se que si el número fuera positivo con tan solo hacer divisiones sucesivas obtendría el resultado, pero cuál es el procedimiento para los negativos??

gracias
80  Programación / Programación C/C++ / Re: operador ~ en: 23 Abril 2014, 04:21 am
gracias por sus respuestas, les preguntaba de este operador porque estoy haciendo un código en el que tengo una cadena tipo "01011001" y tengo sacarle el complemento a 1, o sea cambiar unos por ceros y ceros por unos. Yo pense que esto lo podia hacer con el operador ~, pero me dicen que es solo para enteros.

No se de que otra manera podria hacer esto, en el código lo que tengo al principio es una cadena que representa un número negativo como "-12"  y lo tengo que convertir a binario, primero lo tengo que convertir a numero (porque es una cadena) y después para obtener el binario de 5 digitos tengo que hacer el complemento a 1 primero y el complemento a dos despues, pero primero tengo que ir por pasos y sacar el complemento a 1.
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 40
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines