|
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 char *CheckSumS1(char *Longitud,char *direccion,char *codigo_datos) { int i,j,k,numero,x = 0,base = 16,suma = 0,complemento; char *registroS1,*byte,digito[2],*checksum; registroS1 = (char*)malloc(39*sizeof(char)); checksum = (char*)malloc(3*sizeof(char)); sprintf(registroS1 ,"%s%s%s",Longitud ,direccion ,codigo_datos ); for(i = 0;registroS1[i];i+=2) { byte = (char*)calloc(3,sizeof(char)); for(j = 1,k = i;j <= 2;j++,k++) { sprintf(digito ,"%c",registroS1 [k ]); } numero = obtenerNumero(byte,x,base); suma+=numero; } complemento = ~suma; sprintf(checksum ,"%02X",complemento ); checksum = ultimos2bits(checksum); return checksum; }
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é?? #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char *x; x = (char*)calloc(10,sizeof(char)); x = "101010101"; return 0; }
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). void crearArchivoTABSIM(char *etiqueta) { FILE *tb; ETIQ *p = NULL; if((strcmp(etiqueta ,"null")) != 0) { crearListaEtiquetas(&p,etiqueta); imprimirEtiquetas(p); if((tb = fopen("TABSIM.txt","a+")) != NULL ) { } } }
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 void crearListaEtiquetas(ETIQ **p,char *etiqueta) { ETIQ *nuevo; nuevo = crearEtiqueta(etiqueta); nuevo->sig = *p; *p = nuevo; } ETIQ *crearEtiqueta(char *etiqueta) { ETIQ *x; int lon; x ->Etiqueta = malloc((lon +1)*sizeof(char)); return x; } void imprimirEtiquetas(ETIQ *p) { ETIQ *ptr; for(ptr = p;ptr!=NULL;ptr = ptr->sig) printf("[%s]\n",ptr ->Etiqueta ); }
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.
|
|
|
|
|
|
|