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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  analisis codigos de ordenamiento
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: analisis codigos de ordenamiento  (Leído 4,217 veces)
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
Re: analisis codigos de ordenamiento
« Respuesta #10 en: 22 Septiembre 2013, 19:33 pm »

Saludos rir3760 ya le quite al codigo la libreria unistd.h, ya entendi que no es necesario usarla, pero con respecto al feof no tengo idea de que otra manera sustituirlo.le hice unos cambios al codigo para que en vez de que me imprimiera el vector ordenado en el archivo me imprima el numero de intercambios que se hacen en el metodo de ordenamiento pero me imprime una cantidad que no es en un arreglo  desordenado me dice que solo necesita un intercambio

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void Ordenacion_Burbuja(int v[],int n,FILE *fd);
  5. void analizar_Burbuja(char nombreArchivo[],FILE *fd,int n);
  6.  
  7. int main()
  8. {
  9.    FILE *fd;
  10.    if((fd = fopen("F:\\Analisis_algoritmos.txt","w"))!=NULL)
  11.    {/*
  12.         analizar_Burbuja("5-Ordenados",fd,5);
  13.         analizar_Burbuja("10-Ordenados",fd,10);
  14.         analizar_Burbuja("100-Ordenados",fd,100);
  15.         analizar_Burbuja("1000-Ordenados",fd,1000);
  16.         analizar_Burbuja("10000-Ordenados",fd,10000);
  17.         analizar_Burbuja("100000-Ordenados",fd,100000);
  18.         analizar_Burbuja("1000000-Ordenados",fd,1000000);*/
  19.  
  20.        analizar_Burbuja("5-Desordenados",fd,5);/*
  21.         analizar_Burbuja("10-Desordenados",fd,10);
  22.         analizar_Burbuja("100-Desordenados",fd,100);
  23.         analizar_Burbuja("1000-Desordenados",fd,1000);
  24.         analizar_Burbuja("10000-Desordenados",fd,10000);
  25.         analizar_Burbuja("100000-Desordenados",fd,100000);
  26.         analizar_Burbuja("1000000-Desordenados",fd,1000000);*/
  27.  
  28.    }
  29.    else
  30.       printf("No se pudo leer archivo");
  31.    return 0;
  32. }
  33.  
  34. void Ordenacion_Burbuja(int v[],int n,FILE *fd)
  35. {
  36.    int i,j,aux,intercambio=0;
  37.    for(i=1;i < n;i++)
  38.    {
  39.        for(j=0;j < n-i;j++)
  40.        {
  41.            if(v[j] > v[j+1])
  42.            {
  43.                aux = v[j+1];
  44.                v[j+1] = v[j];
  45.                v[j] = aux;
  46.                intercambio++;
  47.            }
  48.        }
  49.    }
  50.    fprintf(fd,"El numero de intercambios es %d",intercambio);
  51. }
  52.  
  53. void analizar_Burbuja(char nombreArchivo[],FILE *fd,int n)
  54. {
  55.    int i;
  56.    FILE *entrada;
  57.    int *arreglo;
  58.    char ruta[50];
  59.  
  60.    sprintf(ruta,"F:\\%s.txt",nombreArchivo);
  61.    puts(ruta);
  62.  
  63.    if((entrada = fopen(ruta,"r"))!=NULL)
  64.    {
  65.        arreglo = (int*)malloc(n*sizeof(int));
  66.        i = 0;
  67.        while(!feof(entrada))
  68.        {
  69.            fscanf(entrada,"%d",&arreglo[i]);
  70.            i++;
  71.        }
  72.        Ordenacion_Burbuja(arreglo,n,fd);
  73.    }
  74.    else
  75.       printf("No se pudo abrir archivo");
  76.  
  77. }
  78.  

de antemano gracias


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: analisis codigos de ordenamiento
« Respuesta #11 en: 24 Septiembre 2013, 06:36 am »

con respecto al feof no tengo idea de que otra manera sustituirlo.
Solo tienes que verificar el valor de retorno de la función de entrada/salida, casi todas retornan un valor particular en caso de error o fin de archivo.

En el caso de fscanf esta retorna el numero de conversiones realizadas con exito o EOF en caso de error o fin de archivo, tu bucle:
Código
  1. i = 0;
  2. while(!feof(entrada))
  3. {
  4.   fscanf(entrada,"%d",&arreglo[i]);
  5.   i++;
  6. }
Realiza una iteración de mas y es demasiado largo. Utilizando el valor de retorno de fscanf se puede reducir a:
Código
  1. for (i = 0; i < n && fscanf(entrada, "%d", arreglo + i) == 1; i++)
  2.   ;
Se debe realizar la verificación "i < n" para asegurarnos de no leer mas de lo que se puede almacenar en el bloque de memoria.

le hice unos cambios al codigo para que en vez de que me imprimiera el vector ordenado en el archivo me imprima el numero de intercambios que se hacen en el metodo de ordenamiento pero me imprime una cantidad que no es en un arreglo  desordenado me dice que solo necesita un intercambio
Si el archivo de entrada es correcto (texto plano) el programa da los resultados esperados, eso lo debes verificar en tu PC.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Metodos de Ordenamiento en c#
.NET (C#, VB.NET, ASP)
alexvem 0 38,811 Último mensaje 4 Agosto 2008, 18:02 pm
por alexvem
Metodos de Ordenamiento
Programación Visual Basic
...:::Téotl:::... 4 13,628 Último mensaje 15 Junio 2012, 22:55 pm
por raul338
metodo de ordenamiento
Java
mojittoo 2 6,087 Último mensaje 24 Mayo 2009, 13:35 pm
por Aeros
Ordenamiento burbuja
Programación C/C++
jravelar 5 7,103 Último mensaje 29 Abril 2010, 17:13 pm
por Tha_Traker
METODOS DE ORDENAMIENTO
Programación C/C++
ANTÓN RAMIREZ 1 14,824 Último mensaje 12 Diciembre 2010, 12:53 pm
por Garfield07
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines