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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  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
131  Programación / Programación C/C++ / problema con getc() en: 26 Septiembre 2013, 20:19 pm
Saludos

tengo el siguiente codigo que me tiene que leer un archivo de texto e imprimir cuantas veces aparece un caracter, para esto uso el fgetc para que vaya leyendo 1 por 1 pero no me imprime correctamente

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define MAX 100
  5.  
  6. int main()
  7. {
  8.    int i,tam,cont;
  9.    char nombre[MAX],archivo[MAX],car,opcion,*ptr;
  10.    FILE *fd,*ap;
  11.    printf("Dame el nombre del archivo: ");
  12.    fgets(nombre,MAX,stdin);
  13.    if ((ptr = strchr(nombre, '\n')) != NULL)
  14.       *ptr = '\0';
  15.    sprintf(archivo,"F:\\%s.txt",nombre);
  16.    ap = fopen("Archivo_producto","w");
  17.    if((fd = fopen(archivo,"r"))!=NULL)
  18.    {
  19.        printf("Elige una opcion\n");
  20.        printf("a) Comprimir archivo\n");
  21.        printf("b) Descomprimir archivo\n");
  22.        switch(opcion = getchar())
  23.        {
  24.            case 'A':case'a':
  25.               cont = 0;
  26.               fseek(fd,0,SEEK_END);
  27.               tam = ftell(fd);
  28.               fseek(fd,0,SEEK_SET);
  29.                   for(i=0;i <= tam;i++)
  30.                   {
  31.                       if((car = fgetc(fd))== 'd');
  32.                          cont++;
  33.                   }
  34.               printf("%d",cont);
  35.               break;
  36.            default:
  37.               printf("La opcion no existe\n");
  38.        }
  39.    }
  40.    else
  41.       printf("No se pudo abrir el archivo");
  42.    return 0;
  43. }
  44.  

de antemano gracias
132  Programación / Programación C/C++ / problema con sprintf() en: 25 Septiembre 2013, 19:02 pm
Saludos

Tengo el siguiente programa que le pide al usuario que ingrese el nombre de cualquier archivo que desee abrir y una vez que teclea el nombre se lo asigna a un arreglo que se llama archivo, para esto uso el sprintf, pero no se cual es el problema que aunque le ingreso un archivo que si existe me aparece que no se pudo abrir archivo

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

de antemano gracias
133  Programación / Programación C/C++ / serie de numeros en fichero en: 23 Septiembre 2013, 22:37 pm
Saludos tengo el siguiente codigo que mediante un for me tiene que imprimir 1000 numeros inversamente ordenados en un archivo con el mismo nombre, el problema es que me imprime basura en el archivo y no tengo idea de por que??

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.    int i;
  7.    FILE *fd;
  8.    if((fd = fopen("F:\\1000-Inversamente Ordenados.txt","w"))!=NULL)
  9.    {
  10.        for(i=1000;i > 0;i--)
  11.        {
  12.            fwrite(&i,sizeof(int),1,fd);
  13.            fwrite("\n",sizeof(int),1,fd);
  14.        }
  15.  
  16.    }
  17.    else
  18.       printf("No se pudo crear el archivo");
  19.    return 0;
  20. }
  21.  

de antemano gracias
134  Programación / Programación C/C++ / imprimir basura en: 20 Septiembre 2013, 06:01 am
Saludos tengo el siguiente arreglo de 11 elementos

74,14,21,44,38,97,11,78,65,88,30  y quiero que me imprima el primer elemento (74), el quinto (97) y el 30 que es el ultimo, todo esto porque estoy empezando un metodo de ordenamiento pero no lo he terminado, el problema es que aunque si me imprime el primero y el quinto en el ultimo me imprime basura, en vez de imprimir el 30 me imprime 31 y no se por que

Código
  1. void  arreglo(int v[],int n)
  2. {
  3.    int i,j,k;
  4.    k = n/2;
  5.    for(j=0;j <= k;j+=k)
  6.    {
  7.        if(v[j] < v[j+k])
  8.        {
  9.            printf("[%d]",v[j]);
  10.            printf("[%d]",v[j+k]);
  11.        }
  12.        else
  13.        {
  14.            printf("[%d]",v[j]);
  15.            printf("[%d]",v[j+k]);
  16.        }
  17.    }
  18. }

de antemano gracias

 
135  Programación / Programación C/C++ / analisis codigos de ordenamiento en: 18 Septiembre 2013, 18:59 pm
Saludos tengo que codificar algunos codigos de ordenamiento y despues me pide que los compare de acuerdo a su tiempo de ejecucion, ya sea para un array de 1000, 10000 o 1000000, los codigos ya los tengo hechos

BURBUJA
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 100
  4.  
  5. void Ordenacion_Burbuja(int v[],int n);
  6.  
  7. int main()
  8. {
  9.    int i,n,v[MAX];
  10.    printf("Dame el numero de elementos del vector: ");
  11.    scanf("%d",&n);
  12.    for(i=0;i < n;i++)
  13.    {
  14.        printf("Dame el elemento numero %d:\n",i+1);
  15.        scanf("%d",&v[i]);
  16.        system("cls");
  17.    }
  18.    Ordenacion_Burbuja(v,n);
  19.  
  20.    for(i=0;i < n;i++)
  21.       printf("[%d]",v[i]);
  22.    return 0;
  23. }
  24.  
  25. void Ordenacion_Burbuja(int v[],int n)
  26. {
  27.    int i,j,aux;
  28.    for(i=1;i < n;i++)
  29.    {
  30.        for(j=0;j < n-i;j++)
  31.        {
  32.            if(v[j] > v[j+1])
  33.            {
  34.                aux = v[j+1];
  35.                v[j+1] = v[j];
  36.                v[j] = aux;
  37.            }
  38.        }
  39.    }
  40. }
  41.  

INSERCION
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 100
  4.  
  5. void metodo_Insercion(int v[],int n);
  6.  
  7. int main()
  8. {
  9.    int i,v[MAX],n;
  10.    printf("Dame el numero de elementos del vector: ");
  11.    scanf("%d",&n);
  12.    for(i=0;i < n;i++)
  13.    {
  14.        printf("Dame el elemento numero %d:\n",i+1);
  15.        scanf("%d",&v[i]);
  16.        system("cls");
  17.    }
  18.    metodo_Insercion(v,n);
  19.    for(i=0;i < n;i++)
  20.       printf("[%d]",v[i]);
  21.    return 0;
  22. }
  23.  
  24. void metodo_Insercion(int v[],int n)
  25. {
  26.    int i,j,aux;
  27.    for(i=1;i < n ;i++)
  28.    {
  29.        for(j=i;j > 0;j--)
  30.        {
  31.            if(v[j] < v[j-1])
  32.            {
  33.                aux = v[j];
  34.                v[j] = v[j-1];
  35.                v[j-1] = aux;
  36.            }
  37.        }
  38.    }
  39.  
  40. }
  41.  

SELECCION

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 100
  4.  
  5. void metodo_Seleccion();
  6. int Minimo(int v[],int n);
  7. void intercambiar(int pos,int v[]);
  8.  
  9. int main()
  10. {
  11.    int n,i,v[MAX],pos;
  12.    printf("Dame el numero de elementos del vector: ");
  13.    scanf("%d",&n);
  14.    for(i=0;i < n;i++)
  15.    {
  16.        printf("Dame el elemento numero %d: ",i+1);
  17.        scanf("%d",&v[i]);
  18.        system("cls");
  19.    }
  20.  
  21.    metodo_Seleccion(v,n);
  22.    for(i=0;i < n;i++)
  23.        printf("[%d]",v[i]);
  24.    return 0;
  25. }
  26.  
  27. void metodo_Seleccion(int v[],int n)
  28. {
  29.    int i,j,minimo,aux,pos;
  30.    for(i=0;i < n;i++)
  31.    {
  32.        minimo = v[i];
  33.        pos = i;
  34.        for(j=i+1;j < n;j++)
  35.        {
  36.            if(v[j] < minimo)
  37.            {
  38.                minimo = v[j];
  39.                pos = j;
  40.            }
  41.        }
  42.        aux = v[pos];
  43.        v[pos] = v[i];
  44.        v[i] = aux;
  45.    }
  46. }
  47.  

El problema es que no tengo idea como determinar los tiempos que le toma a cada uno ordenar un vector, como se puede hacer???

de antemano gracias
136  Programación / Programación C/C++ / algoritmos divide y venceras en: 14 Septiembre 2013, 02:46 am
Saludos

Estoy estudiando algunos metodos de ordenamiento como Merge-Sort, Quick Sort y el metodo de busqueda binaria, y me he fijado que todos estos algoritmos utilizan la tecnica de dividir vectores en subvectores e irlos ordenando pero me fije que antes  de dividir el vector en 2 hace una suma, la de la variable ini mas el tamanio del vector

ini=1,sup=n;
 i= (ini+sup)/2;

y me pregunto si esto es necesario, no seria mas logico dividir el tamanio del vector sobre 2 sin necesidad de hacer la dichosa suma??? de que me sirve la variable ini??

sup=n;
i= (sup/2);

de antemano gracias

137  Programación / Programación C/C++ / getc() y printf en: 12 Septiembre 2013, 22:11 pm
Saludos, tengo el siguiente codigo que me tiene que colocar el puntero en el caracter que se encuentre en la mitad de un texto, leerlo y despues imprimirlo, el codigo funciona correctamente, la duda que tengo es que a la hora de imprimir lo hago con un printf y cuando a ese printf le digo que tome el caracter de la mitad con getc() me imprime el caracter que le sigue al de la mitad, o sea uno mas, y no se por que se comporta asi esta funcion,

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4.  
  5. int main()
  6. {
  7.    int fin,mitad;
  8.    char letra;
  9.    FILE *fd;
  10.    if((fd = fopen("F:\\archivo_fuente.txt","r"))!=NULL)
  11.    {
  12.        fseek(fd,-1,SEEK_END);
  13.        fin = ftell(fd);
  14.        printf("%d\n",fin);
  15.        mitad = fin/2;
  16.        printf("%d\n",mitad);
  17.        fseek(fd,mitad,SEEK_SET);
  18.        fread(&letra,sizeof(char),1,fd);
  19.        printf("%c",getc(fd));
  20.    }
  21.    else
  22.       printf("No se pudo abrir archivo");
  23.    return 0;
  24. }
  25.  

y si al printf le pongo

Código
  1. fread(&letra,sizeof(char),1,fd);
  2.        printf("%c",letra);
aqui si me imprime el caracter que se encuentra en la mitad y no el que le sigue. cual es la diferencia??

de antemano gracias
138  Programación / Programación C/C++ / Lectura y modificacion de archivo en: 10 Septiembre 2013, 13:12 pm
Saludos tengo el siguiente codigo que me lee un archivo de texto y despues lo modifica, en todos los lugares donde se encuentre 1's los intercambia por 5's, la lectura del archivo lo hace bien porque ya verifique y si me ubica los unos del texto el problema es para poder cambiarlos a 5, y no se donde esta el error

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4.  
  5. /*
  6.     Objetivo de la prueba: En una archivo de texto que contiene caracteres alfanuméricos,
  7.     intercambiar el  ‘1’ por el  ‘ 5’ en donde quiera que ocurra esa incidencia en el documento.
  8.     El archivo debe aparecer sin ningún 1, y en su lugar los cincos equivalentes.
  9. */
  10.  
  11. int main()
  12. {
  13.    FILE *fd;
  14.    char letra;
  15.    if((fd = fopen("F:\\archivo_practica11.txt","r+"))!=NULL)
  16.    {
  17.        while(!feof(fd))
  18.        {
  19.            fread(&letra,sizeof(char),1,fd);
  20.            if(letra == '1')
  21.            {
  22.                 letra = '5';
  23.                fwrite(fd,sizeof(char),1,letra);
  24.            }
  25.        }
  26.    }
  27.    else
  28.       printf("No se pudo abrir el archivo");
  29.    return 0;
  30. }
  31.  

gracias
139  Programación / Programación C/C++ / leer caracteres de un archivo en: 7 Septiembre 2013, 03:10 am
Saludos

Tengo el siguiente codigo que lee el primer y último carácter de un archivo de texto y los muestra en pantalla.La prueba consiste en mostrar el primer y último carácter correctamente independientemente del tamaño del archivo.

El codigo ya pude verificar que funciona para textos pequenios como: "Hola mundo" o "Tres tristes tigres tragaban trigo en un trigal", en el caso del primero me aparece primer caracter :H, ultimo caracter: o, pero si se trata de un archivo de texto un poco grande no me imprime el ultimo caracter y no entiendo por que

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4.  
  5. int main()
  6. {
  7.    FILE *fd;
  8.    int inicio,fin;
  9.    if((fd = fopen("F:\\archivo1.txt","r"))!=NULL)
  10.    {
  11.        if((inicio = fseek(fd,0,SEEK_SET)) != 0)
  12.           printf("No se pudo posicionar el cursor al inicio");
  13.        else
  14.           printf("El caracter que esta al inicio del archivo es: %c\n",fgetc(fd));
  15.        if((fin = fseek(fd,-1,SEEK_END)) != 0)
  16.           printf("No se pudo posicionar el cursor al final");
  17.        else
  18.           printf("El caracter que esta al final del archivo es: %c\n",fgetc(fd));
  19.    }
  20.    else
  21.       printf("No se pudo abrir archivo");
  22.    return 0;
  23. }
  24.  

el texto en cuestion tiene mas de 100 caracteres

de antemano gracias


140  Programación / Programación C/C++ / FILE y funcion fwrite() en: 5 Septiembre 2013, 20:03 pm
Saludos

Tengo una duda, por que con la funcion fwrite() no puedo imprimir en pantalla?? Hay alguna alternativa para poder hacerlo?? es que cuando pongo fwrite(fo,sizeof(char),sizeof(buffer),1) me aparece que necesito un puntero a FILE en vez de 1

de antemano 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