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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  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
81  Programación / Programación C/C++ / problemas con long long int en: 13 Marzo 2014, 00:37 am
Saludos
Tengo un codigo en el que tengo que pedirle a un usuario que me ingrese un numero de tipo long long int, y después tengo que escribir ese número en un archivo de texto, lo tengo que hacer dígito por dígito porque no tengo que usar cadenas, el problema es que me imprime basura y no entiendo por qué, el problema lo tengo creo yo, en el fwrite()

Código
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #define MAX 40
  5.  
  6. using namespace std;
  7.  
  8. void escribirNumero(long long int numero,FILE *fd);
  9.  
  10. int main()
  11. {
  12.    long long int numero;
  13.    FILE *fd;
  14.    int digito,x;
  15.    if((fd = fopen("Practica1.txt","w"))!= NULL)
  16.    {
  17.        cout << "Dame el numero: " << endl;
  18.        cin >> numero;
  19.        cout << "Que digito desea buscar? " << endl;
  20.        cin >> digito;
  21.        escribirNumero(numero,fd);
  22.    }
  23.    else
  24.       printf("No se pudo crear archivo\n");
  25.    return 0;
  26. }
  27.  
  28. void escribirNumero(long long int numero,FILE *fd)
  29. {
  30.    long long int cociente,residuo;
  31.    for(cociente = numero;cociente != 0;cociente = cociente/10)
  32.    {
  33.        residuo = cociente % 10;
  34.        fwrite(&residuo,12,1,fd);
  35.    }
  36. }

gracias
82  Programación / Programación C/C++ / problemas al instalar libreria en: 10 Marzo 2014, 17:18 pm
Saludos, estoy intentando instalar y compilar la libreria GMP en Codeblocks pero no he podido,  me dijeron que descargara estos dos archivos GMP-MinGW-package y el  gmp-4.1, pero a la hora de seguir las siguientes instrucciones, en la pestaña de link libreries no encuentro la que dice compiler:

went to the build options of this project
A. Project -> Build Options
- linker: add library "gmp" (without quotation marks)
A1. Tab: Linker Settings Subtab: Link Lib..
- directories - compiler: added [GMP-MinGW-package]\include
A2. Tab: Search Directory Subtab:Compiler
- directories - linker: added [GMP-MinGW-package]\lib
A3. Tab: Search Directory Subtab:Linker
83  Programación / Programación C/C++ / modos de direccionamiento indexado de 5/9/16 bits en: 5 Marzo 2014, 21:32 pm
Saludos

tengo el siguiente código en el que tengo una cadena de nombre operando como la siguiente:

2983,X

y tengo que averiguar que modo de direccionamiento indexado es, las reglas son:

Modo indizado de 5 bits. en el operando se representan números decimales con un rango de -16 a 15, despues del valor debe de haber siempre una coma, y después el nombre de registro que puede ser X,Y,SP o PC

Modo indizado de 9 bits. Es lo mismo que en el de arriba solo que los numeros decimales de  rango desde -256 a -17 y de 16 a 255.

Modo indizado de 16 bits. Es lo mismo solo que tiene rango de 256 a 65535.

para estos tres modos de direccionamiento ya tengo el código que funciona bien, pero tengo que agregarle otro modo de direccionamiento un poco diferente y no se bien cómo hacerlo:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5. #define CERO 0
  6. #define MAX_DIRECTO 255
  7. #define MAX_IDX_INDIRECTO 65535
  8. #define MIN_IDX_9BITS 16
  9. #define MAX_IDX_9BITS 255
  10. #define MIN_EXT_IDX16BITS 256
  11. #define MAX_EXT_IDX16BITS 65535
  12. #define MIN_IDX_5BITS -16
  13. #define MAX_IDX_5BITS 15
  14. #define MIN_9BITS_NEG -256
  15. #define MAX_9BITS_NEG -17
  16. #define INMEDIATO '#'
  17. #define HEXADECIMAL '$'
  18. #define OCTAL '@'
  19. #define BINARIO '%'
  20. #define INDEXADO_INDIRECTO '['
  21.  
  22. int verificarRegistro(char *cadena);
  23. void verificarRangoIndexado_5_9_16bits(int num);
  24. void modoDireccionamiento(char *operando);
  25. void indexado_5bits_9bits_16bits(char *operando,int x);
  26. int convertir_a_numero(char *cadena);
  27.  
  28. int main()
  29. {
  30.    char *operando = "5,X";
  31.    modoDireccionamiento(operando);
  32.    return 0;
  33. }
  34.  
  35. void modoDireccionamiento(char *operando)
  36. {
  37.    int car;
  38.    car = operando[0];
  39.    switch(car)
  40.    {
  41.        case '-':
  42.           x = 1;
  43.           indexado_5bits_9bits_16bits(operando,x);
  44.           break;
  45.        case '0':
  46.        case '1':
  47.        case '2':
  48.        case '3':
  49.        case '4':
  50.        case '5':
  51.        case '6':
  52.        case '7':
  53.        case '8':
  54.        case '9':
  55.           x = 0;
  56.           indexado_5bits_9bits_16bits(operando,x);
  57.           break;
  58.        default:
  59.           printf("Error");
  60.    }
  61. }
  62.  
  63. void indexado_5bits_9bits_16bits(char *operando,int x)
  64. {
  65.    int i,j,num;
  66.    char *cadena = NULL,c[2],*cadena2 = NULL;
  67.    cadena = calloc(6,sizeof(char));
  68.    cadena2 = calloc(2,sizeof(char));
  69.    for(i = x;operando[i] != ',';i++)
  70.    {
  71.        sprintf(c,"%c",operando[i]);
  72.        strcat(cadena,c);
  73.    }
  74.    for(j = i+1;operando[j] != '\0';j++)
  75.    {
  76.        sprintf(c,"%c",operando[j]);
  77.        strcat(cadena2,c);
  78.    }
  79.    num = convertir_a_numero(cadena);
  80.    if(x == 1)
  81.       num = num*(-1);
  82.    if(verificarRegistro(cadena2))
  83.       verificarRangoIndexado_5_9_16bits(num);
  84.    else
  85.       printf("\nRegistro invalido para modo de direccionamiento indexado Indirecto\n");
  86. }
  87.  
  88. int convertir_a_numero(char *cadena)
  89. {
  90.    int i,j,entero,numero = 0,lon;
  91.    int potencias[] = {1,10,100,1000,10000};
  92.    lon = strlen(cadena);
  93.    for(i = 0,j = lon-1;cadena[i] != '\0';i++,j--)
  94.    {
  95.        entero = cadena[i]-48;
  96.        numero += entero*potencias[j];
  97.    }
  98.    return numero;
  99. }
  100.  
  101. void verificarRangoIndexado_5_9_16bits(int num)
  102. {
  103.    if(num >= MIN_IDX_5BITS && num <= MAX_IDX_5BITS)
  104.       printf("Indexado de 5 bits, (IDX)\n");
  105.    else if((num >= MIN_9BITS_NEG && num <= MAX_9BITS_NEG)||(num >= MIN_IDX_9BITS && num <= MAX_IDX_9BITS))
  106.       printf("Indexado de 9 bits, (IDX)\n");
  107.    else if(num >= MIN_EXT_IDX16BITS && num <= MAX_EXT_IDX16BITS)
  108.       printf("Indexado de 16 bits, (IDX)\n");
  109.    else
  110.    {
  111.        printf("Error: El rango valido de un direccionamiento indexado de 5 bits es de -16 a 15\n");
  112.        printf("el de un direccionamiento indexado de 9 bits es de -256 a -17 y de 16 a 255\n");
  113.        printf("y el de un direccionamiento indexado de 16 bits es de 256 a 65535\n");
  114.    }
  115. }
  116.  
  117. int verificarRegistro(char *cadena)
  118. {
  119.    int i;
  120.    char *registro[] = {"X","Y","SP","PC"};
  121.    for(i = 0;i < 4;i++)
  122.    {
  123.        if((strcmp(cadena,registro[i])) == 0)
  124.           return 1;
  125.    }
  126.    return 0;
  127. }
  128.  

y el direccionamiento que le tengo que agregar dice:

Modo indexado de Pre/Post Incremento Decremento: sus valores númericos tienen rango de 1 a 8, después del valor debe de haber siempre una coma y después de la coma hay un signo positivo o negativo y despues el nombre de registro X,Y o SP, algo como: +X,-SP..O tambien puede tener primero el nombre del registro y despues el signo como: X+,SP-

Pero no tengo una idea clara de como hacer las modificaciones al codigo que ya tengo para agregarle esto,el problema es que los registros despues de la coma son diferentes a los de los otros 3 direccionamientos, alguna idea??

gracias de antemano
84  Programación / Programación C/C++ / fopen() y c++ en: 3 Marzo 2014, 19:30 pm
Saludos

estoy empezando un código en c++ en el cual tengo que usar fopen para abrir un archivo y sprintf, pero no entiendo por qué en c si me funcionan perfectamente y en c++ me aparece un error que dice:

fopen was not declared in this scope, y lo mismo dice para sprintf
85  Programación / Programación C/C++ / problema al leer archivo en: 2 Marzo 2014, 01:11 am
Saludos, tengo un archivo que tengo que leer e imprimir en pantalla y este archivo es bastante grande, el problema es que no lo imprime completo, pero si le empiezo a quitar lineas ya me lo imprime bien, lo que hace es que mientras mas lineas le agrego, en pantalla las lineas de al principio van desapareciendo, o sea me va cortando la parte de arriba para darle lugar a las lineas que voy agregando abajo,¿a que se debe esto y como puedo solucionarlo??

gracias
86  Programación / Programación C/C++ / numero maximo permitido en: 20 Febrero 2014, 22:52 pm
Saludos

tengo que hacer un programa que me permita ingresarle un numero mayor a 100000000, y busque si el digito x existe en el número y cuantas veces se repite, el numero no debe de ser cadena o char, en el algoritmo ya tengo pensando como hacerlo ya que pues tienes que hacer un busqueda y eso no es la parte dificil, no necesito el codigo. El problema es que me ponen de restriccion que el usuario pueda meter el numero maximo permitido por el sistema o sea hasta que se llene el buffer y que sea a prueba de error, alguna idea de como hacer esto??

gracias
87  Programación / Programación C/C++ / modos de direccionamiento en: 16 Febrero 2014, 21:18 pm
Saludos, tengo el siguiente codigo que dado un operando (una cadena) tiene que verificar que modo de direccionamiento es, puede ser inmediato,directo o indexado, yo ahora estoy verificando cuando un operando es indexado, esto es: que el primer caracter sea un corchete [, que el segundo caracter sea una d ó D, que el tercer caracter sea una coma, y ya que verificaste los primeros 3 el termino que va despues de la coma puede ser X,Y,SP,PC, o sea algo como:

[D,X], [D,Y], [D,SP], [D,PC]  

el problema lo tengo en la funcion direccionamientoIndexado() que se supone que me tiene que imprimir el termino que va despues de la coma, pero cuando los operandos son: [D,SP] o [D,PC] el segundo termino lo imprime como SSP en vez de SP y no entiendo por qué. EL codigo va leyendo desde la coma hasta el corcheta ] y lo que se encuentre entre estos dos los guarda en una cadena

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define INMEDIATO '#'
  5. #define DIRECTO '$'
  6. #define INDEXADO '['
  7.  
  8. void modoDireccionamiento(char *operando);
  9. void direccionamientoIndexado(char *operando);
  10. int esNumeroBase16(char caracter);
  11. int esLetraBase16(char caracter);
  12. int esOctal(char caracter);
  13. int esBinario(char caracter);
  14.  
  15. int main()
  16. {
  17.    char *operando = "[D,PC]";
  18.    modoDireccionamiento(operando);
  19.    return 0;
  20. }
  21.  
  22. void modoDireccionamiento(char *operando)
  23. {
  24.    int car,esInmediato,esDirecto,esIndexado,tam,i;
  25.    tam = strlen(operando);
  26.    car = operando[0];
  27.    switch(car)
  28.    {
  29.        case INMEDIATO:
  30.           esInmediato = 1;
  31.           car = operando[1];
  32.           switch(car)
  33.           {
  34.               case '\0':
  35.                  printf("Es un formato invalido para un modo de direccionamiento inmediato\n");
  36.                  break;
  37.               case '$':
  38.                  for(i = 2;((i < tam)&&(esInmediato));i++)
  39.                  {
  40.                      if((!esNumeroBase16(operando[i]))&&(!esLetraBase16(operando[i])))
  41.                         esInmediato = 0;
  42.                  }
  43.                  if(!esInmediato)
  44.                     printf("Se encontro un digito invalido para un numero de base 16");
  45.                  break;
  46.               case '@':
  47.                  for(i = 2;((i < tam)&&(esInmediato));i++)
  48.                  {
  49.                      if(!esOctal(operando[i]))
  50.                         esInmediato = 0;
  51.                  }
  52.                  if(!esInmediato)
  53.                     printf("Se encontro un digito invalido para un numero de base 8");
  54.                  break;
  55.               case '%':
  56.                  for(i = 2;((i < tam)&&(esInmediato));i++)
  57.                  {
  58.                      if(!esBinario(operando[i]))
  59.                         esInmediato = 0;
  60.                  }
  61.                  if(!esInmediato)
  62.                     printf("Se encontro un digito invalido para un numero de base 2");
  63.                  break;
  64.               default:
  65.                  printf("Error");
  66.           }
  67.           break;
  68.        case DIRECTO:
  69.           esDirecto = 1;
  70.           if(operando[1] == '\0')
  71.              printf("Es un formato invalido para un modo de direccionamiento directo\n");
  72.           else
  73.           {
  74.               for(i = 2;((i < tam)&&(esDirecto));i++)
  75.               {
  76.                   if((!esNumeroBase16(operando[i]))&&(!esLetraBase16(operando[i])))
  77.                      esDirecto = 0;
  78.               }
  79.               if(!esDirecto)
  80.                  printf("Se encontro un digito invalido para un numero de base 16");
  81.           }
  82.           break;
  83.        case INDEXADO:
  84.           esIndexado = 1;
  85.           car = operando[1];
  86.           switch(car)
  87.           {
  88.               case '\0':
  89.                  printf("Es un formato invalido para un modo de direccionamiento indexado\n");
  90.                  break;
  91.               case ',':
  92.                  printf("No puede haber una instruccion vacia antes de la coma");
  93.                  break;
  94.               case 'd':
  95.               case 'D':
  96.                  if(operando[2] == ',')
  97.                  {
  98.                      direccionamientoIndexado(operando);
  99.                         //esIndexado = 0;
  100.                  }
  101.                  //if(!esIndexado)
  102.                     //printf("Es un formato invalido para direccionamiento indexado");
  103.                  break;
  104.               default:
  105.                  printf("Error");
  106.           }
  107.           break;
  108.        default:
  109.           printf("Error: es un formato invalido para los modos de direccionamiento inmediato\n");
  110.    }
  111. }
  112.  
  113. int esNumeroBase16(char caracter)
  114. {
  115.    if(caracter >= '0' && caracter <= '9')
  116.       return 1;
  117.    else
  118.       return 0;
  119. }
  120.  
  121. int esLetraBase16(char caracter)
  122. {
  123.    if((caracter >= 'A' && caracter <= 'F')||(caracter >= 'a' && caracter <= 'f'))
  124.       return 1;
  125.    else
  126.       return 0;
  127. }
  128.  
  129. int esOctal(char caracter)
  130. {
  131.    if(caracter >= '0' && caracter <= '7')
  132.       return 1;
  133.    else
  134.       return 0;
  135. }
  136.  
  137. int esBinario(char caracter)
  138. {
  139.    if(caracter == '1' || caracter == '0')
  140.       return 1;
  141.    else
  142.       return 0;
  143. }
  144.  
  145. void direccionamientoIndexado(char *operando)
  146. {
  147.    int i;
  148.    char *cadena = NULL,c[2];
  149.    cadena = calloc(2,sizeof(char));
  150.    for(i = 3;operando[i] != ']';i++)
  151.    {
  152.        sprintf(c,"%c",operando[i]);
  153.        strcat(cadena,c);
  154.        printf("%s",cadena);
  155.    }
  156. }
  157.  

si alguien me pudiera decir donde esta el error se lo agradeceria mucho
88  Programación / Programación C/C++ / Macros en C en: 14 Febrero 2014, 18:06 pm
Saludos, tengo una duda acerca de cómo se pueden usar unas MACROS en lenguaje C, es posible que el nombre de la MACRO tenga asignado mas de un valor?? por ejemplo:

NOMBRE '#','$','@'

89  Programación / Programación C/C++ / problema con sprintf en: 9 Febrero 2014, 19:46 pm
Saludos, tengo el siguiente código que me tiene que abrir un archivo que se llama P1ASM.txt, pero el programa me tiene que preguntar el nombre del archivo para ver si se encuentra, pero me imprime No se pudo abrir el archivo y no entiendo por que si el archivo se encuentra en la misma carpeta donde tengo el codigo no deberia de haber errores

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define MAX 40
  5.  
  6. int main()
  7. {
  8.   FILE *fd;
  9.    char nombre[MAX],archivo[MAX];
  10.    printf("Que archivo quieres abrir: ");
  11.    fgets(nombre,MAX,stdin);
  12.    sprintf(archivo,"%s.txt",nombre);
  13.    if((fd = fopen(archivo,"r"))!= NULL)
  14.       printf("Si se encontro");
  15.    else
  16.       printf("No se pudo abrir el archivo");
  17.   return 0;
  18. }
  19.  

gracias
90  Foros Generales / Dudas Generales / busco un libro en: 4 Febrero 2014, 23:29 pm
Saludos

necesito que alguien me recomiende un libro que hable sobre la computación tolerante a fallas, especificamente de los temas capacidad de proceso y especificacion de operacion, tengo que hacer unos resúmenes de estos temas pero no encuentro informacion que me ayude

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
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines