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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [23] 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 ... 40
221  Programación / Programación C/C++ / Re: analisis codigos de ordenamiento en: 19 Septiembre 2013, 04:38 am
muchas gracias a ambos por sus respuestas, una ultima duda el profesor me pidio que comparara los tiempos de ejecucion de los algoritmos con vectores de tamanio que va desde el 10 hasta el millon!!!! y eso me parece demasiado estarle ingresando numerito por numerito, creen que es mejor crear un archivo que ya tenga los numeros y despues ya que abra el archivo y los ordene o que otra opcion hay???

222  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
223  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

224  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
225  Programación / Programación C/C++ / Re: Lectura y modificacion de archivo en: 12 Septiembre 2013, 01:58 am
muchas gracias rir3760 nunca se me hubiera ocurrido que cuando haces una actualizacion no se puede leer y despues escribir luego. Una ultima pregunta, por que antes del fread siempre se tiene que utilizar el ftell???
226  Programación / Programación C/C++ / Re: Lectura y modificacion de archivo en: 11 Septiembre 2013, 03:16 am
En realidad ese printf y el contador ps no sirven para nada, solo queria saber si me estaba contando bien cuantos unos habia, pero ahora ya me di cuenta que el fseek no es el problema!! el problema es cuando le asigno a letra un nuevo valor o en el fwrite, no se bien

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.   int n;
  16.   if((fd = fopen("F:\\archivo2.txt","r+"))!=NULL)
  17.   {
  18.          fread(&letra,sizeof(char),1,fd);
  19.           if(letra == '1')
  20.           {
  21.               fseek(fd,-1,SEEK_CUR);
  22.               letra = '5';
  23.               printf("%c",fgetc(fd));
  24.   }
  25.   else
  26.      printf("No se pudo abrir el archivo");
  27.   return 0;
  28. }
  29.  

en el printf que tiene el fgetc  queria ver si la variable letra habia cambiado a 5 pero ya vi que me sigue imprimiendo los unos, me imagino que por ahi esta el problema
227  Programación / Programación C/C++ / Re: Lectura y modificacion de archivo en: 10 Septiembre 2013, 23:30 pm
Gracias por sus respuestas, le habia hecho al codigo unos cambio de los que me habian dicho, pero ahora sucede que aunque el programa si cambia los 1's por los 5's ahora se cicla infinitamente, y creo que el problema esta en el fseek, porque le puse un contador en el ciclo para que me contara cuantos unos aparecian en el texto y si le ponia fseek no me imprimia nada y si se lo quitaba ya me imprimia correctamente

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.   int i = 0;
  16.   if((fd = fopen("F:\\archivo2.txt","r+"))!=NULL)
  17.   {
  18.       while(!feof(fd))
  19.       {
  20.           fread(&letra,sizeof(char),1,fd);
  21.           if(letra == '1')
  22.           {
  23.               fseek(fd,-1,SEEK_CUR);
  24.               letra = '5';
  25.               fwrite(&letra,sizeof(char),1,fd);
  26.               i++;
  27.           }
  28.       }
  29.       printf("%d",i);
  30.   }
  31.   else
  32.      printf("No se pudo abrir el archivo");
  33.   return 0;
  34. }
  35.  
228  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
229  Programación / Programación C/C++ / Re: leer caracteres de un archivo en: 8 Septiembre 2013, 21:39 pm
Tenian razon,  no solo el ultimo caracter era un salto de linea o espacio, sino que los ultimos 4 caracteres tambien eran saltos de linea
230  Programación / Programación C/C++ / Re: leer caracteres de un archivo en: 8 Septiembre 2013, 06:42 am
Saludos roilivethelife hice lo que me recomendaste y no funciono porque el lseek(fd,0,SEEK_END) me coloca el puntero en el fin de archivo o sea \0 donde no hay ningun caracter y cuando le pongo lseek(fd,-1,SEEK_END) le estoy diciendo que me coloque un lugar antes del fin de archivo o sea en el ultimo caracter pero ni asi funciona
Páginas: 1 ... 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [23] 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 ... 40
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines