El archivo es algo como:
1,2,3
4,5,6
7,8,9
Eso ya está hecho, pero debo ordenarlo, la cuestión es que como el vector es de caracteres, el método de ordenamiento que hago me da como resultado:
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
Así que traté de convertir los caracteres a enteros, pero ahora me da como resultado:
0
0
0
0
0
0
0
0
0
0
¿Alguien me podría sugerir algo por favor?
De [URL="http://www.mediafire.com/?wom1mxocfzw"]acá[/URL] pueden descargar el proyecto completo, no pesa mucho.
Dejo el código por si alguien quiere ayudarme.
Código:
#include <stdio.h> #include <stdlib.h> #include <conio.h> //Funciones void llenar(); int ordenar(); //Variables char vector[11]; int dato; int i,j,aux,n,op; main() { do { system ("cls"); printf("Menu principal \n\n"); printf("1- Mostrar Datos \n"); printf("2- Ordenar \n"); //printf("3- Mostrar dato más repetido \n"); printf("3- Salir\n\n"); printf("Que desea hacer: "); scanf("%i",&op); switch(op) { case 1 : llenar(); break; case 2 : ordenar(); break; /*case 3 : recorrer(); break;*/ } }while(op != 3) ; } void llenar() { FILE *archivo; archivo = fopen("prueba.csv","r"); //abre archivo y prepara para escritura if (archivo == NULL) //si no puede abrir el archivo printf("Error al abrir el archivo"); getch(); printf("\nEl contenido del archivo de prueba es: \n\n"); while (feof(archivo) == 0) //mientras no esté en el final del archivo { for(i=0; i<11; i++) { dato = fgetc(archivo); //lee uno a uno cada caracter del archivo vector[i]= dato; printf("%c",vector[i]); } } fclose (archivo); //cierra el archivo getch(); } int ordenar() { FILE *archivo; //abre archivo y prepara para escritura archivo = fopen("prueba.csv","r"); if (archivo == NULL) //si no puede abrir el archivo printf("Error al abrir el archivo"); getch(); printf("\nLos datos ordenados son: \n\n"); while (feof(archivo) == 0) //mientras no esté en el final del archivo { for(i=0; i<11; i++) //Recorro el vector { dato = fgetc(archivo); //obtengo los datos if(dato == 'a') break; else vector[i]= dato; //lleno el vector con los datos for (i=0;i<11;i++) //empiezo el ordenamiento { for (j=i+1;j<11;j++) { /*switch (dato) //convierte caracteres en numeros //esta forma no sirvió por que me mostraba el caracter ascci { case '0': dato=0; break; case '1': dato=1; break; case '2': dato=2; break; case '3': dato=3; break; case '4': dato=4; break; case '5': dato=5; break; case '6': dato=6; break; case '7': dato=7; break; case '8': dato=8; break; case '9': dato=9; break; }*/ dato=int(vector); //convierte de caracteres a enteros if (vector[i]>vector[j]) //ordena de menor a mayor { aux=vector[i]; vector[i]=vector[j]; vector[j]=aux; printf ("%i\n",vector[i]); } } } } fclose (archivo); getch(); return(0); } }