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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Temas
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22
71  Programación / Programación C/C++ / duda con arreglo de caracteres en: 1 Abril 2014, 02:23 am
Saludos

si yo quiero declarar un arreglo de 2 caracteres que sean:

char arreglo[] = {'\0',','};

uno que es una coma, y el otro que es el simbolo de fin de cadena, pero me dicen que al declarar un arreglo de caracteres al final se le tiene que poner precisamente el simbolo '\0', entonces tendria yo que poner a fuerzas otro signo de fin de linea??

char arreglo[] = {'\0',',','\0'};
72  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
73  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
74  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
75  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
76  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???
77  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
78  Programación / Programación C/C++ / mpz_set_str() en: 18 Marzo 2014, 15:41 pm
alguien que conozca alguna funcion de la libreria gmp que me permita ingresar enteros??, tengo la función mpz_set_str(num,text.c_str(),10); pero en esta el segundo miembro tiene que ser un string, y eso es lo que no quiero necesito una función que me ingrese un entero sin el uso de cadenas

gracias
79  Programación / Programación C/C++ / dudas con strcpy en: 15 Marzo 2014, 19:31 pm
Saludos

tengo una duda con respecto al uso de strcpy

si tengo una cadena por ejemplo:

char *cadena = "hola mundo";

y despues quiero cambiar el contenido de esa cadena, puedo usar el strcpy para eso??

strcpy(cadena,"lo que quieras escribir");

gracias
80  Programación / Programación C/C++ / usar funciones de gmp en: 14 Marzo 2014, 01:28 am
Saludos, acabo de instalar la libreria gmp en codeblocks para hacer un código en c++ y apenas me estoy enseñando a usar algunas de sus funciones, por ejemplo si quiero declarar una variable uso el mpz_t, que tengo entendido es el equivalente a un int(un int del tamaño que tu quieras), despues inicializo esa variable con mpz_init, y despues le asigno un valor a la variable, pero en los ejemplos que he visto para asignarle un valor tienes que ponerle por ejemplo:

 mpz_set_str(num1, "123456789101112131415161718192021222324252627282930", 10);

pero qué pasa si tu quieres que sea el usuario el que le ingrese el numero que se le va a asignar a num1, en vez de escribirlo directamente en el código, cómo haría esto??

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