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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  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
121  Programación / Programación C/C++ / problema con do-while en: 31 Octubre 2013, 21:01 pm
Saludos

tengo que crear un programa que pida al usuario pares de números enteros y escriba su suma (con el formato "20 + 3 = 23")en pantalla y en un fichero llamado "sumas.txt", que se encontrará en un subdirectorio llamado "resultados".
  Cada vez que se ejecute el programa deberá añadir los nuevos resultados a continuación de los resultados anteriores

y el codigo es el siguiente y compila correctamente:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define TAM 10
  4. /*
  5.   Crear un programa que pida al usuario pares de números enteros y escriba su suma (con el formato "20 + 3 = 23")
  6.   en pantalla y en un fichero llamado "sumas.txt", que se encontrará en un subdirectorio llamado "resultados".
  7.   Cada vez que se ejecute el programa deberá añadir los nuevos resultados a continuación de los resultados anteriores.
  8. */
  9.  
  10. int main()
  11. {
  12.    FILE *fd;
  13.    int numero1,numero2,suma,continuar = 1;
  14.    char respuesta,cad[TAM];
  15.    if((fd = fopen("F:\\resultados\\sumas.txt","a+"))!= NULL)
  16.    {*/
  17.        do
  18.        {
  19.            printf("Dame primer numero: ");
  20.            fgets(cad,TAM,stdin);
  21.            sscanf(cad,"%d",&numero1);
  22.            printf("Dame segundo numero: ");
  23.            fgets(cad,TAM,stdin);
  24.            sscanf(cad,"%d",&numero2);
  25.            suma = numero1+numero2;
  26.            printf("%d + %d = %d",numero1,numero2,suma);
  27.            printf("\n\nDesea hacer otra suma? (S/N)\n");
  28.            fgets(cad,TAM,stdin);
  29.            sscanf(cad,"%c",&respuesta);
  30.            if(respuesta == 'N')
  31.               continuar = 0;
  32.        }while(continuar);
  33.    }
  34.    else
  35.       printf("No se pudo crear archivo\n");
  36.    return 0;
  37. }
  38.  
el problema es que si a la hora de hacerme la pregunta Desea hacer otra suma, yo quiero validar que la respuesta sea solamente o S o N, y si la respuesta es otro caracter que haga un while preguntandome si quiero otra suma hasta que el caracter sea valido, para esto le hice la siguiente modificacion al codigo pero el dowhile interior nunca se sale y no entiendo por que

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define TAM 10
  4. /*
  5.   Crear un programa que pida al usuario pares de números enteros y escriba su suma (con el formato "20 + 3 = 23")
  6.   en pantalla y en un fichero llamado "sumas.txt", que se encontrará en un subdirectorio llamado "resultados".
  7.   Cada vez que se ejecute el programa deberá añadir los nuevos resultados a continuación de los resultados anteriores.
  8. */
  9.  
  10. int main()
  11. {
  12.    FILE *fd;
  13.    int numero1,numero2,suma,continuar = 1;
  14.    char respuesta,cad[TAM];
  15.    if((fd = fopen("F:\\resultados\\sumas.txt","a+"))!= NULL)
  16.    {
  17.        do
  18.        {
  19.            printf("Dame primer numero: ");
  20.            fgets(cad,TAM,stdin);
  21.            sscanf(cad,"%d",&numero1);
  22.            printf("Dame segundo numero: ");
  23.            fgets(cad,TAM,stdin);
  24.            sscanf(cad,"%d",&numero2);
  25.            suma = numero1+numero2;
  26.            printf("%d + %d = %d",numero1,numero2,suma);
  27.            do
  28.            {
  29.                printf("\n\nDesea hacer otra suma? (S/N)\n");
  30.                fgets(cad,TAM,stdin);
  31.                sscanf(cad,"%c",&respuesta);
  32.            }while((respuesta != 'S')||(respuesta != 'N'));
  33.            if(respuesta == 'N')
  34.               continuar = 0;
  35.        }while(continuar);
  36.    }
  37.    else
  38.       printf("No se pudo crear archivo\n");
  39.    return 0;
  40. }
  41.  

de antemano gracias
122  Programación / Programación C/C++ / agenda y archivos en: 28 Octubre 2013, 23:10 pm
Saludos, tengo que crear un programa que me cree Una agenda que maneje los siguientes datos: nombre, dirección, tlf móvil, email, y día, mes y año de nacimiento, Se podra añadir un dato nuevo, visualizar los nombres de las fichas existentes, o mostrar los datos

pero hay una parte que dice: leerá los datos de un fichero llamado “agenda.dat” (si existe). Al terminar, guardará todos los datos en ese fichero. y es lo que no entiendo bien que quiere decir, como voy a leer datos de un fichero si me esta diciendo que guarde todos los datos en el fichero al final y en la parte que dice añadir un dato nuevo, se refiere a agregar una Persona a la agenda con su nombre,direccion,tel... o a inventar un nuevo dato como edad o algo asi??

Código
  1. #include <stdlib.h>
  2. #include <string.h>
  3. #define AGREGAR 1
  4. #define VISUALIZAR 2
  5. #define MOSTRAR 3
  6. #define SALIR 4
  7. #define TAM 3
  8. #define MAX 45
  9. typedef struct datos
  10. {
  11.    char nombre[MAX];
  12.    char direccion[MAX];
  13.    char tlf_movil[MAX];
  14.    char email[MAX];/*
  15.     Fecha fechaNacimiento;*/
  16. }Agenda;
  17.  
  18. void agregar_Persona(Agenda persona[],int i);
  19. void visualizar_Nombres(Agenda persona[],int i);
  20. void mostrar_datos(char nombreBuscar[],Agenda persona[],int i);
  21.  
  22. int main()
  23. {
  24.    int i = 0,continuar = 1,opcion;
  25.    char nombreBuscar[MAX],op[TAM];
  26.    FILE *fd;
  27.    Agenda persona[TAM];/*
  28.     if((fd = fopen("F:\\agenda.dat","w"))!= NULL)
  29.     {*/
  30.        do
  31.        {
  32.            printf("Menu\n");
  33.            printf("1)Agregar Registro\n");
  34.            printf("2)Visualizar Nombres\n");
  35.            printf("3)Mostrar datos\n");
  36.            printf("4)Salir\n");
  37.            fgets(op,TAM,stdin);
  38.            sscanf(op,"%d",&opcion);
  39.            switch(opcion)
  40.            {
  41.                case AGREGAR:
  42.                   if(i < TAM)
  43.                   {
  44.                       agregar_Persona(persona,i);
  45.                       i++;
  46.                   }
  47.                   else
  48.                      printf("No se permiten agregar mas de 100 registros");
  49.                   break;
  50.                case VISUALIZAR:
  51.                   visualizar_Nombres(persona,i);
  52.                   break;
  53.                case MOSTRAR:
  54.                   printf("Dame el nombre de la persona a mostrar: ");
  55.                   fgets(nombreBuscar,MAX,stdin);
  56.                   mostrar_datos(nombreBuscar,persona,i);
  57.                   break;
  58.                case SALIR:
  59.                   continuar = 0;
  60.                   break;
  61.                default : printf("Opcion invalida!");
  62.            }
  63.            if(continuar)
  64.            {
  65.                system("pause");
  66.                system("cls");
  67.            }
  68.        }while(continuar);
  69. /*
  70.     }*/
  71.    return 0;
  72. }
  73.  
  74. void agregar_Persona(Agenda persona[],int i)
  75. {
  76.    char cadena[MAX];
  77.    printf("Dame nombre:\n");
  78.    fgets(persona[i].nombre,MAX,stdin);
  79.    printf("Dame direccion:\n");
  80.    fgets(persona[i].direccion,MAX,stdin);
  81.    printf("Dame telefono movil:\n");
  82.    fgets(persona[i].tlf_movil,MAX,stdin);
  83.    printf("Dame email:\n");
  84.    fgets(persona[i].email,MAX,stdin);
  85.    system("cls");
  86. }
  87.  
  88. void visualizar_Nombres(Agenda persona[],int i)
  89. {
  90.    int j;
  91.    for(j = 0;j < i;j++)
  92.       printf("%s\n",persona[j].nombre);
  93. }
  94.  
  95. void mostrar_datos(char nombreBuscar[],Agenda persona[],int i)
  96. {
  97.    int j;
  98.    for(j = 0;j < i;j++)
  99.    {
  100.        if((strcmp(nombreBuscar,persona[j].nombre))== NULL)
  101.        {
  102.            printf("%s\n",persona[j].nombre);
  103.            printf("%s\n",persona[j].direccion);
  104.            printf("%s\n",persona[j].tlf_movil);
  105.            printf("%s\n",persona[j].email);
  106.        }
  107.    }
  108. }
  109.  
123  Programación / Programación C/C++ / Libreria de grafos en: 24 Octubre 2013, 01:19 am
Saludos

Tengo que hacer un programa que me dice que cree un grafos simple( no permite mas de una arista entre dos vertices), que sean dirigido o no dirigido y que puede agregar o eliminar aristas y vertices, pero la verdad no tengo muy claro si debo de hacerlo con un arreglo de listas que es una opcion que me dijo el profesor que podia hacer, pero yo la veo muy dificil porque nunca he hecho un arreglo de listas, y tampoco se si tengo que pedirle el numero de vertices y de aristas al inicio del programa, si tengo que verificar que no este vacio el grafo antes de eliminar un vertice,si los vertices los represento como nodos las aristas tambien las tengo que crear como nodos??,puedo crear una arista aun si no tengo vertices?? esto lo tengo que validar tambien?? les agredeceria que me dieran algunas sugerencias de como empezarlo porque no tengo ni la mas minima idea

gracias
124  Programación / Programación C/C++ / recorrer archivo binario en: 18 Octubre 2013, 23:22 pm
Saludos

Si tengo un arreglo de estructuras(o de registros), los cuales guardo en un archivo binario, para yo poder recorrer registro por registro(tomando en cuenta que tienen diferente longitud) en un archivo binario tengo que hacerlo secuencialmente o sea caracter por caracter, o puedo ir saltando de registro en registro hasta encontrar el que busco?? tengo que poner delimitadores entre cada registro para saber donde empieza uno y donde termina otro??

gracias
125  Programación / Programación C/C++ / sustituir scanf en: 12 Octubre 2013, 04:29 am
Saludos

Tengo el siguiente codigo en el que le ingresas datos a una estructura x, el programa compila correctamente pero tengo una duda, tengo entendido que cuando alternas una funcion como fgets() y scanf() te da problemas, y para esto le puse un ciclo while con un getchar(). Pero queria saber si podia sustituir el scanf por otra funcion que no me provoque basura en el buffer, para asi no tener que ponerle el while(getchar()!= '\n')

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define TAM 20
  4. #define MAX 10
  5. typedef struct datos
  6. {
  7.    char nombre[TAM];
  8.    int edad;
  9.    char ciudad_residencia[TAM];
  10. }Persona;
  11.  
  12. void entrada(Persona *p);
  13.  
  14. int main()
  15. {
  16.    Persona p;
  17.    int i;
  18.    for(i = 0;i < 10;i++)
  19.       entrada(&p);
  20.    return 0;
  21. }
  22.  
  23. void entrada(Persona *p)
  24. {
  25.    printf("Dame nombre:\n");
  26.    fgets(p->nombre,TAM,stdin);
  27.    printf("Dame edad:\n");
  28.    while(getchar()!='\n')
  29.    scanf("%d",&p->edad);
  30.    printf("Dame ciudad de residencia:\n");
  31.    fgets(p->ciudad_residencia,TAM,stdin);
  32. }
  33.  

gracias
126  Programación / Programación C/C++ / problema con strcmp en: 9 Octubre 2013, 21:54 pm
Saludos, tengo el siguiente codigo que me dice que tengo que ingresar nombres a un archivo de texto y en cuanto el usuario teclee la palabra fin termine, el problema es que el codigo no se detiene cuando le ingreso la palabra fin y no entiendo por que

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define TAM 10
  5. /*
  6.    Crea un programa que vaya leyendo las frases que el usuario teclea, y las guarde en un fichero de texto,
  7.    llamado “registroDeUsuario.txt”. Terminará cuando la frase introducida sea "fin"(esa frase no deberá guardarse en el fichero).
  8. */
  9.  
  10. int main()
  11. {
  12.    FILE *fd;
  13.    int i = 0,continuar = 1;
  14.    char nombre[TAM],cad[]= "fin",*p;
  15.    if((fd = fopen("F:\\registroDeUsuario.txt","w"))!= NULL)
  16.    {
  17.        do
  18.        {
  19.            printf("Dame el nombre %d:\n",i++);
  20.            fgets(nombre,TAM,stdin);
  21.            if((p = strchr(nombre,'\n'))!=NULL)
  22.               *p = '\0';
  23.            fwrite(nombre,sizeof(char),strlen(nombre),fd);
  24.            if(strcmp(nombre,cad) == 0)
  25.               continuar = 1;
  26.        }while(continuar);
  27.    }
  28.    else
  29.       printf("No se pudo abrir archivo");
  30.    return 0;
  31. }
  32.  

de antemano gracias



ya vi donde me equivoque, en la bandera continuar era 0 en vez de uno  :P
127  Foros Generales / Dudas Generales / Exception en codeblocks en: 6 Octubre 2013, 05:46 am
saludos

Tengo un grave problema, no puedo abrir el codeblocks, cada vez que lo intento me aparece un mensaje que dice:

An exception has been raised, the application encountered an error at C:CB1211.... on line 237

The error message is

TinyXML error: Error document empty.
.......
......
 
a que se debe esto? que debo hacer??

gracias
128  Programación / Programación C/C++ / compresor/descompresor de archivos en: 3 Octubre 2013, 20:22 pm
Saludos

Tengo el siguiente codigo que me tiene que comprimir un archivo cuando aparecen las siguientes palabras: de , para , con , desde , al ,y se tienen que sustituir con los siguientes signos: *, /, + ,- ,@ y escribir el texto comprimido(con las sustituciones) en otro archivo. El programa compila correctamente y me hace lo que le pido pero tiene algunos fallos, por ejemplo cuando utilizo sizeof() en unos for para sacar el numero de elementos me aparecen warnings, y tambien por ejemplo, yo se que el tamanio del texto que voy a comprimir es de 96 caracteres, por eso lo puse asi en los arreglos, pero si mi maestra quiere que me abra un archivo mas grande o mas chico no se si funcionara, como puedo corregir esto??como puedo hacer que funcione para cualquien tamanio de texto??ahh!! y otra duda, mi profesora nos dijo algo de que no queria que el archivo se sobreescribiera y que checaramos eso, no se bien a que se referia si alguien me pudiera ayudar tambien con eso se lo agradeceria

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define MAX 100
  5.  
  6. char ver_signos(char signo[],int i);
  7. char *comprimir_archivo(char signo[],char arreglo[]);
  8.  
  9. int main()
  10. {
  11.    int i,tam,ini;
  12.    char nombre[MAX],archivo[MAX],arreglo[96],*palabra,*producto,car,opcion,*ptr,sig;
  13.    char *p[]={" de "," para "," con "," desde "," al "};
  14.    char signo[]={'*','/','+','-','@'};
  15.    FILE *fd,*ap;
  16.    printf("Dame el nombre del archivo: ");
  17.    fgets(nombre,MAX,stdin);
  18.    if((ptr = strchr(nombre,'\n')) != NULL)
  19.       *ptr = '\0';
  20.    sprintf(archivo,"F:\\%s.txt",nombre);
  21.    ap = fopen("F:\\Archivo_producto.txt","w");
  22.    if((fd = fopen(archivo,"r"))!= NULL)
  23.    {
  24.        printf("Elige una opcion\n");
  25.        printf("a) Comprimir archivo\n");
  26.        printf("b) Descomprimir archivo\n");
  27.        switch(opcion = getchar())
  28.        {
  29.            case 'A':case'a':
  30.               fgets(arreglo,96,fd);
  31.               for(i=0;i < 5;i++)
  32.               {
  33.                   fseek(fd,0,SEEK_SET);
  34.                   while((car = fgetc(fd))!= EOF)
  35.                   {
  36.                       if(car == ' ')
  37.                       {
  38.                           ini = ftell(fd);
  39.                           tam = strlen(p[i]);
  40.                           palabra = (char*)malloc((tam+1)*sizeof(char));
  41.                           fseek(fd,-1,SEEK_CUR);
  42.                           fgets(palabra,tam+1,fd);
  43.                           if((strcmp(palabra,p[i]))== 0)
  44.                           {
  45.                               sig = ver_signos(signo,i);
  46.                               fseek(fd,ini,SEEK_SET);
  47.                               arreglo[ini-1] = sig;
  48.                           }
  49.                           free(palabra);
  50.                       }
  51.                   }
  52.               }
  53.               producto = comprimir_archivo(signo,arreglo);
  54.               fwrite(producto,sizeof(char),strlen(producto),ap);
  55.               break;
  56.               // me gustaria ponerle aqui el fwrite(arreglo,sizeof(char),strlen(arreglo),ap);
  57.            case 'B': case 'b':/*
  58.                for(i = 0;i < sizeof(signo);i++)
  59.                {
  60.                    while((car = fgetc(ap)))
  61.                }
  62.                break;*/
  63.            default:
  64.               printf("La opcion no existe\n");
  65.        }
  66.    }
  67.    else
  68.       printf("No se pudo abrir el archivo");
  69.    return 0;
  70. }
  71.  
  72. char ver_signos(char signo[],int i)
  73. {
  74.    int j;
  75.    for(j = 0;j < sizeof(signo);j++)// warning por usar sizeof
  76.    {
  77.        if(j == i)
  78.           return(signo[j]);
  79.    }
  80. }
  81.  
  82. char *comprimir_archivo(char signo[],char arreglo[])
  83. {
  84.    int tam[]={4,6,5,7,4},i,j,k;
  85.    char a[96];
  86.    for(i=0; i < sizeof(signo);i++)//warning por usar sizeof
  87.    {
  88.        for(j = 0,k = 0;j < 96;k++)
  89.        {
  90.            if(arreglo[j] == signo[i])
  91.            {
  92.                a[k] = arreglo[j];
  93.                j = j+tam[i];
  94.            }
  95.            else
  96.            {
  97.                a[k] = arreglo[j];
  98.                j++;
  99.            }
  100.        }
  101.        memset(arreglo,0,96);
  102.        strcpy(arreglo,a);
  103.    }
  104.    return arreglo;
  105. }
  106.  

Estas son las unicas fallas que le encontre al codigo, alomejor hay mas que no he notado, las sugerencias para hacerlo mas eficientes son bienvenidas

de antemano gracias
129  Programación / Programación C/C++ / problema con archivos en: 1 Octubre 2013, 20:22 pm
Saludos tengo el siguiente programa que me lee un archivo que tiene nombres de personas separados por una coma y me pide que le ingrese un nombre y al final me tiene que imprimir el numero de veces que aparece ese nombre en el archivo solo que no me imprime la cantidad correcta

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define TAM 10
  5.  
  6. int main()
  7. {
  8.    FILE *fd;
  9.    int i = 0,j = 0,tam;
  10.    char captura[TAM],*cadena,*nombre,car;
  11.    if((fd = fopen("F:\\nombre_archivo.txt","r"))!= NULL)
  12.    {
  13.        printf("Capture nombre a buscar: ");
  14.        fgets(captura,TAM,stdin);
  15.        tam = strlen(captura);
  16.        nombre = (char*)malloc((tam+1)*sizeof(char));
  17.        cadena = (char*)malloc((tam+1)*sizeof(char));
  18.        strcpy(nombre,captura);
  19.        while((car  = fgetc(fd))!=EOF)
  20.        {
  21.            while((car = fgetc(fd))!= ',')
  22.            {
  23.                cadena[j] = car;
  24.                j++;
  25.            }
  26.            j = 0;
  27.            if((strcmp(cadena,nombre)) == 0)
  28.               i++;
  29.        }
  30.        printf("El nombre %s se encuentra %d veces en el archivo\n",nombre,i);
  31.    }
  32.    else
  33.       printf("No se pudo abrir archivo");
  34.    return 0;
  35. }
  36.  

gracias de antemano
130  Programación / ASM / traducir ensamblador a codigo maquina en: 26 Septiembre 2013, 23:42 pm
Saludos tengo que sacar el codigo maquina de este programa en ensamblador

pero tengo una instruccion que no entiendo como va

0806                 BCD0             DS.B       1
....
....
....
E017   ??????    lbeq                FIN0       ; digito BCD0
....
....
...

                      FIN0               stab  BCD0

pero no se cual es el codigo correcto que va en los ????? por que por un lado lbeq tiene codigo maquina 18 27 qq rr y stab tiene codigo maquina 7b hh ll, yo supuse que como al lado de lbeq tiene FIN0 pues que tenia que brincarme hasta esa intruccion. ya intente leer manuales de esto pero no los comprendo, si alguien me pudiera ayudar se lo agradeceria mucho
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