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 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 26 27 28 29 30 31
151  Programación / Programación C/C++ / Re: Cortar tira de caracteres en C++ en: 20 Octubre 2011, 14:57 pm
Hola

Aquí no se hacen tareas, léete las normas del foro, pero te voy a orientar para que puedas empezar. Luego si tienes dudas concretas las preguntas.

Lo que tienes que hacer es:

char cadena[50] //por ejemplo de 50 caracteres
int numero
leer cadena
leer numero
cadena[numero] = '\0'

Así de fácil es. Ahora inténtalo y nos pones las dudas que tengas

Saludos
152  Programación / Programación C/C++ / Re: Porque no funciona? en: 19 Octubre 2011, 16:50 pm
Hola

Prueba con
Código
  1. char resul[20];
  2.  

En la linea 25
Código
  1. fscanf (hora, "%s", resul);

Y en la 38
Código
  1. if (strcmp (times(), resul) == 0)

A ver si así funciona

Saludos
153  Programación / Programación C/C++ / Re: Que cosa mas rara!!!!!WTF en: 9 Octubre 2011, 14:06 pm
Hola

Lo primero de todo decirte que no debes usar goto, utiliza los bucles.

Lo del pitido en por el \a de \administrador, se soluciona poniendo dos \ para que se vea un \, el cout debe ser:
Código
  1. cout<<"C:\\Documents and Settings\\administrador>";

Saludos
154  Programación / Programación C/C++ / Re: [?] leer binario y guardar en struct dato AYUDA en: 8 Octubre 2011, 12:13 pm
Hola

Me alegro mucho por ti, si sigues teniendo dudas o lo que sea ya sabes donde estamos.

Saludos
155  Programación / Programación C/C++ / Re: [?] leer binario y guardar en struct dato AYUDA en: 7 Octubre 2011, 22:31 pm
Hola

Vamos por partes

¿si yo en una función pongo "struct dato aux" la estructura aux va a tener todo lo mismo que la que declare arriba afuera del main?

Claro, ya que cuando declaras arriba "struct dato" estás creando un tipo de datos y cada vez que crees una variable de este tipo, en este caso "aux", va a tener los mismos campos: char nombre[20], char sinonimo1[20], etc.


en el siguiente caso " if(ok)"¿cuando se cumple el if, cuando es 0 o cuando es otro valor distinto a 0 o cuando?

El if se cumple SIEMPRE cuando la condición de dentro es verdadera, es decir cuando distinto de cero o de NULL


¿y en este caso
"archivo = fopen(DICCIONARIO, "rb");
if(archivo)"
cuando se cumple el if y cuando no?

La condición del if se cumple cuando "archivo" es distinto de NULL. Si el fopen hubiese fallado por cualquier motivo entonces "archivo" valdría NULL y el if no se cumpliría


¿que significa esto?
while(!enc && !feof(archivo))

feof es una función que indica si se ha llegado al final del fichero y "enc" es una variable auxiliar que se utiliza para no tener que recorrer el fichero entero buscando el dato. Inicialmente vale 0, cuando se encuentra el dato buscado lo ponemos a 1 y ya sale del while. Entonces lo que dice es que mientras no se llegue al final del fichero y no se haya encontrado el dato se ejecute lo de dentro.

Espero haberte sido de ayuda, si sigues teniendo dudas ya sabes.

Saludos
156  Programación / Programación C/C++ / Re: [?] leer binario y guardar en struct dato AYUDA en: 7 Octubre 2011, 15:33 pm
Hola

memset: lo que hace es rellenar la memoria de lo que le pasas en el primer parámetro con el valor que le pasas en el segundo parámetro el nº de bytes que le pasas en el tercer parámetro, en el caso del ejercicio:
memset(&aux, 0x00, sizeof(struct dato));
Lo que hace es rellenar la memoria donde está la variable aux de ceros (0)

Saludos
157  Programación / Programación C/C++ / Re: [?] leer binario y guardar en struct dato AYUDA en: 7 Octubre 2011, 00:23 am
Hola

Tienes varios errores, leete esto.

He visto el código en el otro post que tienes y he hecho el ejercicio en 15 minutos basándome en lo que tienes hecho, creo que funciona todo.
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define DICCIONARIO "diccionario.bin"
  6.  
  7.  
  8. void alta();
  9. void baja();
  10. void modificar();
  11. void consultar();
  12. void listarSin();
  13. void listarAnt();
  14. void listarPar();
  15. void subMenu();
  16. int total();
  17.  
  18. struct dato{
  19. char palabra[20];
  20. char sinonimo1[20], sinonimo2[20], sinonimo3[20];
  21. char antonimo[20];
  22. char paronimo[20];
  23. };
  24.  
  25.  
  26. int main(void)
  27. {
  28. int opcion=0;
  29. char salir='n';
  30. FILE *archivo;
  31.  
  32.    archivo = fopen(DICCIONARIO, "rb");
  33.    if(!archivo)
  34.        archivo = fopen(DICCIONARIO, "wb");
  35.    fclose(archivo);
  36.  
  37. while (salir!='s')
  38.        {
  39.        printf("\n   DICCIONARIO \n");
  40.        printf("1) Ingresar \n");
  41.        printf("2) Eliminar \n");
  42.        printf("3) Modificar \n");
  43.        printf("4) Consultar \n");
  44.        printf("5) Listar \n");
  45.        printf("0) Salir \n");
  46.        scanf("%i", &opcion);
  47.        while(getchar()!='\n');
  48.  
  49.        switch(opcion)
  50.            {
  51.            case 1:
  52.                alta();
  53.                break;
  54.            case 2:
  55.                baja();
  56.                break;
  57.            case 3:
  58.                modificar();
  59.                break;
  60.            case 4:
  61.                consultar();
  62.                break;
  63.            case 5:
  64.                subMenu();
  65.                break;
  66.            case 0:
  67.                printf("\nEsta seguro que desea salir? (s/n)\n");
  68.                scanf("%c", &salir);
  69.                while(getchar()!='\n');
  70.                break;
  71.            default:
  72.                printf("Opcion incorrecta\n\n");
  73.                break;
  74.            }//fin switch
  75. }//fin while
  76.    return 0;
  77. }//fin int main
  78.  
  79.  
  80. void subMenu()
  81. {
  82. int opc, ok=0;
  83. FILE *archivo;
  84. char salir='n';
  85.  
  86. archivo = fopen(DICCIONARIO, "rb");
  87. if(archivo)
  88.        {
  89.        fseek(archivo, 0, SEEK_END);
  90.        if(ftell(archivo) != 0)
  91.            ok = 1;
  92.        fclose(archivo);
  93.        }
  94.  
  95.    if(ok)
  96.        {
  97.        while(salir!='s')
  98.            {
  99.            printf("\n Listar Palabras existentes \n");
  100.            printf("\n1) Listar sinonimos");
  101.            printf("\n2) Listar antonimos");
  102.            printf("\n3) Listar paronimos");
  103.            printf("\n4) Listar: sinonimos, antonimos y paronimos");
  104.            printf("\n0) Volver al menu principal\n");
  105.            scanf("%i", &opc);
  106.            while(getchar()!='\n');
  107.  
  108.            switch(opc)
  109.                {
  110.                case 1:
  111.                    listarSin();
  112.                    break;
  113.                case 2:
  114.                    listarAnt();
  115.                    break;
  116.                case 3:
  117.                    listarPar();
  118.                    break;
  119.                case 4:
  120.                    listarSin();
  121.                    listarAnt();
  122.                    listarPar();
  123.                    break;
  124.                case 0:
  125.                    salir='s';
  126.                    break;
  127.                default:
  128.                    printf("\nOPCION INCORRECTA\n\n");
  129.                    break;
  130.                }
  131.            }
  132.        }
  133.    else
  134.        printf("El diccionario esta vacio\n\n");
  135. }//fin subMenu
  136.  
  137.  
  138. int total()
  139. {
  140. int total = 0;
  141. FILE *archivo;
  142. archivo=fopen(DICCIONARIO, "rb");//abro el archivo diccionario.bin como solo lectura
  143. if(archivo==NULL)
  144. printf("\nError al abrir el archivo %s\n\n", DICCIONARIO);
  145. else
  146.        {
  147. fseek(archivo,0,SEEK_END);
  148. total=ftell(archivo) / sizeof(struct dato);//divido el tama¤o del archivo entre el tama¤o de la estructura para saber cuantas hay
  149. fclose(archivo);
  150.        }
  151. return total;
  152. }
  153.  
  154.  
  155. void alta()
  156. {
  157. char opc;
  158. struct dato aux;
  159. FILE *archivo;
  160.  
  161. memset(&aux, 0x00, sizeof(struct dato));
  162. printf("\nIngresar palabra/s \n");
  163. printf("\nPalabra: ");
  164. fgets(aux.palabra, 20, stdin);
  165.  
  166.    printf("Ingresa un sinonimo: ");
  167.    fgets(aux.sinonimo1, 20, stdin);
  168.  
  169.    printf("Desea ingresar otro sinonimo? (s/n): ");
  170.    scanf("%c", &opc);
  171.    while(getchar()!='\n');
  172.    if(opc=='s')
  173.        {
  174.        printf("Ingrese otro sinonimo: ");
  175.        fgets(aux.sinonimo2, 20, stdin);
  176.  
  177.        printf("Desea ingresar otro sinonimo? (s/n): ");
  178.        scanf("%c", &opc);
  179.        while(getchar()!='\n');
  180.        if(opc=='s')
  181.            {
  182.            printf("Ingrese otro sinonimo: ");
  183.            fgets(aux.sinonimo3, 20, stdin);
  184.            }
  185.        }//if2
  186.  
  187. printf("Ingrese un antonimo: ");
  188. fgets(aux.antonimo, 20, stdin);
  189.  
  190. printf("Ingrese un paronimo: ");
  191. fgets(aux.paronimo, 20, stdin);
  192.  
  193. printf("\nUsted ingreso:\n");
  194. printf("Palabra: %s \nSinonimos:\n\t%s \n\t%s \n\t%s \nAntonimo:\n\t%s \nParonimo: \n\t%s", aux.palabra, aux.sinonimo1, aux.sinonimo2, aux.sinonimo3, aux.antonimo, aux.paronimo);
  195. do
  196.        {
  197.        printf("\n\nEsta seguro que desea agregar estos datos al diccionario(s/n): ");
  198.        scanf("%c", &opc);
  199.        while(getchar()!='\n');
  200.        }
  201. while(opc!='s' && opc!='n');
  202.  
  203. if(opc=='s')
  204.        {
  205. archivo=fopen(DICCIONARIO, "a+b");
  206. if(archivo)
  207.            {
  208.            fwrite(&aux, sizeof(struct dato), 1, archivo);
  209.            fclose(archivo);
  210.            }
  211. }//if
  212. }//funcion
  213.  
  214.  
  215. void baja()
  216. {
  217.    char palabra[20];
  218.    FILE *archivo;
  219.    int ok = 0, i = 0, n = total();
  220.    struct dato aux, aux2[n];
  221.  
  222.    archivo = fopen(DICCIONARIO, "rb");
  223. if(archivo)
  224.        {
  225.        fseek(archivo, 0, SEEK_END);
  226.        if(ftell(archivo) != 0)
  227.            ok = 1;
  228.        fclose(archivo);
  229.        }
  230.  
  231.    if(ok)
  232.        {
  233.        memset(&palabra, 0x00, 20);
  234.        memset(&aux, 0x00, sizeof(struct dato));
  235.        memset(&aux2, 0x00, sizeof(aux2));
  236.  
  237.        printf("Ingresa la palabra a eliminar: ");
  238.        fgets(palabra, 20, stdin);
  239.        archivo = fopen(DICCIONARIO, "rb");
  240.        if(archivo)
  241.            {
  242.            while(!feof(archivo))
  243.                if(fread(&aux, sizeof(struct dato), 1, archivo))
  244.                    if(strcmp(palabra, aux.palabra)!=0)
  245.                        {
  246.                        strcpy(aux2[i].palabra, aux.palabra);
  247.                        strcpy(aux2[i].sinonimo1, aux.sinonimo1);
  248.                        strcpy(aux2[i].sinonimo2, aux.sinonimo2);
  249.                        strcpy(aux2[i].sinonimo3, aux.sinonimo3);
  250.                        strcpy(aux2[i].antonimo, aux.antonimo);
  251.                        strcpy(aux2[i].paronimo, aux.paronimo);
  252.                        i++;
  253.                        }
  254.            fclose(archivo);
  255.  
  256.            if(i < n)
  257.                {
  258.                remove(DICCIONARIO);
  259.                archivo = fopen(DICCIONARIO, "wb");
  260.                if(archivo)
  261.                    {
  262.                    for(i=0; i<n-1; i++)
  263.                        fwrite(&aux2[i], sizeof(struct dato), 1, archivo);
  264.                    fclose(archivo);
  265.                    }
  266.                printf("Palabra eliminada con exito\n\n");
  267.                }
  268.            else
  269.                printf("No se encuentra la palaba en el diccionario\n\n");
  270.            }
  271.        }
  272.    else
  273.        printf("El diccionario no se encuentra o esta vacio\n\n");
  274. }
  275.  
  276.  
  277. void modificar()
  278. {
  279. char opc;
  280. struct dato aux;
  281. FILE *archivo;
  282. char palabra[20];
  283. int enc = 0, ok = 0;
  284.  
  285. archivo = fopen(DICCIONARIO, "rb");
  286. if(archivo)
  287.        {
  288.        fseek(archivo, 0, SEEK_END);
  289.        if(ftell(archivo) != 0)
  290.            ok = 1;
  291.        fclose(archivo);
  292.        }
  293.  
  294.    if(ok)
  295.        {
  296.        memset(&aux, 0x00, sizeof(struct dato));
  297.        archivo = fopen(DICCIONARIO, "r+b");
  298.        if(archivo)
  299.            {
  300.            printf("Ingresa la palabra a modificar: ");
  301.            fgets(palabra, 20, stdin);
  302.  
  303.            while(!enc && !feof(archivo))
  304.                {
  305.                fread(&aux, sizeof(struct dato), 1, archivo);
  306.                if(strcmp(palabra, aux.palabra)==0)
  307.                    enc = 1;
  308.                }
  309.  
  310.            if(enc)
  311.                {
  312.                fseek(archivo, sizeof(struct dato)*(-1), SEEK_CUR);
  313.                printf("Introduce la nueva palabra: ");
  314.                fgets(aux.palabra, 20, stdin);
  315.                printf("Introduce un sinonimo: ");
  316.                fgets(aux.sinonimo1, 20, stdin);
  317.                do
  318.                    {
  319.                    printf("Quieres introducir otro sinonimo? (s/n)");
  320.                    scanf("%c", &opc);
  321.                    while(getchar()!='\n');
  322.                    }
  323.                while(opc!='s' && opc!='n');
  324.  
  325.                if(opc=='s')
  326.                    {
  327.                    printf("Introduce otro sinonimo: ");
  328.                    fgets(aux.sinonimo2, 20, stdin);
  329.  
  330.                    do
  331.                        {
  332.                        printf("Quieres introducir otro sinonimo? (s/n)");
  333.                        scanf("%c", &opc);
  334.                        while(getchar()!='\n');
  335.                        }
  336.                    while(opc!='s' && opc!='n');
  337.  
  338.                    if(opc=='s')
  339.                        {
  340.                        printf("Introduce otro sinonimo: ");
  341.                        fgets(aux.sinonimo3, 20, stdin);
  342.                        }
  343.                    }
  344.                printf("Introduce un antonimo: ");
  345.                fgets(aux.antonimo, 20, stdin);
  346.                printf("Introduce un paronimo: ");
  347.                fgets(aux.paronimo, 20, stdin);
  348.  
  349.                fwrite(&aux, sizeof(struct dato), 1, archivo);
  350.                printf("Palabra modificada correctamente\n\n");
  351.                }
  352.            else
  353.                printf("No se ha encontrado la palabra: %s\n\n", palabra);
  354.            fclose(archivo);
  355.            }
  356.        else
  357.            printf("No se puede abrir el diccionario\n\n");
  358.        }
  359.    else
  360.        printf("El diccionario no se encuentra o esta vacio\n\n");
  361. }
  362.  
  363.  
  364. void consultar()
  365. {
  366. struct dato aux;
  367. FILE *archivo;
  368. char palabra[20];
  369. int enc = 0, ok = 0;
  370.  
  371. archivo = fopen(DICCIONARIO, "rb");
  372. if(archivo)
  373.        {
  374.        fseek(archivo, 0, SEEK_END);
  375.        if(ftell(archivo) != 0)
  376.            ok = 1;
  377.        fclose(archivo);
  378.        }
  379.  
  380.    if(ok)
  381.        {
  382.        memset(&aux, 0x00, sizeof(struct dato));
  383.        archivo = fopen(DICCIONARIO, "rb");
  384.        if(archivo)
  385.            {
  386.            printf("Ingresa la palabra a consultar: ");
  387.            fgets(palabra, 20, stdin);
  388.  
  389.            while(!enc && !feof(archivo))
  390.                {
  391.                fread(&aux, sizeof(struct dato), 1, archivo);
  392.                if(strcmp(palabra, aux.palabra)==0)
  393.                    enc = 1;
  394.                }
  395.            fclose(archivo);
  396.  
  397.            if(enc)
  398.                printf("Palabra: %s \nSinonimos: \n\t%s \n\t%s \n\t%s \nAntonimo: \n\t%s \nParonimo: \n\t%s", aux.palabra, aux.sinonimo1, aux.sinonimo2, aux.sinonimo3, aux.antonimo, aux.paronimo);
  399.            else
  400.                printf("La palabra no se encuentra\n\n");
  401.            }
  402.        else
  403.            printf("El diccionario no se encuentra o esta vacio\n\n");
  404.        }
  405.    else
  406.        printf("El diccionario no se encuentra o esta vacio\n\n");
  407. }
  408.  
  409.  
  410. void listarSin()
  411. {
  412.    struct dato aux;
  413. FILE *archivo;
  414.  
  415.    memset(&aux, 0x00, sizeof(struct dato));
  416.    archivo = fopen(DICCIONARIO, "rb");
  417.    if(archivo)
  418.        {
  419.        while(!feof(archivo))
  420.            if(fread(&aux, sizeof(struct dato), 1, archivo))
  421.                printf("Palabra: %s \nSinonimos: \n\t%s \n\t%s \n\t%s\n", aux.palabra, aux.sinonimo1, aux.sinonimo2, aux.sinonimo3);
  422.        fclose(archivo);
  423.        }
  424. }
  425.  
  426.  
  427. void listarAnt()
  428. {
  429.    struct dato aux;
  430. FILE *archivo;
  431.  
  432.    memset(&aux, 0x00, sizeof(struct dato));
  433.    archivo = fopen(DICCIONARIO, "rb");
  434.    if(archivo)
  435.        {
  436.        while(!feof(archivo))
  437.            if(fread(&aux, sizeof(struct dato), 1, archivo))
  438.                printf("Palabra: %s \nAntonimo: \n\t%s", aux.palabra, aux.antonimo);
  439.        fclose(archivo);
  440.        }
  441. }
  442.  
  443.  
  444. void listarPar()
  445. {
  446.    struct dato aux;
  447. FILE *archivo;
  448.  
  449.    memset(&aux, 0x00, sizeof(struct dato));
  450.    archivo = fopen(DICCIONARIO, "rb");
  451.    if(archivo)
  452.        {
  453.        while(!feof(archivo))
  454.            if(fread(&aux, sizeof(struct dato), 1, archivo))
  455.                printf("Palabra: %s \nParonimo: \n\t%s", aux.palabra, aux.paronimo);
  456.        fclose(archivo);
  457.        }
  458. }
  459.  

Si tienes alguna duda no dudes en preguntar.

Saludos
158  Programación / Programación C/C++ / Re: Estructuras..... en: 6 Octubre 2011, 19:46 pm
Hola

Eso pasa porque el buffer de entrada no está limpio, prueba poniendo detrás de cada scanf esto (con el ; ):
Código
  1. while(getchar()!='\n') ;

Además tienes otro error aquí:
Código
  1. if(inicio==NULL)
  2. {
  3.  inicio=nodo;
  4.  inicio->sig==NULL;
  5.  inicio->ant=NULL;
  6.  aux=inicio;
  7. }
Adivina donde hay un = de sobra

Saludos
159  Programación / Programación C/C++ / Re: Busqueda lineal en: 3 Octubre 2011, 16:47 pm
Hola

El error lo tienes aquí:
Código
  1. cout<<"\ndigite el numero a buscar\n";
  2. cin>>valor;
  3. for (k=0;k<7;k++);{
  4. if(valor==estudiante[k])
  5. cout<<"\n encontrado en la posicion\n"<<k+1<<endl;
  6. else
  7. cout<<"no existe en el arreglo";
  8.  
En el for te sobra el ; del final (el que tienes puesto delante de la llave)

Puedes sustituir todo ese trozo por este:
Código
  1. cout<<"\ndigite el numero a buscar\n";
  2. cin>>valor;
  3. bool enc = false;
  4. for (k=0; k<7 && !enc; k++)
  5.    if(valor==estudiante[k])
  6.        enc = true;
  7.  
  8. if(enc)
  9.    cout<<"\nEncontrado en la posicion"<<k<<endl;
  10. else
  11.    cout<<"\nNo existe en el arreglo";
  12.  

Además te recomiendo que te leas esto y no olvides poner el code entre las etiquetas de GeSHi (la tienes al lado del botón de elegir el tipo de fuente)

Saludos
160  Programación / Programación C/C++ / Re: ayuda con programa matrices kn arreglo bidimensionales xfaaaaa =( en: 28 Septiembre 2011, 10:49 am
Hola

me da error constant expression required in function main()      en la linea int matriz[fila][columna];

Ese error te da porque estás creando la matriz en tiempo de ejecución, para poder hacerlo así debes declararla al principio como int **matriz pero dudo que hayas dado punteros, así que debes crearla como lo hacías al principio dándole un tamaño: int matriz[30][30] por ejemplo

Saludos
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 26 27 28 29 30 31
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines