Ejercicio:
Después de leer una secuencia de números reales (como mucho 100) del fichero del ejercicio anterior, que los ordene y los saque por pantalla ordenados.
Sigue leyendo para ver la solución.
/****** Inicio programa ******/
#include <stdio.h>
main()
{
FILE *Fd;
char texto[30], fitxizen[30];
float zenb,zbkiak[100],tmp;
int i=0,j,k;
printf("Mete el nombre del fichero del que cogeremos los numeros reales: ");
gets(fitxizen);
Fd=fopen(fitxizen,"rb");
if (Fd==NULL)
printf("Error abriendo el fichero");
while (feof(Fd)==0)
{
fgets(texto,30,Fd);
sscanf(texto,"%f",&zenb);
zbkiak[i]=zenb;
i++;
}
i=i-1; //hacemos i-1 ya que fgets pilla tambien la ultima linea y esa no nos interesa
for (j=0;j<i;j++)
{
for (k=j+1;k<i;k++)
{
if(zbkiak[j]>zbkiak[k])
{
tmp=zbkiak[k];
zbkiak[k]=zbkiak[j];
zbkiak[j]=tmp;
}
}
}
printf("Los numeros ordenados: \n");
for (j=0;j<i;j++)
{
printf("%.2f \n",zbkiak[j]);
}
getchar();
}
/****** Fin programa******/
Hola, es la primera vez que comento aunque leo tu blog desde hace un tiempo.
ResponderEliminarComento porque he visto en este codigo y en algunos anteriores que después de comprobar si el fichero a sido abierto solo muestras un mensaje de error pero el codigo continua, lo que provoca un fallo de segmentacion. No seria mejor que despues del printf salieras del programa con algun codigo de error?
Buenas Anónimo. Sí, lo que comentas sería lo más recomendable.
ResponderEliminarUn saludo.
Excelente ayuda... muchas gracias!!!
ResponderEliminar