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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  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 24 25 ... 40
91  Programación / Bases de Datos / consultas en: 30 Marzo 2014, 20:06 pm
Saludos

Tengo la siguiente tabla que se llama partidas_pedidos que cuenta con los siguientes campos:

id_pedido,cliente,fecha_pedido,producto,cantidad

y luego me hace una consulta que dice :

Listar los valores de id_pedido, cliente y producto de la tabla partidas_pedidos, cuya compra se haya efectuado en un mes de abril. Suponga que el campo fecha_pedido sea de tipo char(10).

SELECT id_pedido,cliente,producto FROM partidas_pedidos WHERE fecha_pedido LIKE ‘’;

el problema es que no se que ponerle en las comillas del LIKE'', si la fecha es algo como:  2000-04-01  como ponerle que la fecha tiene que ser en el mes de abril??

y luego si tengo una tabla que se llama info_clientes con los campos: id_cliente,nombre,apellido,ciudad y estado. La consulta dice:

Desplegar la información de los clientes cuyo apellido empiece con ‘H’ y termine con ‘A’ y viva en un estado cuyo nombre lo formen 7 letras.

SELECT *FROM info_clientes
WHERE apellido LIKE ‘H%’ AND apellido LIKE ‘%A’ AND estado=’’;

pero aqui no se como verificar que el estado este conformado por solo 7 letras, tedria que usar el COUT(*)???

gracias
92  Programación / Bases de Datos / Re: llaves foraneas en: 29 Marzo 2014, 00:56 am
muchas gracias por tu respuestaDarhius, una ultima pregunta si yo quiero respaldar la base de datos que acabo de hacer en un archivo.txt, como lo hago?? que comando tengo que usar?
93  Programación / Bases de Datos / llaves foraneas en: 28 Marzo 2014, 23:43 pm
Saludos, ya puede instalar bien el postgres y ahora estoy creando dos tablas, una con datos de un empleado y otra del departamento al que pertence

CREATE TABLE compania.empleado (
    codigo       INT,
    nombrep      VARCHAR(15)    NOT NULL,
    apellido     VARCHAR(15)    NOT NULL,
    sexo         CHAR           DEFAULT 'M',
    salario      DECIMAL(10,2),
    nd           INT            NOT NULL,

   CONSTRAINT pk_empleado PRIMARY KEY (codigo)
);

esta es la primer tabla, y la segunda es:

CREATE TABLE compania.departamento (
    numerod      INT            NOT NULL,
    nombred      VARCHAR(25)    NOT NULL,
    gerente      CHAR(9)        NOT NULL,

   CONSTRAINT pk_departamento PRIMARY KEY(numerod)
);

despues el ejercicio me dice que tengo que definir una llave foranea que apunte al departamento al que pertenece el empleado (nd) y hago lo siguiente:

ALTER TABLE compania.empleado ADD CONSTRAINT restriccion FOREIGN KEY(nd) REFERENCES compania.departamento(numerod);

no me marca error, pero no se si he hecho la llave correctamente, y antes de seguir agregandole cosas a las tablas quiero saber si esta mal

gracias
94  Programación / Bases de Datos / Re: problema en postgres en: 28 Marzo 2014, 17:56 pm
es dentro del cmd
95  Programación / Bases de Datos / problema en postgres en: 28 Marzo 2014, 04:34 am
Saludos

estoy empezando a utilizar postgres, el problema que tengo es que después de instalarlo cuando quiero ir a donde esta la carpeta pgsql que tengo en el escritorio y escribo esto:

C:Users>Invitado>cd Escritorio

me aparece el mensaje

El sistema no puede encontrar la ruta especificada

y no entiendo por qué me aparece esto, me dijeron que lo hiciera en una cuenta diferente a la de Administrador y eso hice pero aun asi no funciona

gracias
96  Programación / Programación C/C++ / problema con archivo de texto en: 23 Marzo 2014, 23:50 pm
Saludos tengo el siguiente archivo de texto que dice:

;ejemplo con errores
Et12_xyz123     ADCA      1,PC
%ET3        LDAA      #$90
Netq%23        RMB      556
etv1
XYZ        Ldaaxyz   4
        %XYZ
        a.c.      %1111000
Abc        SWI%

y el codigo me tiene que imprimir esto

COMENTARIO

ETIQUETA = Et12_xyz123
CODOP =ADCA
OPERANDO = 1,PC
.....
....
....
 
y asi con todas las lineas, pero me imprime

COMENTARIO

NO SE ENCONTRO CODOP

y no entiendo por que imprime esto ultimo si solo en las lineas que no son comentarios me tiene que verificar si se encontro el codop o no

el codigo es este:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5. #define LONG_ETIQUETA 8
  6. #define LONG_CODOP 5
  7. #define COMENTARIO ';'
  8. #define TABULADOR '\t'
  9. #define ESPACIOS_ ' '
  10. #define MAX 8
  11. #define MAXIMO 40
  12.  
  13. typedef enum {FALSO,VERDADERO} booleano;
  14. typedef enum {ETIQUETA,CODOP,OPERANDO} linea;
  15. typedef enum {INS,OP,DIR,MAQ,CALCULADO,CALCULAR,TOTAL} tabla;
  16.  
  17. typedef struct nodo
  18. {
  19.    char *instruccion;
  20.    char *operando;
  21.    char **modo_direccionamiento;
  22.    char **codigo_maquina;
  23.    char **bytes_calculados;
  24.    char **bytes_x_calcular;
  25.    char **suma_bytes;
  26.    int tipo_linea;
  27.    struct nodo *sig;
  28. }COD;
  29.  
  30. void imprimirInfo(COD *p);
  31. int verificarCombinacion(FILE *fd);
  32. booleano esComentario(FILE *fd);
  33. char *Etiqueta_Codop_Operando(FILE *fd,int linea);
  34. char *_Codop_Operando(FILE *fd,int linea);
  35. void ultimaLinea(char *codop);
  36. void erroresEtiqueta(char *etiqueta);
  37. void erroresCodop(char *codop);
  38. void buscarFinLinea(FILE *fd);
  39. void ignorarEspacios(FILE *fd);
  40. void listaTABOP(COD **cabeza);
  41. COD *ultimoElemento(COD **cabeza);
  42. COD *crearNodo(char *ins,char *op,char **dir,char **maq,char **cal,char **x_cal,char **sum,int n);
  43. void insertarFinal(char *ins,char *op,char **dir,char **maq,char **cal,char **x_cal,char **sum,COD *ultimo,int n);
  44. char *Tabla_Operandos(FILE *hc12,int tabla);
  45. COD *buscarCodop(COD *cabeza,char *codop);
  46. void quitarSaltosLinea(char *cadena);
  47. booleano esNumero(char caracter);
  48. booleano esLetra(char caracter);
  49. void verificarOperando(COD *encontrado,char *operando);
  50.  
  51. int main()
  52. {
  53.    FILE *fd;
  54.    int car,combinacion;
  55.    COD *cabeza = NULL,*encontrado = NULL;
  56.    char nombre[MAXIMO],archivo[MAXIMO],respuesta,*etiqueta,*codop,*operando;
  57.    listaTABOP(&cabeza);
  58.    do
  59.    {
  60.        printf("\nQue archivo quieres abrir: ");
  61.        fgets(nombre,sizeof(nombre),stdin);
  62.        quitarSaltosLinea(nombre);
  63.        sprintf(archivo,"%s.txt",nombre);
  64.        if((fd = fopen(archivo,"r"))!= NULL)
  65.        {
  66.            while((car = fgetc(fd))!= EOF)
  67.            {
  68.                switch(car)
  69.                {
  70.                    case COMENTARIO:
  71.                       if(esComentario(fd))
  72.                          printf("COMENTARIO\n\n");
  73.                       else
  74.                          buscarFinLinea(fd);
  75.                       break;
  76.                    case ESPACIOS_:
  77.                    case TABULADOR:
  78.                       etiqueta = "null";
  79.                       printf("ETIQUETA = %s\n",etiqueta);
  80.                       ignorarEspacios(fd);
  81.                       codop = Etiqueta_Codop_Operando(fd,CODOP);
  82.                       printf("CODOP = %s\n",codop);
  83.                       erroresCodop(codop);
  84.                       combinacion = verificarCombinacion(fd);
  85.                       if(combinacion == 2)
  86.                       {
  87.                           operando = "null";
  88.                           printf("OPERANDO = %s\n\n",operando);
  89.                       }
  90.                       else
  91.                       {
  92.                           ignorarEspacios(fd);
  93.                           operando = Etiqueta_Codop_Operando(fd,OPERANDO);
  94.                           printf("OPERANDO = %s\n\n",operando);
  95.                       }
  96.                       break;
  97.                    default:
  98.                       etiqueta = Etiqueta_Codop_Operando(fd,ETIQUETA);
  99.                       printf("ETIQUETA = %s\n",etiqueta);
  100.                       erroresEtiqueta(etiqueta);
  101.                       combinacion = verificarCombinacion(fd);
  102.                       if(combinacion == 2)
  103.                       {
  104.                           codop = "null";
  105.                           printf("CODOP = %s\n",codop);
  106.                           erroresCodop(codop);
  107.                           operando = "null";
  108.                           printf("OPERANDO = %s\n\n",operando);
  109.                       }
  110.                       else
  111.                       {
  112.                           ignorarEspacios(fd);
  113.                           codop = Etiqueta_Codop_Operando(fd,CODOP);
  114.                           printf("CODOP = %s\n",codop);
  115.                           erroresCodop(codop);
  116.                           combinacion = verificarCombinacion(fd);
  117.                           if(combinacion == 2)
  118.                           {
  119.                               operando = "null";
  120.                               printf("OPERANDO = %s\n\n",operando);
  121.                           }
  122.                           else
  123.                           {
  124.                               ignorarEspacios(fd);
  125.                               operando = Etiqueta_Codop_Operando(fd,OPERANDO);
  126.                               printf("OPERANDO = %s\n\n",operando);
  127.                           }
  128.                       }
  129.                       break;
  130.                }
  131.                if((strcmp(codop,"null"))!= 0)
  132.                {
  133.                    if((encontrado = buscarCodop(cabeza,codop)) == NULL)
  134.                       printf("NO SE ENCONTRO EL CODOP DE OPERACION\n\n");
  135.                    else
  136.                    {
  137.                        verificarOperando(encontrado,operando);
  138.                        imprimirInfo(encontrado);
  139.                    }
  140.                }
  141.  
  142.            }
  143.            ultimaLinea(codop);
  144.        }
  145.        else
  146.           printf("No se pudo abrir el archivo");
  147.        printf("Quieres abrir otro archivo S/N: ");
  148.        fgets(nombre,MAX,stdin);
  149.        sscanf(nombre,"%c",&respuesta);
  150.        system("cls");
  151.    }while(respuesta == 'S' || respuesta == 's');
  152.    return 0;
  153. }
  154.  
  155. booleano esComentario(FILE *fd)
  156. {
  157.    int car;
  158.    while((car = fgetc(fd))!= '\n')
  159.    {
  160.        if(car == ';')
  161.           return 0;
  162.    }
  163.    return 1;
  164. }
  165.  
  166. void buscarFinLinea(FILE *fd)
  167. {
  168.    int car;
  169.    while((car = fgetc(fd))!= '\n')
  170.        ;
  171. }
  172.  
  173. void ignorarEspacios(FILE *fd)
  174. {
  175.    int car;
  176.    do
  177.    {
  178.        car = fgetc(fd);
  179.    }while(car == '\t' || car == ' ');
  180. }
  181.  
  182. int verificarCombinacion(FILE *fd)
  183. {
  184.    int car,combinacion;
  185.    fseek(fd,-1,SEEK_CUR);
  186.    if((car = fgetc(fd))== '\n')
  187.       combinacion = 2;
  188.    else
  189.       combinacion = 1;
  190.    return combinacion;
  191. }
  192.  
  193. booleano esLetra(char caracter)
  194. {
  195.    if((caracter >= 'A' && caracter <= 'Z')||(caracter >= 'a' && caracter <= 'z'))
  196.       return 1;
  197.    else
  198.       return 0;
  199. }
  200.  
  201. booleano esNumero(char caracter)
  202. {
  203.    if(caracter >= '0' && caracter <= '9')
  204.       return 1;
  205.    else
  206.       return 0;
  207. }
  208.  
  209. char *Etiqueta_Codop_Operando(FILE *fd,int linea)
  210. {
  211.    int car,lon = 0,pos;
  212.    char *cadena;
  213.    fseek(fd,-1,SEEK_CUR);
  214.    pos = ftell(fd);
  215.    if((linea == ETIQUETA)||(linea == CODOP))
  216.    {
  217.        do
  218.        {
  219.            car = fgetc(fd);
  220.            lon++;
  221.        }while(car != '\t' && car != ' ' && car != '\n');
  222.    }
  223.    else
  224.    {
  225.        do
  226.        {
  227.            car = fgetc(fd);
  228.            lon++;
  229.        }while(car != '\n');
  230.    }
  231.    cadena = (char*)calloc((lon+1),sizeof(char));
  232.    fseek(fd,pos,SEEK_SET);
  233.    fgets(cadena,lon+1,fd);
  234.    quitarSaltosLinea(cadena);
  235.    return cadena;
  236. }
  237.  
  238. void erroresEtiqueta(char *etiqueta)
  239. {
  240.    int tam,i = 0,esEtiqueta = 1;
  241.    tam = strlen(etiqueta);
  242.    if(tam > LONG_ETIQUETA)
  243.       printf("\tError:la longitud maxima de una etiqueta es de 8 caracteres\n");
  244.    if(!esLetra(etiqueta[i]))
  245.       printf("\tError:la etiqueta debe iniciar con letra\n");
  246.    else
  247.    {
  248.        for(i = 0;(i < tam)&&(esEtiqueta);i++)
  249.        {
  250.           if((!esLetra(etiqueta[i]))&&(!esNumero(etiqueta[i]))&&(etiqueta[i] != '_'))
  251.              esEtiqueta = 0;
  252.        }
  253.        if(!esEtiqueta)
  254.           printf("\tError:los caracteres validos en las etiquetas son letras, digitos(0..9) y el guion bajo\n");
  255.    }
  256. }
  257.  
  258. void erroresCodop(char *codop)
  259. {
  260.    int tam,i = 0,esCodop = 1,punto = 0;
  261.    tam = strlen(codop);
  262.    if(tam > LONG_CODOP)
  263.       printf("\tError:la longitud maxima de un codigo de operacion es de 5 caracteres\n");
  264.    if((strcmp(codop,"null"))== 0)
  265.       printf("\tError:siempre debe de haber un codigo de operacion\n");
  266.    else
  267.    {
  268.        if(!esLetra(codop[i]))
  269.        printf("\tError:los codigos de operacion deben iniciar con letra\n");
  270.        else
  271.        {
  272.            for(i = 1;(i < tam)&&(esCodop)&&(punto>=0&&punto<=1);i++)
  273.            {
  274.                if((!esLetra(codop[i]))&&(codop[i] != '.'))
  275.                   esCodop = 0;
  276.                else if(codop[i] == '.')
  277.                   punto++;
  278.            }
  279.            if(!esCodop)
  280.               printf("\tError:los caracteres validos en un codigo de operacion son letras y el caracter punto\n");
  281.            if(punto > 1)
  282.               printf("\tError:los codigos de operacion no pueden tener mas de un punto\n");
  283.        }
  284.    }
  285. }
  286.  
  287. void ultimaLinea(char *codop)
  288. {
  289.    int lon1,lon2,i;
  290.    lon1 = strlen(codop);
  291.    lon2 = strlen("end");
  292.    if(lon1 != lon2)
  293.       printf("Error: No se encontro el END.\n");
  294.    else
  295.    {
  296.        for(i = 0;codop[i];i++)
  297.           codop[i] = tolower(codop[i]);
  298.        if((strcmp(codop,"end")) != 0)
  299.           printf("Error: No se encontro el END.\n");
  300.    }
  301. }
  302.  
  303. void quitarSaltosLinea(char *cadena)
  304. {
  305.    char *ptr;
  306.    if(((ptr=strchr(cadena,'\n'))!=NULL)||((ptr=strchr(cadena,'\t'))!=NULL)||((ptr=strchr(cadena,' '))!=NULL))
  307.       *ptr = '\0';
  308. }
  309.  
  310. void listaTABOP(COD **cabeza)
  311. {
  312.    int car,i,pos,n;
  313.    FILE *hc12;
  314.    COD *ultimo = NULL;
  315.    char *ins,*op,**dir,**maq,**cal,**x_cal,**sum;
  316.    if((hc12 = fopen("TABOP.txt","r"))!= NULL)
  317.    {
  318.        while((car = fgetc(hc12))!= EOF)
  319.        {
  320.            i = 0;
  321.            ins = Tabla_Operandos(hc12,INS);
  322.            ignorarEspacios(hc12);
  323.            op = Tabla_Operandos(hc12,OP);
  324.            pos = ftell(hc12);
  325.            buscarFinLinea(hc12);
  326.            if((car = fgetc(hc12)) != '\t')
  327.            {
  328.                n = 0;
  329.                fseek(hc12,pos,SEEK_SET);
  330.                ignorarEspacios(hc12);
  331.                dir = (char**)malloc(sizeof(char*));
  332.                dir[i] = Tabla_Operandos(hc12,DIR);
  333.                ignorarEspacios(hc12);
  334.                maq = (char**)malloc(sizeof(char*));
  335.                maq[i] = Tabla_Operandos(hc12,MAQ);
  336.                ignorarEspacios(hc12);
  337.                cal = (char**)malloc(sizeof(char*));
  338.                cal[i] = Tabla_Operandos(hc12,CALCULADO);
  339.                ignorarEspacios(hc12);
  340.                x_cal = (char**)malloc(sizeof(char*));
  341.                x_cal[i] = Tabla_Operandos(hc12,CALCULAR);
  342.                ignorarEspacios(hc12);
  343.                sum = (char**)malloc(sizeof(char*));
  344.                sum[i] = Tabla_Operandos(hc12,TOTAL);
  345.                buscarFinLinea(hc12);
  346.            }
  347.            else
  348.            {
  349.                n = 1;
  350.                fseek(hc12,pos,SEEK_SET);
  351.                dir = (char**)malloc(MAX*sizeof(char*));
  352.                maq = (char**)malloc(MAX*sizeof(char*));
  353.                cal = (char**)malloc(MAX*sizeof(char*));
  354.                x_cal = (char**)malloc(MAX*sizeof(char*));
  355.                sum = (char**)malloc(MAX*sizeof(char*));
  356.                do
  357.                {
  358.                    ignorarEspacios(hc12);
  359.                    dir[i] = Tabla_Operandos(hc12,DIR);
  360.                    ignorarEspacios(hc12);
  361.                    maq[i] = Tabla_Operandos(hc12,MAQ);
  362.                    ignorarEspacios(hc12);
  363.                    cal[i] = Tabla_Operandos(hc12,CALCULADO);
  364.                    ignorarEspacios(hc12);
  365.                    x_cal[i] = Tabla_Operandos(hc12,CALCULAR);
  366.                    ignorarEspacios(hc12);
  367.                    sum[i] = Tabla_Operandos(hc12,TOTAL);
  368.                    buscarFinLinea(hc12);
  369.                    i++;
  370.                }while((car = fgetc(hc12)) == '\t');
  371.                fseek(hc12,-1,SEEK_CUR);
  372.            }
  373.            if(*cabeza == NULL)
  374.               *cabeza = crearNodo(ins,op,dir,maq,cal,x_cal,sum,n);
  375.            else
  376.            {
  377.                ultimo = ultimoElemento(cabeza);
  378.                insertarFinal(ins,op,dir,maq,cal,x_cal,sum,ultimo,n);
  379.            }
  380.        }
  381.    }
  382.    else
  383.       printf("No se pudo abrir el archivo");
  384. }
  385.  
  386. COD *ultimoElemento(COD **cabeza)
  387. {
  388.    COD *ptr;
  389.    ptr = *cabeza;
  390.    while(ptr->sig != NULL)
  391.       ptr = ptr->sig;
  392.    return ptr;
  393. }
  394.  
  395. char *Tabla_Operandos(FILE *hc12,int tabla)
  396. {
  397.    int car,lon = 0,pos;
  398.    char *cadena;
  399.    fseek(hc12,-1,SEEK_CUR);
  400.    pos = ftell(hc12);
  401.    if((tabla==INS)||(tabla==OP)||(tabla==DIR)||(tabla==MAQ)||(tabla==CALCULADO)||(tabla==CALCULAR))
  402.    {
  403.        do
  404.        {
  405.            car = fgetc(hc12);
  406.            lon++;
  407.        }while(car != '\t' && car != EOF);
  408.    }
  409.    else
  410.    {
  411.        do
  412.        {
  413.            car = fgetc(hc12);
  414.            lon++;
  415.        }while(car != '\n' && car != EOF);
  416.        lon--;
  417.    }
  418.    fseek(hc12,pos,SEEK_SET);
  419.    cadena = (char*)calloc((lon+1),sizeof(char));
  420.    fgets(cadena,lon+1,hc12);
  421.    quitarSaltosLinea(cadena);
  422.    return cadena;
  423. }
  424.  
  425. COD *buscarCodop(COD *cabeza,char *codop)
  426. {
  427.    int i;
  428.    COD *ptr;
  429.    for(i = 0;codop[i];i++)
  430.       codop[i] = toupper(codop[i]);
  431.    for(ptr = cabeza;ptr != NULL;ptr = ptr->sig)
  432.    {
  433.        if((strcmp(ptr->instruccion,codop)) == 0)
  434.           return ptr;
  435.    }
  436.    return NULL;
  437. }
  438.  
  439. void insertarFinal(char *ins,char *op,char **dir,char **maq,char **cal,char **x_cal,char **sum,COD *ultimo,int n)
  440. {
  441.    ultimo->sig = crearNodo(ins,op,dir,maq,cal,x_cal,sum,n);
  442.    ultimo->sig->sig = NULL;
  443.    ultimo = ultimo->sig;
  444. }
  445.  
  446. COD *crearNodo(char *ins,char *op,char **dir,char **maq,char **cal,char **x_cal,char **sum,int n)
  447. {
  448.    int tam,tam1,tam2,tam3,i;
  449.    COD *x;
  450.    x = (COD*)malloc(sizeof(COD));
  451.    tam = strlen(ins);
  452.    tam1 = strlen(op);
  453.    x->instruccion = (char*)malloc((tam+1)*sizeof(char));
  454.    x->operando = (char*)malloc((tam1+1)*sizeof(char));
  455.    strcpy(x->instruccion,ins);
  456.    strcpy(x->operando,op);
  457.    x->tipo_linea = n;
  458.    if(n == 1)
  459.    {
  460.        x->modo_direccionamiento = (char**)malloc(MAX*sizeof(char*));
  461.        x->codigo_maquina = (char**)malloc(MAX*sizeof(char*));
  462.        x->bytes_calculados = (char**)malloc(MAX*sizeof(char*));
  463.        x->bytes_x_calcular = (char**)malloc(MAX*sizeof(char*));
  464.        x->suma_bytes = (char**)malloc(MAX*sizeof(char*));
  465.        for(i = 0;i < MAX;i++)
  466.        {
  467.            tam2 = strlen(dir[i]);
  468.            x->modo_direccionamiento[i] = (char*)malloc((tam2+1)*sizeof(char));
  469.            strcpy(x->modo_direccionamiento[i],dir[i]);
  470.            tam3 = strlen(maq[i]);
  471.            x->codigo_maquina[i] = (char*)malloc((tam3+1)*sizeof(char));
  472.            strcpy(x->codigo_maquina[i],maq[i]);
  473.            x->bytes_calculados[i] = (char*)malloc(sizeof(char));
  474.            strcpy(x->bytes_calculados[i],cal[i]);
  475.            x->bytes_x_calcular[i] = (char*)malloc(sizeof(char));
  476.            strcpy(x->bytes_x_calcular[i],x_cal[i]);
  477.            x->suma_bytes[i] = (char*)malloc(sizeof(char));
  478.            strcpy(x->suma_bytes[i],sum[i]);
  479.        }
  480.    }
  481.    else
  482.    {
  483.        x->modo_direccionamiento = (char**)malloc(sizeof(char*));
  484.        x->codigo_maquina = (char**)malloc(sizeof(char*));
  485.        x->bytes_calculados = (char**)malloc(sizeof(char*));
  486.        x->bytes_x_calcular = (char**)malloc(sizeof(char*));
  487.        x->suma_bytes = (char**)malloc(sizeof(char*));
  488.        tam2 = strlen(dir[0]);
  489.        x->modo_direccionamiento[0] = (char*)malloc((tam2+1)*sizeof(char));
  490.        strcpy(x->modo_direccionamiento[0],dir[0]);
  491.        tam3 = strlen(maq[0]);
  492.        x->codigo_maquina[0] = (char*)malloc((tam3+1)*sizeof(char));
  493.        strcpy(x->codigo_maquina[0],maq[0]);
  494.        x->bytes_calculados[0] = (char*)malloc(sizeof(char));
  495.        strcpy(x->bytes_calculados[0],cal[0]);
  496.        x->bytes_x_calcular[0] = (char*)malloc(sizeof(char));
  497.        strcpy(x->bytes_x_calcular[0],x_cal[0]);
  498.        x->suma_bytes[0] = (char*)malloc(sizeof(char));
  499.        strcpy(x->suma_bytes[0],sum[0]);
  500.    }
  501.    x->sig = NULL;
  502.    return x;
  503. }
  504.  
  505. void verificarOperando(COD *encontrado,char *operando)
  506. {
  507.    if((strcmp(encontrado->operando,"SI")) == 0)
  508.    {
  509.        if((strcmp(operando,"null")) == 0)
  510.           printf("EL CODOP DEBE TENER OPERANDO\n");
  511.    }
  512.    else if((strcmp(encontrado->operando,"NO")) == 0)
  513.    {
  514.        if(!(strcmp(operando,"null")) == 0)
  515.           printf("EL CODOP NO DEBE TENER OPERANDO\n");
  516.    }
  517. }
  518.  
  519. void imprimirInfo(COD *p)
  520. {
  521.    int i,num_lineas;
  522.    printf("\n%s ",p->instruccion);
  523.    if(p->tipo_linea == 1)
  524.       num_lineas = MAX;
  525.    else
  526.       num_lineas = 1;
  527.    for(i = 0;i < num_lineas;i++)
  528.    {
  529.        printf("\t%s\t",p->modo_direccionamiento[i]);
  530.        printf("%s\t",p->codigo_maquina[i]);
  531.        printf("%s\t",p->bytes_calculados[i]);
  532.        printf("%s\t",p->bytes_x_calcular[i]);
  533.        printf("%s\n",p->suma_bytes[i]);
  534.    }
  535. }
  536.  

gracias de antemano
97  Programación / Programación C/C++ / Re: "bloquear" teclas en: 21 Marzo 2014, 18:50 pm
gracias por sus respuestas, creo que no es considerado buena práctica de programación usar la librería conio.h, me dijeron que también podía hacerlo con eventos de teclado, solo que no he encontrado mucha información de como hacer uno
98  Programación / Programación C/C++ / "bloquear" teclas en: 21 Marzo 2014, 01:58 am
Saludos

Si por ejemplo yo quiero escribir en un archivo solamente dígitos del 0 al 9, que no se acepte ningun otro caracter, y sin necesidad de hacer ninguna otra validación(como leer el archivo y verificar caracter por caracter que todos sean numeros), hay alguna manera de "bloquear" algunas teclas y que no le permita al usuario ingresar caracteres que no sean numeros?? esto se podria hacer???
99  Programación / Programación C/C++ / Re: funcion de conversion de bases en: 20 Marzo 2014, 01:44 am
muchas gracias a todos por sus respuestas, nunca me hubiera dado cuenta que era la función pow() la que me daba problemas, otra duda: por qué en la linea

 entero = operando-'0';

le ponen -'0' en vez de -48??
100  Programación / Programación C/C++ / funcion de conversion de bases en: 19 Marzo 2014, 01:09 am
Saludos

tengo una funcion llamada obtener numero, a la que le paso una cadena como argumento algo como #456 y la base(hex,octal,binaria o decimal), y me regresa un int con el numero(ya sin el #) el problema es que si le ingreso el numero #65536 me imprime que el numero es 65535 y no entiendo por qué imprime eso, ya lo habia probado para numeros de otras bases y lo hacia correctamente no se por que ahora no, solo puse la funcion que me da problemas por que el codigo es un poco largo

Código
  1. int obtenerNumero(char *operando,int base)
  2. {
  3.    int i,potencia,num_decimal = 0,lon,entero,x = 1;
  4.    lon = strlen(operando);
  5.    for(i = lon-1,potencia = 0;i >= x;i--,potencia++)
  6.    {
  7.        if(esLetraBase16(operando[i]))
  8.           entero = hexadecimal(operando[i]);
  9.        else
  10.           entero = operando[i]-48;
  11.        num_decimal+= pow(base,potencia)*entero;
  12.        printf("%d\n",num_decimal);
  13.    }
  14.    printf("[%d]",num_decimal);
  15.    return num_decimal;
  16. }
  17.  
  18. int hexadecimal(char caracter)
  19. {
  20.    int decimal;
  21.    switch(caracter)
  22.    {
  23.        case 'A':case 'a':
  24.           decimal = 10;
  25.           break;
  26.        case 'B':case 'b':
  27.           decimal = 11;
  28.           break;
  29.        case 'C':case 'c':
  30.           decimal = 12;
  31.           break;
  32.        case 'D':case 'd':
  33.           decimal = 13;
  34.           break;
  35.        case 'E':case 'e':
  36.           decimal = 14;
  37.           break;
  38.        case 'F':case 'f':
  39.           decimal = 15;
  40.           break;
  41.        default:
  42.           printf("!Error!\n");
  43.    }
  44.    return decimal;
  45. }
  46.  

me imprime

6
36
536
5536
65535

gracias de antemano
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 24 25 ... 40
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines